radeonsi: Compile dummy pixel shader on demand

It's never used under normal circumstances.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Michel Dänzer
2014-08-27 17:29:08 +09:00
committed by Michel Dänzer
parent b84b9eae20
commit a75fee78c6
2 changed files with 10 additions and 8 deletions
-7
View File
@@ -27,7 +27,6 @@
#include "radeon/radeon_uvd.h"
#include "util/u_memory.h"
#include "util/u_simple_shaders.h"
#include "vl/vl_decoder.h"
/*
@@ -124,12 +123,6 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen, void *
goto fail;
sctx->blitter->draw_rectangle = r600_draw_rectangle;
sctx->dummy_pixel_shader =
util_make_fragment_cloneinput_shader(&sctx->b.b, 0,
TGSI_SEMANTIC_GENERIC,
TGSI_INTERPOLATE_CONSTANT);
sctx->b.b.bind_fs_state(&sctx->b.b, sctx->dummy_pixel_shader);
/* these must be last */
si_begin_new_cs(sctx);
r600_query_init_backend_mask(&sctx->b); /* this emits commands and must be last */
+10 -1
View File
@@ -36,6 +36,7 @@
#include "util/u_framebuffer.h"
#include "util/u_helpers.h"
#include "util/u_memory.h"
#include "util/u_simple_shaders.h"
static void si_init_atom(struct r600_atom *atom, struct r600_atom **list_elem,
void (*emit)(struct si_context *ctx, struct r600_atom *state),
@@ -2283,8 +2284,16 @@ static void si_bind_ps_shader(struct pipe_context *ctx, void *state)
return;
/* use dummy shader if supplied shader is corrupt */
if (!sel || !sel->current)
if (!sel || !sel->current) {
if (!sctx->dummy_pixel_shader) {
sctx->dummy_pixel_shader =
util_make_fragment_cloneinput_shader(&sctx->b.b, 0,
TGSI_SEMANTIC_GENERIC,
TGSI_INTERPOLATE_CONSTANT);
}
sel = sctx->dummy_pixel_shader;
}
sctx->ps_shader = sel;
}