Summary: | glEvalPoint causes glEnd to throw GL_INVALID_OPERATION | ||
---|---|---|---|
Product: | Mesa | Reporter: | David <dnschneid> |
Component: | Mesa core | Assignee: | marius predut <marius.predut> |
Status: | VERIFIED FIXED | QA Contact: | mesa-dev |
Severity: | normal | ||
Priority: | medium | ||
Version: | git | ||
Hardware: | x86 (IA32) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
Code demonstrating the assert failure.
app outputs |
This looks rather like a mesa bug. What mesa version is this (glxinfo). glxinfo returns OpenGL 1.4 Mesa 7.6 The assertion failure is gone. The only remaining issue is the error on glEnd. I just retested this app with Mesa master (git 4445bbf) and I don't see any errors. Probably fixed long since Mesa 7.6. Closing. Created attachment 115947 [details]
app outputs
no matter if defines or not.
I confirm that this app don't generate any errors. With or without proposed defines the outputs are identical - see above comments. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.
Created attachment 32454 [details] Code demonstrating the assert failure. If this is the wrong place to report this, please point me in the right direction. Recently I've been working on a game, and a bit of code that worked fine in nvidia's proprietary libGL implementation fails an assertion in the mesa version. Basically, using glEvalPoint2 inside of a glBegin/glEnd block all inside a glNewList/glEndList block seemingly has no effect (nothing is drawn when the display list is called). Putting a glVertex3f call in the same glBegin/End block along with the calls to glEvalPoint causes a failed assertion: vbo/vbo_save_api.c:503: _save_upgrade_vertex: Assertion `save->copied.nr == 0' failed. Using glVertex with no calls to glEvalPoint draws properly, and using glEvalMesh instead of glBegin/glEvalPoint/glEnd works properly as well. Again, all forms of the code work fine on nvidia's proprietary drivers. Attached is a pretty short bit of C that demonstrates the error. Comment out the defines at the top of the page to use the glEvalPoint code that causes the assert fail. The code uses SDL to set up the window and rendering context. With both defines enabled, glEvalMesh is used and a box should be drawn in the center of the screen. Disabling the WORK_PLEASE define will use glEvalPoint, which draws nothing despite drawing the same box on nvidia's implementation. Disabling both WORK_PLEASE and DONT_CRASH will insert a glVertex call that causes the assert error. Again, running on nvidia's proprietary implementation draws a box. I hope I've supplied sufficient detail; ask if you need any more information.