[Mesa-dev] [PATCH] st/mesa: st_copy_texsubimage: clip source size to rb size
Brian Paul
brianp at vmware.com
Mon Jul 18 20:19:56 PDT 2011
On 07/18/2011 09:29 AM, Vadim Girlin wrote:
> On Mon, 2011-07-18 at 08:34 -0600, Brian Paul wrote:
>> On Mon, Jul 18, 2011 at 8:11 AM, Vadim Girlin<vadimgirlin at gmail.com> wrote:
>>> Fixes https://bugs.freedesktop.org/show_bug.cgi?id=39286
>>> ---
>>> src/mesa/state_tracker/st_cb_texture.c | 8 ++++++++
>>> 1 files changed, 8 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
>>> index 6907cfc..63cd142 100644
>>> --- a/src/mesa/state_tracker/st_cb_texture.c
>>> +++ b/src/mesa/state_tracker/st_cb_texture.c
>>> @@ -1490,6 +1490,14 @@ st_copy_texsubimage(struct gl_context *ctx,
>>> destY = 0;
>>> }
>>>
>>> + if (srcX + width> strb->Base.Width) {
>>> + width = strb->Base.Width - srcX;
>>> + }
>>> +
>>> + if (srcY + height> strb->Base.Height) {
>>> + height = strb->Base.Height - srcY;
>>> + }
>>> +
>>> if (width< 0 || height< 0)
>>> return;
>>
>> Clipping for glCopyTexSubImage() should be done by
>> _mesa_clip_copytexsubimage() (in image.c, called from teximage.c).
>> Maybe you could do a bit of debugging to see why that's not doing the
>> job.
>>
>
> Yes, I have some doubts too, especially now when I've seen the comment
> before the st_copy_texsubimage definition, which explicitly states the
> region should be clipped already. AFAICS _mesa_clip_copytexsubimage is
> called only from copytexsubimage, but st_copy_texsubimage is called from
> copyteximage (without sub) too, that's why no clipping occurs. I'm not
> sure now where and how is better to fix it then, because my knowledge of
> this code is still not very good. On the other hand, st_copy_texsubimage
> already contains some clipping code, that's why I've added the checks in
> this function. How should I fix this correctly?
Here's a patch to try.
Basically, it reimplements glCopyTexImage() like a sequence of
glTexImage() and glCopyTexSubImage() calls (and does the clipping that
was missing). I was planning on doing this as a follow-on to the
map-texture-image-v4 work.
With this change, we can remove the ctx->Driver.CopyTexImage1D/2D()
hooks and the corresponding code in all the drivers.
-Brian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: clip-copyteximage.patch
Type: application/pgp-keys
Size: 3425 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20110718/8adb62bc/attachment.key>
More information about the mesa-dev
mailing list