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

Kenneth Graunke kenneth at whitecape.org
Fri Aug 19 15:18:37 PDT 2011


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.


More information about the mesa-dev mailing list