[Mesa-dev] [PATCH] st/mesa: ensure that images don't try to reference non-existent levels

Marek Olšák maraeo at gmail.com
Mon Mar 5 19:05:34 UTC 2018


Maybe st/mesa should clamp the level instead of assert.

Marek

On Thu, Mar 1, 2018 at 7:23 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> Yes, as I mentioned this makes some tests assert.
>
> They were passing before, but it was through luck since the actual images
> were never accessed.
>
> On Mar 1, 2018 04:04, "Timothy Arceri" <tarceri at itsqueeze.com> wrote:
>>
>> This causes the CTS tests to assert on radeonsi where they previously
>> passed. If that expected?
>>
>> On 27/02/18 16:19, Ilia Mirkin wrote:
>>>
>>> Ideally the st_finalize_texture call would take care of that, but it
>>> doesn't seem to with KHR-GL45.shader_image_size.advanced-nonMS-*. This
>>> assertions makes sure that no such values are passed to the driver.
>>>
>>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>>> ---
>>>
>>> This will trigger asserts in CTS, but I think that's better than feeding
>>> broken values to driver backends.
>>>
>>>   src/mesa/state_tracker/st_atom_image.c | 1 +
>>>   1 file changed, 1 insertion(+)
>>>
>>> diff --git a/src/mesa/state_tracker/st_atom_image.c
>>> b/src/mesa/state_tracker/st_atom_image.c
>>> index 1c4980173f4..421c926cf04 100644
>>> --- a/src/mesa/state_tracker/st_atom_image.c
>>> +++ b/src/mesa/state_tracker/st_atom_image.c
>>> @@ -97,6 +97,7 @@ st_convert_image(const struct st_context *st, const
>>> struct gl_image_unit *u,
>>>           img->resource = stObj->pt;
>>>         img->u.tex.level = u->Level + stObj->base.MinLevel;
>>> +      assert(img->u.tex.level <= img->resource->last_level);
>>>         if (stObj->pt->target == PIPE_TEXTURE_3D) {
>>>            if (u->Layered) {
>>>               img->u.tex.first_layer = 0;
>>>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>


More information about the mesa-dev mailing list