X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fstate_tracker%2Fst_cb_bitmap.c;h=7ef0d7ea5c621f04fcc26be31e7f5392a01f0b55;hb=bcb6f19947d5e77e0a6636340dbfc55df5fcc788;hp=a73d6c7e06233bab59f094032b73d662437e2743;hpb=80dd9dfe33b01b6e0b9784563497d8cb879bccd8;p=mesa.git diff --git a/src/mesa/state_tracker/st_cb_bitmap.c b/src/mesa/state_tracker/st_cb_bitmap.c index a73d6c7e062..7ef0d7ea5c6 100644 --- a/src/mesa/state_tracker/st_cb_bitmap.c +++ b/src/mesa/state_tracker/st_cb_bitmap.c @@ -46,6 +46,7 @@ #include "st_draw.h" #include "st_program.h" #include "st_cb_bitmap.h" +#include "st_cb_drawpixels.h" #include "st_sampler_view.h" #include "st_texture.h" @@ -53,7 +54,6 @@ #include "pipe/p_defines.h" #include "pipe/p_shader_tokens.h" #include "util/u_inlines.h" -#include "util/u_simple_shaders.h" #include "util/u_upload_mgr.h" #include "program/prog_instruction.h" #include "cso_cache/cso_context.h" @@ -214,7 +214,7 @@ setup_render_state(struct gl_context *ctx, cso_set_fragment_shader_handle(cso, fpv->driver_shader); /* vertex shader state: position + texcoord pass-through */ - cso_set_vertex_shader_handle(cso, st->bitmap.vs); + cso_set_vertex_shader_handle(cso, st->passthrough_vs); /* disable other shaders */ cso_set_tessctrl_shader_handle(cso, NULL); @@ -538,7 +538,7 @@ init_bitmap_state(struct st_context *st) struct pipe_screen *screen = pipe->screen; /* This function should only be called once */ - assert(st->bitmap.vs == NULL); + assert(!st->bitmap.tex_format); assert(st->internal_target == PIPE_TEXTURE_2D || st->internal_target == PIPE_TEXTURE_RECT); @@ -585,17 +585,7 @@ init_bitmap_state(struct st_context *st) } /* Create the vertex shader */ - { - 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 }; - st->bitmap.vs = util_make_vertex_passthrough_shader(st->pipe, 3, - semantic_names, - semantic_indexes, - FALSE); - } + st_make_passthrough_vertex_shader(st); reset_cache(st); } @@ -617,7 +607,7 @@ st_Bitmap(struct gl_context *ctx, GLint x, GLint y, st_invalidate_readpix_cache(st); - if (!st->bitmap.vs) { + if (!st->bitmap.tex_format) { init_bitmap_state(st); } @@ -677,7 +667,7 @@ st_DrawAtlasBitmaps(struct gl_context *ctx, struct pipe_vertex_buffer vb = {0}; unsigned i; - if (!st->bitmap.vs) { + if (!st->bitmap.tex_format) { init_bitmap_state(st); } @@ -807,11 +797,6 @@ st_destroy_bitmap(struct st_context *st) struct pipe_context *pipe = st->pipe; struct st_bitmap_cache *cache = &st->bitmap.cache; - if (st->bitmap.vs) { - cso_delete_vertex_shader(st->cso_context, st->bitmap.vs); - st->bitmap.vs = NULL; - } - if (cache->trans && cache->buffer) { pipe_transfer_unmap(pipe, cache->trans); }