st/mesa: optimize 4-component ubyte glDrawPixels
authorBrian Paul <brianp@vmware.com>
Thu, 15 Oct 2015 17:54:06 +0000 (11:54 -0600)
committerBrian Paul <brianp@vmware.com>
Tue, 20 Oct 2015 18:52:40 +0000 (12:52 -0600)
commitd11fefa96165836ffeed531a74319a64aa98a696
tree8d5df86bf97d91a5d142e0844954b6b535f2cbe1
parentcf405922eb2bd4d1dfae896caa9d58980875e7ec
st/mesa: optimize 4-component ubyte glDrawPixels

If we didn't find a gallium surface format that exactly matched the
glDrawPixels format/type combination, we used some other 32-bit packed
RGBA format and swizzled the whole image in the mesa texstore/format code.

That slow path can be avoided in some common cases by using the
pipe_samper_view's swizzle terms to do the swizzling at texture sampling
time instead.

For now, only GL_RGBA/ubyte and GL_BGRA/ubyte combinations are supported.
In the future other formats and types like GL_UNSIGNED_INT_8_8_8_8 could
be added.

v2: fix incorrect swizzle setup (need to invert the tex format's swizzle)

Reviewed by: Jose Fonseca <jfonseca@vmware.com>
src/mesa/state_tracker/st_cb_drawpixels.c