From: Dave Airlie <airl...@redhat.com> Don't apply this until we have a lot more tests passing
this disables SB for barrier usage (as those will be a lot of "fun") --- src/gallium/drivers/r600/r600_shader.c | 11 ++++------- src/gallium/drivers/r600/r600_shader.h | 1 + 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 773eb079d2..ceb770a01f 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -183,18 +183,14 @@ int r600_pipe_shader_create(struct pipe_context *ctx, R600_ERR("translation from TGSI failed !\n"); goto error; } - if (shader->shader.processor_type == PIPE_SHADER_VERTEX) { - /* only disable for vertex shaders in tess paths */ - if (key.vs.as_ls) - use_sb = 0; - } - use_sb &= (shader->shader.processor_type != PIPE_SHADER_TESS_CTRL); - use_sb &= (shader->shader.processor_type != PIPE_SHADER_TESS_EVAL); use_sb &= (shader->shader.processor_type != PIPE_SHADER_COMPUTE); /* disable SB for shaders using doubles */ use_sb &= !shader->shader.uses_doubles; + /* disable SB for barriers */ + use_sb &= !shader->shader.uses_barrier; + use_sb &= !shader->shader.uses_atomics; use_sb &= !shader->shader.uses_images; @@ -3124,6 +3120,7 @@ static int r600_shader_from_tgsi(struct r600_context *rctx, shader->uses_atomics = ctx.info.file_mask[TGSI_FILE_HW_ATOMIC]; shader->nsys_inputs = 0; + shader->uses_barrier = ctx.info.opcode_count[TGSI_OPCODE_BARRIER] + ctx.info.opcode_count[TGSI_OPCODE_MEMBAR]; shader->uses_images = ctx.info.file_count[TGSI_FILE_IMAGE] > 0 || ctx.info.file_count[TGSI_FILE_BUFFER] > 0; indirect_gprs = ctx.info.indirect_files & ~((1 << TGSI_FILE_CONSTANT) | (1 << TGSI_FILE_SAMPLER)); diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h index 8444907883..ad65055295 100644 --- a/src/gallium/drivers/r600/r600_shader.h +++ b/src/gallium/drivers/r600/r600_shader.h @@ -119,6 +119,7 @@ struct r600_shader { boolean uses_doubles; boolean uses_atomics; boolean uses_images; + boolean uses_barrier; uint8_t atomic_base; uint8_t rat_base; uint8_t image_size_const_offset; -- 2.14.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev