For the series: Reviewed-by: Marek Olšák <marek.ol...@amd.com>
Marek On Thu, Mar 30, 2017 at 7:58 PM, Samuel Pitoiset <samuel.pitoi...@gmail.com> wrote: > Similar to load_sampler_desc(). Same deal for bindless. > > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > --- > src/gallium/drivers/radeonsi/si_shader.c | 45 > +++++++++++++++++--------------- > 1 file changed, 24 insertions(+), 21 deletions(-) > > diff --git a/src/gallium/drivers/radeonsi/si_shader.c > b/src/gallium/drivers/radeonsi/si_shader.c > index cf725cebd8..6b02d61e17 100644 > --- a/src/gallium/drivers/radeonsi/si_shader.c > +++ b/src/gallium/drivers/radeonsi/si_shader.c > @@ -3230,6 +3230,24 @@ static LLVMTypeRef const_array(LLVMTypeRef elem_type, > int num_elements) > CONST_ADDR_SPACE); > } > > +static LLVMValueRef load_image_desc(struct si_shader_context *ctx, > + LLVMValueRef list, LLVMValueRef index, > + unsigned target) > +{ > + LLVMBuilderRef builder = ctx->gallivm.builder; > + > + if (target == TGSI_TEXTURE_BUFFER) { > + index = LLVMBuildMul(builder, index, > + LLVMConstInt(ctx->i32, 2, 0), ""); > + index = LLVMBuildAdd(builder, index, > + LLVMConstInt(ctx->i32, 1, 0), ""); > + list = LLVMBuildPointerCast(builder, list, > + const_array(ctx->v4i32, 0), ""); > + } > + > + return ac_build_indexed_load_const(&ctx->ac, list, index); > +} > + > /** > * Load the resource descriptor for \p image. > */ > @@ -3243,8 +3261,8 @@ image_fetch_rsrc( > struct si_shader_context *ctx = si_shader_context(bld_base); > LLVMValueRef rsrc_ptr = LLVMGetParam(ctx->main_fn, > SI_PARAM_IMAGES); > - LLVMValueRef index, tmp; > - bool dcc_off = target != TGSI_TEXTURE_BUFFER && is_store; > + LLVMValueRef index; > + bool dcc_off = is_store; > > assert(image->Register.File == TGSI_FILE_IMAGE); > > @@ -3255,8 +3273,7 @@ image_fetch_rsrc( > > index = LLVMConstInt(ctx->i32, image->Register.Index, 0); > > - if (images_writemask & (1 << image->Register.Index) && > - target != TGSI_TEXTURE_BUFFER) > + if (images_writemask & (1 << image->Register.Index)) > dcc_off = true; > } else { > /* From the GL_ARB_shader_image_load_store extension spec: > @@ -3273,23 +3290,9 @@ image_fetch_rsrc( > SI_NUM_IMAGES); > } > > - if (target == TGSI_TEXTURE_BUFFER) { > - LLVMBuilderRef builder = ctx->gallivm.builder; > - > - rsrc_ptr = LLVMBuildPointerCast(builder, rsrc_ptr, > - const_array(ctx->v4i32, 0), > ""); > - index = LLVMBuildMul(builder, index, > - LLVMConstInt(ctx->i32, 2, 0), ""); > - index = LLVMBuildAdd(builder, index, > - LLVMConstInt(ctx->i32, 1, 0), ""); > - *rsrc = ac_build_indexed_load_const(&ctx->ac, rsrc_ptr, > index); > - return; > - } > - > - tmp = ac_build_indexed_load_const(&ctx->ac, rsrc_ptr, index); > - if (dcc_off) > - tmp = force_dcc_off(ctx, tmp); > - *rsrc = tmp; > + *rsrc = load_image_desc(ctx, rsrc_ptr, index, target); > + if (dcc_off && target != TGSI_TEXTURE_BUFFER) > + *rsrc = force_dcc_off(ctx, *rsrc); > } > > static LLVMValueRef image_fetch_coords( > -- > 2.12.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev