radeonsi: don't recompile shaders when changing nr_cbufs from 0 to 1
Both cases are equivalent. Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
This commit is contained in:
parent
5e0fbe1b63
commit
34e8200599
|
@ -1479,8 +1479,8 @@ static void si_llvm_emit_fs_epilogue(struct lp_build_tgsi_context * bld_base)
|
|||
/* Handle FS_COLOR0_WRITES_ALL_CBUFS. */
|
||||
if (shader->selector->info.properties[TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS] &&
|
||||
shader->output[i].sid == 0 &&
|
||||
si_shader_ctx->shader->key.ps.nr_cbufs > 1) {
|
||||
for (int c = 1; c < si_shader_ctx->shader->key.ps.nr_cbufs; c++) {
|
||||
si_shader_ctx->shader->key.ps.last_cbuf > 0) {
|
||||
for (int c = 1; c <= si_shader_ctx->shader->key.ps.last_cbuf; c++) {
|
||||
si_llvm_init_export_args_load(bld_base,
|
||||
si_shader_ctx->radeon_bld.soa.outputs[index],
|
||||
V_008DFC_SQ_EXP_MRT + c, args);
|
||||
|
|
|
@ -134,7 +134,7 @@ struct si_shader_selector {
|
|||
union si_shader_key {
|
||||
struct {
|
||||
unsigned export_16bpc:8;
|
||||
unsigned nr_cbufs:4;
|
||||
unsigned last_cbuf:3;
|
||||
unsigned color_two_side:1;
|
||||
unsigned alpha_func:3;
|
||||
unsigned flatshade:1;
|
||||
|
|
|
@ -2207,7 +2207,7 @@ static INLINE void si_shader_selector_key(struct pipe_context *ctx,
|
|||
}
|
||||
} else if (sel->type == PIPE_SHADER_FRAGMENT) {
|
||||
if (sel->info.properties[TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS])
|
||||
key->ps.nr_cbufs = sctx->framebuffer.state.nr_cbufs;
|
||||
key->ps.last_cbuf = MAX2(sctx->framebuffer.state.nr_cbufs, 1) - 1;
|
||||
key->ps.export_16bpc = sctx->framebuffer.export_16bpc;
|
||||
|
||||
if (sctx->queued.named.rasterizer) {
|
||||
|
|
Loading…
Reference in New Issue