[Mesa-dev] [PATCH] texgetimage: Check that a multisample tex is not passed to GetTextureSubImage
Ilia Mirkin
imirkin at alum.mit.edu
Thu Feb 2 18:38:34 UTC 2017
On Thu, Feb 2, 2017 at 1:36 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Thu, Feb 2, 2017 at 1:29 PM, Eduardo Lima Mitev <elima at igalia.com> wrote:
>> OpenGL 4.5 spec, section "8.11.4 Texture Image Queries", page 233 of
>> the PDF states:
>>
>> "An INVALID_OPERATION error is generated if texture is the name of a buffer
>> or multisample texture."
>>
>> Currently, this is not being checked and the multisample texture image is passed
>> down to the driver hook. On i965, it is crashing the driver with an assertion:
>>
>> intel_mipmap_tree.c:3125: intel_miptree_map: Assertion `mt->num_samples <= 1' failed.
>> ---
>> src/mesa/main/texgetimage.c | 14 ++++++++++++++
>> 1 file changed, 14 insertions(+)
>>
>> diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c
>> index d5cb1636605..6a23e4bbb8c 100644
>> --- a/src/mesa/main/texgetimage.c
>> +++ b/src/mesa/main/texgetimage.c
>> @@ -1185,6 +1185,20 @@ getteximage_error_check(struct gl_context *ctx,
>> texImage = select_tex_image(texObj, target, level, zoffset);
>> assert(texImage);
>>
>> + /* Check that texObj is not a buffer or multisample texture if called
>> + * from glGetTextureSubImage. OpenGL 4.5 spec, section "8.11.4 Texture
>> + * Image Queries", page 233 of the PDF states:
>> + *
>> + * "An INVALID_OPERATION error is generated if texture is the
>> + * name of a buffer or multisample texture."
>> + */
>> + if (texImage->NumSamples > 0 &&
>> + strcmp(caller, "glGetTextureSubImage") == 0) {
>
> So... glGetTextureSubImage is not OK but glGetTextureImage is OK?
>
> I think the issue is a missing
>
> if (!legal_getteximage_target(ctx, texObj->Target, true)) {
> _mesa_error(ctx, GL_INVALID_ENUM, "%s", caller);
> return;
> }
>
> block in _mesa_GetTextureSubImage.
Or actually I guess this should get a custom block in that function
(since it's actually different from GetTextureImage). Either way, the
strcmp is not the way to go.
>
>> + _mesa_error(ctx, GL_INVALID_OPERATION,
>> + "%s(multisample texture)", caller);
>> + return true;
>> + }
>> +
>> /*
>> * Format and type checking has been moved up to GetnTexImage and
>> * GetTextureImage so that it happens before getting the texImage object.
>> --
>> 2.11.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