st/mesa: Drop !passColor optimization in drawpixels shaders.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 4 Dec 2018 06:26:47 +0000 (22:26 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 21 Dec 2018 23:29:25 +0000 (15:29 -0800)
commited1a356c5e21a8d19287fea2512d3b3a82171e9f
tree9cdc82a30096c0e474503b20401b07d99b5d3e14
parent42d31e0516d64bca45a45f73e6a2f7f40e6daa4b
st/mesa: Drop !passColor optimization in drawpixels shaders.

The glDrawPixels passthrough vertex shader copies position and texcoord
vertex attributes to varying outputs.  It also optionally copies a third
gl_Color attribute, which sometimes is unnecessary.  Until now, we've
compiled separate variants of the shader, one of which does this extra
copy, and the other of which doesn't.  We have done this since 2007.

But, the vertex shader runs for a whopping four vertices, and so the
cost of a copying a single input to output is likely inconsequential.
In theory, we could bind one fewer vertex element - but we always bind
all three regardless.  So, we don't even get that savings.

This patch unifies the two, so we always copy the optional color,
and save having to compile the variant.  It also makes the VS input
interface match up with the vertex element state without any dead
(unused) input attributes.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mesa/state_tracker/st_cb_drawpixels.c
src/mesa/state_tracker/st_context.h