cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

cguenther
Adept II

existing max VBO size?

Hi there.

I am working with large Point based datasets with the AMD 7970. The points inside my VBO are stored in following order:

glGenBuffers(1, &VBOId);

glBufferData(GL_ARRAY_BUFFER, numPoints * (3 * sizeof(GLint)+sizeof(GLint)),NULL,GL_STATIC_DRAW);

glBufferSubData(GL_ARRAY_BUFFER, 0, numPoints * 3 * sizeof(GLint), xyz);  

glBufferSubData(GL_ARRAY_BUFFER, numPoints * 3 * sizeof(GLint), numPoints * sizeof(GLint), rgbflags);

Now i have the problem that the VBO only gets only correct initialized when the numPoints is equal or less than 23950811. This leads to a 365MB VBO. When the numPoints exceeds the number, than i get the Invalid GL Object Error Message when i try to share it with CL.

I also can't render it with glDrawArrays, when it's exceeds the number. Exists there a maximum VBO size, or is there any other creation/initialization problem regarding to large VBOs?

0 Likes
1 Solution
gsellers
Staff

Hi,

In theory, we should be able to support very large buffer sizes - well in excess of a gigabyte. However, there could well be some internal problem that either causes the memory allocation to fail (such as address space fragmentation or operating system state), or may cause us to fail to upload the data correctly.

As a workaround, I would suggest that you break the data-set up. If you use two buffers and separate vertex attributes rather than interleaved attributes, with one buffer for 'xyz' and one for 'rgbflags', you might get it working. Otherwise, you will need to break your dataset up further.

A few questions:

  • What operating system are you running?
  • Does it appear that the buffer is allocated but that the data is incorrect, or that the buffer is not allocated at all?
  • Do you get a GL_OUT_OF_MEMORY error or anything like that?
  • How many other buffers does your application create and how big are they?

Thanks,

Graham

View solution in original post

0 Likes
1 Reply
gsellers
Staff

Hi,

In theory, we should be able to support very large buffer sizes - well in excess of a gigabyte. However, there could well be some internal problem that either causes the memory allocation to fail (such as address space fragmentation or operating system state), or may cause us to fail to upload the data correctly.

As a workaround, I would suggest that you break the data-set up. If you use two buffers and separate vertex attributes rather than interleaved attributes, with one buffer for 'xyz' and one for 'rgbflags', you might get it working. Otherwise, you will need to break your dataset up further.

A few questions:

  • What operating system are you running?
  • Does it appear that the buffer is allocated but that the data is incorrect, or that the buffer is not allocated at all?
  • Do you get a GL_OUT_OF_MEMORY error or anything like that?
  • How many other buffers does your application create and how big are they?

Thanks,

Graham

0 Likes