| Summary: | glActiveStencilFaceEXT causes noop dispatch on R300 | ||
|---|---|---|---|
| Product: | Mesa | Reporter: | Oliver McFadden <z3ro.geek> |
| Component: | Drivers/DRI/r300 | Assignee: | Default DRI bug account <dri-devel> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | major | ||
| Priority: | medium | ||
| Version: | git | ||
| Hardware: | x86-64 (AMD64) | ||
| OS: | Linux (All) | ||
| Whiteboard: | |||
| i915 platform: | i915 features: | ||
| Attachments: |
gdb
gdb |
||
|
Description
Oliver McFadden
2007-04-04 10:03:31 UTC
Is line 340 of r300_context.c being executed: ? driInitSingleExtension(ctx, stencil_two_side); Later the actual function should get plugged into the dispatch table in main/state.c at line 579: SET_ActiveStencilFaceEXT(exec, _mesa_ActiveStencilFaceEXT); Note that GL_EXT_stencil_two_side is incompatible with OpenGL 2.0 - see comments at top of main/stencil.c Even if I comment that line to make absolutely certain the call to driInitSingleExtension is executed, the getprocaddress test still fails. I'm aware that GL_EXT_stencil_two_side conflicts with OpenGL 2.0, but this isn't a problem. I target OpenGL 1.3 plus extensions. Just to clarify, I of course mean commenting the if-statement line, not the driInitSingleExtension line itself. Has anyone got any ideas about this? I think that R300 is the only DRI driver to support this extension, so maybe something is broken in the code related to this extension? I don't have an R300. I think someone with an R300 card who knows how to use gdb will just have to dig into the problem and figure it out. Okay. I'll try to take a look into this further with gdb within the next few days. I just did some more debugging on this, and found that the extension is indeed initialized. Breakpoint 1, _mesa_enable_extension (ctx=0x51fff0, name=0x2b817e8f0fbf "GL_EXT_stencil_two_side") at main/extensions.c:459 459 set_extension(ctx, name, GL_TRUE); (gdb) Continuing. Mesa 6.5.3 implementation error: User called no-op dispatch function (an unsupported extension function?) Please report at bugzilla.freedesktop.org Program exited with code 01. But it seems that I'm still getting the no-op dispatch. I checked and even ctx->Extensions->EXT_stencil_two_side it set correctly; it's set to 1. I'm not sure why it's getting the no-op dispatch. Brian, could you offer some pointers about where to look to debug this further? Bugzilla messed up the formatting, so here's the message without the GDB log, and I'll attach the GDB log separately. I just did some more debugging on this, and found that the extension is indeed initialized. But it seems that I'm still getting the no-op dispatch. I checked and even ctx->Extensions->EXT_stencil_two_side it set correctly; it's set to 1. I'm not sure why it's getting the no-op dispatch. Brian, could you offer some pointers about where to look to debug this further? Created attachment 9609 [details]
gdb
What exactly is the error/warning that's printed? Can you set a breakpoint in the warning function and get a stack trace? Created attachment 9618 [details]
gdb
Here is a backtrace from getprocaddress. I don't remember which CFLAGS I
compiled Mesa with last, but in this case it makes little difference to the
backtrace.
OK, I think I've fixed this. The problem was a misunderstanding of how the driInitExtensions() and driInitSingleExtension() functions are used. Get the latest from git and close this report if it's OK. Latest Git works perfectly, thanks! Mass version move, cvs -> git |
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.