On 30 August 2016 at 01:28, Marek Olšák <mar...@gmail.com> wrote: > From: Marek Olšák <marek.ol...@amd.com> > > Sometimes it was f32, other times it was i32. Now it's always i32.
I think this is pretty much what radv does in the same situation. Reviewed-by: Dave Airlie <airl...@redhat.com> > > This fixes: > GL45-CTS.texture_cube_map_array.image_texture_size.texture_size_compute_sh > --- > src/gallium/drivers/radeonsi/si_shader.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/src/gallium/drivers/radeonsi/si_shader.c > b/src/gallium/drivers/radeonsi/si_shader.c > index 6eca5cf..f8884ef 100644 > --- a/src/gallium/drivers/radeonsi/si_shader.c > +++ b/src/gallium/drivers/radeonsi/si_shader.c > @@ -4098,21 +4098,21 @@ static void atomic_emit( > > static void resq_fetch_args( > struct lp_build_tgsi_context * bld_base, > struct lp_build_emit_data * emit_data) > { > struct si_shader_context *ctx = si_shader_context(bld_base); > struct gallivm_state *gallivm = bld_base->base.gallivm; > const struct tgsi_full_instruction *inst = emit_data->inst; > const struct tgsi_full_src_register *reg = &inst->Src[0]; > > - emit_data->dst_type = LLVMVectorType(bld_base->base.elem_type, 4); > + emit_data->dst_type = ctx->v4i32; > > if (reg->Register.File == TGSI_FILE_BUFFER) { > emit_data->args[0] = shader_buffer_fetch_rsrc(ctx, reg); > emit_data->arg_count = 1; > } else if (inst->Memory.Texture == TGSI_TEXTURE_BUFFER) { > image_fetch_rsrc(bld_base, reg, false, &emit_data->args[0]); > emit_data->arg_count = 1; > } else { > emit_data->args[0] = bld_base->uint_bld.zero; /* mip level */ > image_fetch_rsrc(bld_base, reg, false, &emit_data->args[1]); > @@ -4149,23 +4149,21 @@ static void resq_emit( > builder, "llvm.SI.getresinfo.i32", > emit_data->dst_type, > emit_data->args, emit_data->arg_count, > LLVMReadNoneAttribute); > > /* Divide the number of layers by 6 to get the number of > cubes. */ > if (inst->Memory.Texture == TGSI_TEXTURE_CUBE_ARRAY) { > LLVMValueRef imm2 = lp_build_const_int32(gallivm, 2); > LLVMValueRef imm6 = lp_build_const_int32(gallivm, 6); > > LLVMValueRef z = LLVMBuildExtractElement(builder, > out, imm2, ""); > - z = LLVMBuildBitCast(builder, z, > bld_base->uint_bld.elem_type, ""); > z = LLVMBuildSDiv(builder, z, imm6, ""); > - z = LLVMBuildBitCast(builder, z, > bld_base->base.elem_type, ""); > out = LLVMBuildInsertElement(builder, out, z, imm2, > ""); > } > } > > emit_data->output[emit_data->chan] = out; > } > > static void set_tex_fetch_args(struct si_shader_context *ctx, > struct lp_build_emit_data *emit_data, > unsigned opcode, unsigned target, > -- > 2.7.4 > > _______________________________________________ > 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