連結已複製
It is hard to believe that Intel will release even a small piece of codes of the driver.
Intel's engineerscould investigate it and, of course, a test case will speed up the investigation. You know,
that sometimes it is not easy to reproduce a problem.
>>...Does anyone have any good suggestions as to how to investiage this?..
If the driver was built with MS Visual Studio 20xx it should have a Program Database file ( *.pdb \ PDB).
There are also PDBs for every version of Windows operating system ( check for Microsoft's website ).
In case you have both, foran operating systemand for the driver, it is a little bit easier to investigate.
Best regards,
Sergey
Congratulations! You've just proven that NVIDIA's statement "Never Call glFinish()" is not right in some cases. :)
Take a look at NVIDIA's "GPU Programming Guide" ( version 2.4.0 \ 2005 year ):
...
8.6.10 Never Call glFinish() 67
...
Best regards,
Sergey
That's a good idea. Why wouldn't you try to contact somebody at Intel who are in chargefor the Intel Software Network?
Best regards,
Sergey
Especially Alfonse answered me perfectly.
Yes, actually reallocation is not allowed in D3D. When reallocating, I have to copy the entire buffer data from system memory to video memory. so I will reserve a proper size of video memory to store the buffer, and use glBufferSubData to update it when new primitives are added. Just like std::vector does.
Top MBA Colleges in India
Business School Ranking
Will glBufferData leak memory?
My program looks like this
glGenBuffers(...)
glBindBuffer()
main_loop
{
glBufferData( GL_ARRAY_BUFFER , size , data , GL_DYNAMIC_DRAW );
draw
}
glDestroyBuffers(...)
As you see, the VBO will be a dynamic one. And the buffer size is always changing.
If the glBufferData will cause memory leak. Will it appear in video memory? Because I have tested it, while memory leak didn't take place in my system memory.
Thank you!
Top MBA Colleges in India
Business School Ranking
Will glBufferData leak memory?
...
main_loop
{
glBufferData( GL_ARRAY_BUFFER , size , data , GL_DYNAMIC_DRAW );
draw
}
glDestroyBuffers(...)
As you see, the VBO will be a dynamic one. And the buffer size is always changing.
If the glBufferData will cause memory leak. Will it appear in video memory? Because I have tested it, while memory leak didn't take place in my system memory.
...
Why do you think that glBufferDatafunctioncauses some memory leaks?
If the size of the data is sufficiently small - fewer than5000 triangles, then the system appears not to leak. However, if i increase the triangle count to 10000 and continue up to 30000 the memory usage increases until the program uses 600mb.
GLfinish - was insufficient to prevent the leak.
If i add a sleep(200) after each render call, then there is no leak - but this isn't really solution. Other GPUs (nvidia, ati) are perfectly happy with sending large data arrays to the gpu.
I used glMapBuffer() instead to send the data to the vbo and this seemed to work fine without any memory leaks. I was just curious to know if the glBufferDataidea posted by Sergeyis a mistake for larger data sizesand if soshould ialways be using glMapBuffer on intel gpus.
thanks
I apologise Sergey, I must have read the forum post too quickly. I was testing mbaupdates loop concerning glBufferData on an intel hd 3000, in a laptop and on a desktop pc. I found no memory leak on the laptop, but as number of vertices increased, the chance of a memory leak also increased on the desktop pc.
So i guess iam providingmore information on the reproducible bug with glBufferData on some intel hd 3000 cards using mbaupdates glBufferData loop.I wondered if anyone else was experiencing these problems. I fixed them with glMapBuffer, and i wondered if this was recommended practise for intel cards, or whether its a driver bug. In fact, if you don't use glBufferData and instead send the vertices using glVertexAttribPointer then you leak large chunks of memory very quickly. (unless you put a sleep in between each render call)
once again sorry for making the mistake with regard to your forum post Sergey, it was mbaupdates loop i was supposed to be referencing.
I apologise Sergey, I must have read the forum post too quickly. I was testing mbaupdates loop concerning glBufferData on an intel hd 3000, in a laptop and on a desktop pc. I found no memory leak on the laptop, but as number of vertices increased, the chance of a memory leak also increased on the desktop pc.
[SergeyK] Thank you for the response.
So i guess iam providingmore information on the reproducible bug with glBufferData on some intel hd 3000 cards using mbaupdates glBufferData loop.I wondered if anyone else was experiencing these problems. I fixed them with glMapBuffer, and i wondered if this was recommended practise for intel cards, or whether its a driver bug.
[SergeyK] Unfortunately, we still don't hear anything from Intel Software Engineers.
...
Best regards,
Sergey
