diff options
author | Kenneth Graunke <[email protected]> | 2018-12-03 22:38:33 -0800 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2018-12-21 15:29:28 -0800 |
commit | 80dd9dfe33b01b6e0b9784563497d8cb879bccd8 (patch) | |
tree | 4545a63390b73ee6aabc61cef47481f57b682508 | |
parent | ed1a356c5e21a8d19287fea2512d3b3a82171e9f (diff) |
st/mesa: Don't open code the drawpixels vertex shader.
Now that we always copy color, we can just use the util function.
Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r-- | src/mesa/state_tracker/st_cb_drawpixels.c | 38 |
1 files changed, 11 insertions, 27 deletions
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index 0bb2caf5edc..120b5c48339 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -72,6 +72,7 @@ #include "util/u_format.h" #include "util/u_inlines.h" #include "util/u_math.h" +#include "util/u_simple_shaders.h" #include "util/u_tile.h" #include "cso_cache/cso_context.h" @@ -196,35 +197,18 @@ get_drawpix_z_stencil_program(struct st_context *st, static void make_passthrough_vertex_shader(struct st_context *st) { - const enum tgsi_semantic texcoord_semantic = st->needs_texcoord_semantic ? - TGSI_SEMANTIC_TEXCOORD : TGSI_SEMANTIC_GENERIC; + if (st->drawpix.vert_shader) + return; - if (!st->drawpix.vert_shader) { - struct ureg_program *ureg = ureg_create( PIPE_SHADER_VERTEX ); + const uint semantic_names[] = { TGSI_SEMANTIC_POSITION, + TGSI_SEMANTIC_COLOR, + st->needs_texcoord_semantic ? TGSI_SEMANTIC_TEXCOORD : + TGSI_SEMANTIC_GENERIC }; + const uint semantic_indexes[] = { 0, 0, 0 }; - if (ureg == NULL) - return; - - /* MOV result.pos, vertex.pos; */ - ureg_MOV(ureg, - ureg_DECL_output( ureg, TGSI_SEMANTIC_POSITION, 0 ), - ureg_DECL_vs_input( ureg, 0 )); - - /* MOV result.color0, vertex.attr[1]; */ - ureg_MOV(ureg, - ureg_DECL_output( ureg, TGSI_SEMANTIC_COLOR, 0 ), - ureg_DECL_vs_input( ureg, 1 )); - - /* MOV result.texcoord0, vertex.attr[2]; */ - ureg_MOV(ureg, - ureg_DECL_output( ureg, texcoord_semantic, 0 ), - ureg_DECL_vs_input( ureg, 2 )); - - ureg_END( ureg ); - - st->drawpix.vert_shader = - ureg_create_shader_and_destroy( ureg, st->pipe ); - } + st->drawpix.vert_shader = + util_make_vertex_passthrough_shader(st->pipe, 3, semantic_names, + semantic_indexes, false); } |