On Fri, Feb 22, 2013 at 05:02:37PM +0100, Michel Dänzer wrote: > From: Michel Dänzer <michel.daen...@amd.com> > > The number of coordinates to pack will be useful for other address parameters > as well. > > Signed-off-by: Michel Dänzer <michel.daen...@amd.com>
These patches depend on LLVM changes, and I would like to track this somehow. Do you have an ideas for how to do this? My suggestion is to add a file called LLVM_REVISION.txt in the radeonsi directory that we use to record the llvm commit that mesa changes depend on. -Tom > --- > src/gallium/drivers/radeonsi/radeonsi_shader.c | 54 > +++++++++++++++----------- > 1 file changed, 32 insertions(+), 22 deletions(-) > > diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c > b/src/gallium/drivers/radeonsi/radeonsi_shader.c > index 7922928..b5925b5 100644 > --- a/src/gallium/drivers/radeonsi/radeonsi_shader.c > +++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c > @@ -830,6 +830,7 @@ static void tex_fetch_args( > LLVMValueRef offset; > LLVMValueRef coords[4]; > LLVMValueRef address[16]; > + unsigned num_coords; > unsigned count = 0; > unsigned chan; > > @@ -837,6 +838,35 @@ static void tex_fetch_args( > /* XXX: should be optimized using > emit_data->inst->Dst[0].Register.WriteMask*/ > emit_data->args[0] = lp_build_const_int32(bld_base->base.gallivm, 0xf); > > + switch (target) { > + case TGSI_TEXTURE_1D: > + case TGSI_TEXTURE_1D_ARRAY: > + case TGSI_TEXTURE_SHADOW1D: > + case TGSI_TEXTURE_SHADOW1D_ARRAY: > + num_coords = 1; > + break; > + case TGSI_TEXTURE_2D: > + case TGSI_TEXTURE_2D_ARRAY: > + case TGSI_TEXTURE_2D_ARRAY_MSAA: > + case TGSI_TEXTURE_2D_MSAA: > + case TGSI_TEXTURE_RECT: > + case TGSI_TEXTURE_SHADOW2D: > + case TGSI_TEXTURE_SHADOW2D_ARRAY: > + case TGSI_TEXTURE_SHADOWRECT: > + num_coords = 2; > + break; > + case TGSI_TEXTURE_3D: > + case TGSI_TEXTURE_CUBE: > + case TGSI_TEXTURE_CUBE_ARRAY: > + case TGSI_TEXTURE_SHADOWCUBE: > + case TGSI_TEXTURE_SHADOWCUBE_ARRAY: > + num_coords = 3; > + break; > + default: > + assert(!"Unknown texture target"); > + num_coords = 0; > + } > + > /* Fetch and project texture coordinates */ > coords[3] = lp_build_emit_fetch(bld_base, emit_data->inst, 0, > TGSI_CHAN_W); > for (chan = 0; chan < 3; chan++ ) { > @@ -879,30 +909,10 @@ static void tex_fetch_args( > > /* Pack texture coordinates */ > address[count++] = coords[0]; > - switch (target) { > - case TGSI_TEXTURE_2D: > - case TGSI_TEXTURE_2D_ARRAY: > - case TGSI_TEXTURE_3D: > - case TGSI_TEXTURE_CUBE: > - case TGSI_TEXTURE_RECT: > - case TGSI_TEXTURE_SHADOW2D: > - case TGSI_TEXTURE_SHADOWRECT: > - case TGSI_TEXTURE_SHADOW2D_ARRAY: > - case TGSI_TEXTURE_SHADOWCUBE: > - case TGSI_TEXTURE_2D_MSAA: > - case TGSI_TEXTURE_2D_ARRAY_MSAA: > - case TGSI_TEXTURE_CUBE_ARRAY: > - case TGSI_TEXTURE_SHADOWCUBE_ARRAY: > + if (num_coords > 1) > address[count++] = coords[1]; > - } > - switch (target) { > - case TGSI_TEXTURE_3D: > - case TGSI_TEXTURE_CUBE: > - case TGSI_TEXTURE_SHADOWCUBE: > - case TGSI_TEXTURE_CUBE_ARRAY: > - case TGSI_TEXTURE_SHADOWCUBE_ARRAY: > + if (num_coords > 2) > address[count++] = coords[2]; > - } > > /* Pack array slice */ > switch (target) { > -- > 1.8.1.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev