[Mesa-dev] [PATCH] mesa: only copy the requested teximage faces

Ilia Mirkin imirkin at alum.mit.edu
Thu Aug 27 14:05:50 PDT 2015


On Thu, Aug 27, 2015 at 4:43 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Thu, Aug 27, 2015 at 4:32 PM, Brian Paul <brianp at vmware.com> wrote:
>> On 08/27/2015 01:43 PM, Ilia Mirkin wrote:
>>>
>>> Cube maps are special in that they have separate teximages for each
>>> face. We handled that by copying the data to them separately, but in
>>> case zoffset != 0 or depth != 6 we would read off the end of the client
>>> array or modify the wrong images.
>>>
>>> zoffset/depth have already been verified by the time the code gets to
>>> this stage, so no need to double-check.
>>>
>>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>>> ---
>>>   src/mesa/main/teximage.c | 4 ++--
>>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
>>> index 253e881..d7b4304 100644
>>> --- a/src/mesa/main/teximage.c
>>> +++ b/src/mesa/main/teximage.c
>>> @@ -3711,12 +3711,12 @@ texturesubimage(struct gl_context *ctx, GLuint
>>> dims,
>>>         rowStride = _mesa_image_image_stride(&ctx->Unpack, width, height,
>>>                                              format, type);
>>>         /* Copy in each face. */
>>> -      for (i = 0; i < 6; ++i) {
>>> +      for (i = zoffset; i < zoffset + depth; ++i) {
>>>            texImage = texObj->Image[i][level];
>>>            assert(texImage);
>>>
>>>            _mesa_texture_sub_image(ctx, 3, texObj, texImage,
>>> texObj->Target,
>>> -                                 level, xoffset, yoffset, zoffset,
>>> +                                 level, xoffset, yoffset, 0,

Actually I wonder if this needs to be 'i' instead of 0 or zoffset?
There are no operational tests unfortunately, and I don't know enough
about teximages.

>>>                                    width, height, 1, format,
>>>                                    type, pixels, true);
>>>            pixels = (GLubyte *) pixels + rowStride;
>>>
>>
>>
>> Reviewed-by: Brian Paul <brianp at vmware.com>
>>
>> I'll follow-up with a patch to rename rowStride to imageStride since that's
>> what it really is.
>
> Yeah, I noticed that too and was confused at first :)
>
> I'm going to CC this to 10.6 + 11.0 unless there are objections.


More information about the mesa-dev mailing list