diff options
author | Dave Airlie <[email protected]> | 2017-06-05 13:34:05 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2017-06-06 06:09:44 +1000 |
commit | d8212f847a4c63a2e3b6c8b1323340d26e0aff21 (patch) | |
tree | 55b2f5c6e2ca06844c7367c8564730f51b2e3043 /src/gallium/drivers/r600 | |
parent | 7a26a0bf092f7f4f0ee11cd8f59000828f1a527a (diff) |
r600: refactor out some compressed resource state code.
This just takes this out to a separate function as it will
get more complex with images.
Reviewed-by: Glenn Kennard <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600')
-rw-r--r-- | src/gallium/drivers/r600/r600_state_common.c | 52 |
1 files changed, 28 insertions, 24 deletions
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index 3b24f36119c..8ace7793f0f 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -1400,6 +1400,32 @@ static void r600_generate_fixed_func_tcs(struct r600_context *rctx) ureg_create_shader_and_destroy(ureg, &rctx->b.b); } +static void r600_update_compressed_resource_state(struct r600_context *rctx) +{ + unsigned i; + unsigned counter; + + counter = p_atomic_read(&rctx->screen->b.compressed_colortex_counter); + if (counter != rctx->b.last_compressed_colortex_counter) { + rctx->b.last_compressed_colortex_counter = counter; + + for (i = 0; i < PIPE_SHADER_TYPES; ++i) { + r600_update_compressed_colortex_mask(&rctx->samplers[i].views); + } + } + + /* Decompress textures if needed. */ + for (i = 0; i < PIPE_SHADER_TYPES; i++) { + struct r600_samplerview_state *views = &rctx->samplers[i].views; + if (views->compressed_depthtex_mask) { + r600_decompress_depth_textures(rctx, views); + } + if (views->compressed_colortex_mask) { + r600_decompress_color_textures(rctx, views); + } + } +} + #define SELECT_SHADER_OR_FAIL(x) do { \ r600_shader_select(ctx, rctx->x##_shader, &x##_dirty); \ if (unlikely(!rctx->x##_shader->current)) \ @@ -1440,30 +1466,8 @@ static bool r600_update_derived_state(struct r600_context *rctx) bool need_buf_const; struct r600_pipe_shader *clip_so_current = NULL; - if (!rctx->blitter->running) { - unsigned i; - unsigned counter; - - counter = p_atomic_read(&rctx->screen->b.compressed_colortex_counter); - if (counter != rctx->b.last_compressed_colortex_counter) { - rctx->b.last_compressed_colortex_counter = counter; - - for (i = 0; i < PIPE_SHADER_TYPES; ++i) { - r600_update_compressed_colortex_mask(&rctx->samplers[i].views); - } - } - - /* Decompress textures if needed. */ - for (i = 0; i < PIPE_SHADER_TYPES; i++) { - struct r600_samplerview_state *views = &rctx->samplers[i].views; - if (views->compressed_depthtex_mask) { - r600_decompress_depth_textures(rctx, views); - } - if (views->compressed_colortex_mask) { - r600_decompress_color_textures(rctx, views); - } - } - } + if (!rctx->blitter->running) + r600_update_compressed_resource_state(rctx); SELECT_SHADER_OR_FAIL(ps); |