[waffle] [Piglit] [ANNOUNCE] waffle-1.2.2

Eric Anholt eric at anholt.net
Thu Nov 29 13:35:15 PST 2012


Chad Versace <chad.versace at linux.intel.com> writes:

> On 11/28/2012 12:22 PM, Marek Olšák wrote:
>> On Wed, Nov 28, 2012 at 8:42 PM, Chad Versace
>> <chad.versace at linux.intel.com> wrote:
>>> On 11/28/2012 10:40 AM, Marek Olšák wrote:
>>>> On Wed, Nov 28, 2012 at 7:26 PM, Chad Versace
>>>> <chad.versace at linux.intel.com> wrote:
>>>>> On 11/27/2012 07:47 PM, Marek Olšák wrote:
>>>>>> HI Chad,
>>>>>>
>>>>>> FYI, the core GL support in the GLX backend of waffle and/or piglit
>>>>>> seems to be broken. All piglit tests that specify the core GL version
>>>>>> and are run on a driver which cannot create a core GL context (that is
>>>>>> any open driver except i965), always fail. The tests report
>>>>>> GLXBadFBConfig and just die. I think the piglit_init function isn't
>>>>>> even reached.
>>>>>>
>>>>>> I don't use EGL.
>>>>>>
>>>>>> Marek
>>>>>
>>>>> Marek,
>>>>>
>>>>> I tried some experiments with i965 and older versions of Mesa in an
>>>>> attempt to reproduce your problem, but I can't. In the two experiments
>>>>> I tried below, the behavior was exactly as expected.
>>>>>
>>>>> * Test 1: Against i965 from mesa-7.11, which supports only GL 2.1 and no
>>>>> GLX_ARB_create_context.
>>>>>
>>>>>> PIGLIT_DEBUG=1 PIGLIT_PLATFORM=glx ./gl-3.1-minmax
>>>>> piglit: debug: waffle_config_choose failed due to WAFFLE_ERROR_UNSUPPORTED_ON_PLATFORM: GLX_ARB_create_context is required in order to request a GL version not equal to the default value 1.0
>>>>> piglit: info: Failed to create GL 3.1 core context
>>>>> Mesa: Initializing x86-64 optimizations
>>>>> Test requires GL version 3.1
>>>>> PIGLIT: {'result': 'skip' }
>>>>>
>>>>>
>>>>> * Test 2: Against i965 from mesa-9.0.1, which supports GL 3.1 core, and an Xserver
>>>>> without GLX_ARB_create_context.
>>>>>
>>>>>> PIGLIT_DEBUG=1 PIGLIT_PLATFORM=glx ./gl-3.1-minmax
>>>>> piglit: debug: waffle_config_choose failed due to WAFFLE_ERROR_UNSUPPORTED_ON_PLATFORM: GLX_ARB_create_context is required in order to request a GL version not equal to the default value 1.0
>>>>> piglit: info: Failed to create GL 3.1 core context
>>>>> Test requires GL version 3.1
>>>>> PIGLIT: {'result': 'skip' }
>>>>>
>>>>>
>>>>> Please run, with PIGLIT_DEBUG=1, the piglit test that's causing you trouble
>>>>> and send me the output. Hopefully that will be enough for me to identify
>>>>> and fix the bug.
>>>>
>>>> PIGLIT_DEBUG doesn't print anything. All I get is:
>>>>
>>>> X Error of failed request:  GLXBadFBConfig
>>>>   Major opcode of failed request:  154 (GLX)
>>>>   Minor opcode of failed request:  34 ()
>>>>   Serial number of failed request:  22
>>>>   Current serial number in output stream:  20
>>>>
>>>> I get the same error with gallium and classic swrast.
>>>>
>>>> Marek
>>>
>>> Even with swrast, I'm not getting GLXBadFBConfig.
>>>
>>>> PIGLIT_DEBUG=1 PIGLIT_PLATFORM=glx LIBGL_ALWAYS_SOFTWARE=1 bin/gl-3.1-minmax
>>> piglit: debug: waffle_config_choose failed due to WAFFLE_ERROR_UNSUPPORTED_ON_PLATFORM: GLX_ARB_create_context is required in order to request a GL version not equal to the default value 1.0
>>> piglit: info: Failed to create GL 3.1 core context
>>> Test requires GL version 3.1
>>> PIGLIT: {'result': 'skip' }
>>>
>>>
>>> The GLX call that likely emits GLXBadFBConfig is the call to glXCreateNewContext
>>> at glx_context.c:144 (lines relative to waffle-1.2.2). That call succeeds for me,
>>> so I don't know why it's failing for you. The following information would help:
>>>
>>> 1. Break at glx_context.c:144.
>>> 2. Verify that the call to glXCreateNewContext there emits GLXBadFBConfig.
>>> 3. Give me the backtrace there.
>>> 4. In gdb, give me the output of `print *config`.
>>> 5. Give me the output of glxinfo.
>> 
>> After some investigation, it's actually glXCreateContextAttribsARB
>> that fails, which is what I would expect to fail if it can't create a
>> core context. The implementation is in mesa/src/glx/create_context.c.
>> I'm cc'in Ian, because he implemented it.
>> 
>> glXCreateContextAttribsARB falls back to indirect rendering if it
>> fails to create a direct context and then
>> xcb_glx_create_context_attribs_arb_checked returns GLXBadFBConfig.
>> 
>> I have 2 options there:
>> - don't try indirect rendering and return NULL
>> - don't call __glXSendErrorForXcb (which kills the app) and return NULL
>> 
>> Both options yield the behavior waffle expects. My guess is that we
>> should remove the call to __glXSendErrorForXcb, but I'm not sure if
>> it's a correct fix.
>> 
>> BTW I have X Server 1.13.
>> 
>> Marek
>
> I third option is to add a new waffle function that allows clients
> to register various error handlers.
>
> When writing waffle, I completely
> forgot that the default handler for X errors simply exits. I was working
> from Wayland's model, where unhandled errors are ignored. Another lesson
> learned for waffle 2.0.

If waffle is generating the requests, it should suppress the errors on
its own.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/waffle/attachments/20121129/0e7f04ef/attachment.pgp>


More information about the waffle mailing list