diff options
author | Dave Airlie <[email protected]> | 2017-08-01 05:10:49 +0100 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2017-08-02 00:12:01 +0100 |
commit | cb6f16dce90b4737f62588f8ea5083ee6544787e (patch) | |
tree | f950568eda3a9e996d7ef2390048dbf7f32a7de4 /src/gallium/drivers/radeonsi/si_shader.c | |
parent | 35338a242bbe72bbd75082917f36ffb991be9a62 (diff) |
radeon/ac: use ds_swizzle for derivs on si/cik.
This looks like it's supported since llvm 3.9 at least,
so switch over radeonsi and radv to using it, -pro also
uses this. We can now drop creating lds for these operations
as the ds_swizzle operation doesn't actually write to lds at all.
Acked-by: Marek Olšák <[email protected]>
(stable requested due to fixing radv CIK conformance tests)
Cc: [email protected]
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_shader.c')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_shader.c | 16 |
1 files changed, 1 insertions, 15 deletions
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 628e6f80d3f..09053c355eb 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -3591,7 +3591,7 @@ static void si_llvm_emit_ddxy( val = LLVMBuildBitCast(gallivm->builder, emit_data->args[0], ctx->i32, ""); val = ac_build_ddxy(&ctx->ac, ctx->screen->has_ds_bpermute, - mask, idx, ctx->lds, val); + mask, idx, val); emit_data->output[emit_data->chan] = val; } @@ -4635,20 +4635,6 @@ static void create_function(struct si_shader_context *ctx) assert(shader->info.num_input_vgprs >= num_prolog_vgprs); shader->info.num_input_vgprs -= num_prolog_vgprs; - if (!ctx->screen->has_ds_bpermute && - bld_base->info && - (bld_base->info->opcode_count[TGSI_OPCODE_DDX] > 0 || - bld_base->info->opcode_count[TGSI_OPCODE_DDY] > 0 || - bld_base->info->opcode_count[TGSI_OPCODE_DDX_FINE] > 0 || - bld_base->info->opcode_count[TGSI_OPCODE_DDY_FINE] > 0 || - bld_base->info->opcode_count[TGSI_OPCODE_INTERP_OFFSET] > 0 || - bld_base->info->opcode_count[TGSI_OPCODE_INTERP_SAMPLE] > 0)) - ctx->lds = - LLVMAddGlobalInAddressSpace(gallivm->module, - LLVMArrayType(ctx->i32, 64), - "ddxy_lds", - LOCAL_ADDR_SPACE); - if (shader->key.as_ls || ctx->type == PIPE_SHADER_TESS_CTRL || /* GFX9 has the ESGS ring buffer in LDS. */ |