[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