[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