svga: fix PIPE_TEXTURE_RECT/BUFFER const buffer issue
authorBrian Paul <brianp@vmware.com>
Wed, 22 Aug 2018 17:11:22 +0000 (11:11 -0600)
committerBrian Paul <brianp@vmware.com>
Wed, 29 Aug 2018 17:29:07 +0000 (11:29 -0600)
commit8331d69a877bcc656ec19dd48ba5975138336f59
tree84c92b19356ab0fa9e8bbcac56c8a5e2c7bda92a
parent46c7433da80aed0dcd2f7ee5d58dd9f7ebf37647
svga: fix PIPE_TEXTURE_RECT/BUFFER const buffer issue

The flag_rect and flag_buffer fields didn't sufficiently capture
the state changes needed for those resource types.  For example,
if a texture binding was changed from a 500x500 rect texture to a
400x400 rect texture we didn't set SVGA_NEW_TEXTURE_CONSTS.  But
we need to do that to emit the new texcoord scale factors to the
constant buffers.  Rather than track the sizes of all bound
resources, just set the flag if the resource is a rect.  Same
story with texture buffers.

Also, since rect/buffer textures are usable with VS/GS shaders,
add SVGA_NEW_TEXTURE_CONSTS to the flags we check for emitting
VS/GS constants.

This seems to help with XFCE / xfwm4 desktop scaling.
VMware issue 2156696.

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
src/gallium/drivers/svga/svga_context.h
src/gallium/drivers/svga/svga_pipe_sampler.c
src/gallium/drivers/svga/svga_state_constants.c