I’m having trouble with GL_OUT_OF_MEMORY errors on a PowerVR SGX 430. I have a fairly complex program that emits an out of memory error after a call to glDrawElements (why would glDrawElements produce GL_OUT_OF_MEMORY in general?), and I can’t seem to figure out why. I thought the PowerVR SGX 430 was using the system memory to store textures, buffers etc. (maybe with a GPU cache), so I should only get GL_OUT_OF_MEMORY when my system RAM is low. This isn’t the case, however. I get this error with more than 250MiB of free system RAM. I have written a small test program where I just uploaded a bunch of textures and buffers with random data to the GPU and waited for it to produce GL_OUT_OF_MEMORY. With only textures being uploaded, the error pops out only when I have nearly no RAM left (even seems to use swap space, but not always). When I do the same with only buffers, it’s thrown when I have still about 240MiB left (the buffers already uploaded are 111MiB in size when glBufferData throws the error). When I upload a lot of textures first and then the buffers, the error still pops out when exactly the same number of buffers are already uploaded as without the textures.
So, why does this happen? Is there some kind of limit other than the available system memory?
The source code for my test program along with the output it generates can be found here: http://alemariusnexus.mooo.com/glestest
Thanks in advance!
What platform are you targeting (e.g. OMAP3630)?
What OS is it running?
What version of the GPU driver is running on your platform? (for more info, please see this page).
I’m using a TI DM3730 (OpenPandora) with Slackware Linux (Kernel 3.2.30).
cat /proc/pvr/version says:
Version 220.127.116.114 (release)
System Version String: SGX revision: 1.2.5
Unfortunately, the 1.4 driver is very old and we no longer have platforms available in our office that I’d be able to replicate the issue on (we focus our support on platforms with 1.8/1.9 drivers now).
You should contact TI to see if you can install a newer, more robust driver on your platform. If TI cannot help you update the driver, they may be aware of the problem and able to suggest a workaround for you.