[Mesa-dev] [PATCH] intel: Emit assertion failure ASAP when DRI2 separate stencil handshake fails

Kenneth Graunke kenneth at whitecape.org
Fri Aug 19 23:27:15 PDT 2011


On 08/19/2011 04:00 PM, Chad Versace wrote:
> On 08/19/2011 03:18 PM, Kenneth Graunke wrote:
>> On 08/19/2011 10:44 AM, Chad Versace wrote:
>>> On 08/19/2011 10:35 AM, Eric Anholt wrote:
>>>> On Thu, 18 Aug 2011 14:02:46 -0700, Chad Versace <chad at chad-versace.us> wrote:
>>>>> When intel_verify_dri2_has_hiz() discovers that DRI2 (that is, the DDX
>>>>> driver) cannot provide a separate stencil buffer, but
>>>>> intel_context::hw_must_use_separate_stencil is set, then emit an
>>>>> informative assertion failure as soon as possible.
>>>>>
>>>>> Currently, we do emit an assertion failure, but the its location is
>>>>> sufficiently unrelated to the DRI2 HiZ handshake as to be uninformative.
>>>>> In experimenting with HiZ, Anholt encountered this assertion failure and
>>>>> was unable to understand its cause.
>>>>>
>>>>> CC: Eric Anholt <eric at anholt.net>
>>>>> Signed-off-by: Chad Versace <chad at chad-versace.us>
>>>>> ---
>>>>>  src/mesa/drivers/dri/intel/intel_context.c |    4 ++++
>>>>>  1 files changed, 4 insertions(+), 0 deletions(-)
>>>>>
>>>>> diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
>>>>> index fe8be08..b9d2579 100644
>>>>> --- a/src/mesa/drivers/dri/intel/intel_context.c
>>>>> +++ b/src/mesa/drivers/dri/intel/intel_context.c
>>>>> @@ -1454,6 +1454,10 @@ intel_verify_dri2_has_hiz(struct intel_context *intel,
>>>>>  	  * a combined depth/stencil buffer. Discard the hiz buffer too.
>>>>>  	  */
>>>>>  	 intel->intelScreen->dri2_has_hiz = INTEL_DRI2_HAS_HIZ_FALSE;
>>>>> +	 if (intel->must_use_separate_stencil) {
>>>>> +	    assert(!"intel_context requires separate stencil, but the "
>>>>> +		    "DRIscreen does not support it");
>>>>> +	 }
>>>>>  
>>>>
>>>> If it's something we think people can actually hit (and in this case we
>>>> do), just use _mesa_problem so people see it even if they aren't
>>>> building with assertions.
>>>
>>> I would also like to throw an assertion immediately after _mesa_problem(), like below.
>>> Since an assertion will eventually fail anyway, we might as well die ASAP.
>>>
>>> _mesa_probelm(ctx, "intel_context requires separate stencil, but the "
>>>                    "DRIscreen does no support it. You may need to upgrade "
>>>                    "the Intel X driver to 2.16.0");
>>> assert(0);
> 
>> Not assert(0)...abort().  assertions get compiled away to nothing in
>> release mode.
> 
> Thanks. I have never used abort() before... I forgot it was in the toolbox.
> 
> If I replace the assert with abort, is everyone happy?

Yep, I'm happy.  Thanks!


More information about the mesa-dev mailing list