Bus Error on Mac with IntelGMA 950

I’ve long thought my Bus error on many of the samples, and my own projects, aparently anything that sets up an off screen buffer, was because my graphics card (IntelGMA 950) sucks, so I simply used my other computer to run such apps. Today I discovered that specifying FrameBufferProperties, even just the default ones, prevents the BusError, and causes it to work as expected.

Works:

fbp=FrameBufferProperties(FrameBufferProperties.getDefault())
self.screenToModelBuff=self.win.makeTextureBuffer("screenToModelBuff", 0, 0,self.screenToModelTex,True,fbp)

Bus error:

self.screenToModelBuff=self.win.makeTextureBuffer("screenToModelBuff", 0, 0,self.screenToModelTex,True)

I haven’t tried this fix on the samples that exhibit the same issue.

Firstly, is makeTextureBuffer supposed to request the default FrameBufferProperties if none are passed, or does it use some other settings (and thus the lack of support for those could cause the crash)? Secondly, is there anything in particular that I should test or report about this?

Mac OS X 10.5 - IntelGMA 950

Edit:
This fix causes my Windows version to fail (with the below errors), so for now I put an os.name dependent switch on it.

This is a virtual box install of windows 7. The hardware acceleration is questionable. (Last time I tried, my project would not run from source, but would run from p3d)

Hmm, looks like more confirmation that something’s not very robust in the offscreen buffer creation code.

If you don’t specify a FrameBufferProperties to makeTextureBuffer(), you get a very simple one:

  FrameBufferProperties props;
  props.set_rgb_color(1);
  props.set_depth_bits(1);

So, something in the buffer creation is failing with the simple buffer specs on your Mac, but failing with the more robust specs on your Win7 box.

Bleah. This bears further investigation.

David

I tried the python equivalent of that, and it causes the Bus Error.

The line fbp.setRgbColor(1) appears to do nothing (Well, it does not cause printing my props to show anything, it just shows the 1 depth bit with code you gave. Maybe it should be setColorBits).

Anyway, the issue seems to be fbp.setBackBuffers(1). With no BackBuffer settings, Bus Error, with it set to 1, it works fine.

Ah, that is interesting. Some graphics drivers don’t provide a double-buffered offscreen context. So perhaps when you ask for one (with setBackBuffers(1)), Panda crashes instead of gracefully handling it. Obviously a bug, of course, but this gives us some useful information for tracking it down. Thanks!

David

To be clear, it works as long as it requests a backbuffer, setBackBuffers(1), not the other way around. The way I first said it was rather ambiguous. By default, no setBackBuffers(1) is used, and thus it crashes.

Ah, I see.