freedreno: Reuse glsl_get_sampler_coordinate_components().

We have the GLSL type, so we can just ask it how many coordinates there
are.  The GLSL function already has Vulkan cases that we'd probably want
eventually.

Reviewed-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
Eric Anholt
2019-05-14 17:18:40 -07:00
parent fb872748ec
commit 8843b90cac

View File

@@ -120,34 +120,14 @@ unsigned
ir3_get_image_coords(const nir_variable *var, unsigned *flagsp)
{
const struct glsl_type *type = glsl_without_array(var->type);
unsigned coords, flags = 0;
unsigned coords = glsl_get_sampler_coordinate_components(type);
unsigned flags = 0;
switch (glsl_get_sampler_dim(type)) {
case GLSL_SAMPLER_DIM_1D:
case GLSL_SAMPLER_DIM_BUF:
coords = 1;
break;
case GLSL_SAMPLER_DIM_2D:
case GLSL_SAMPLER_DIM_RECT:
case GLSL_SAMPLER_DIM_EXTERNAL:
case GLSL_SAMPLER_DIM_MS:
coords = 2;
break;
case GLSL_SAMPLER_DIM_3D:
case GLSL_SAMPLER_DIM_CUBE:
if (coords == 3)
flags |= IR3_INSTR_3D;
coords = 3;
break;
default:
unreachable("bad sampler dim");
return 0;
}
if (glsl_sampler_type_is_array(type)) {
/* note: unlike tex_info(), adjust # of coords to include array idx: */
coords++;
if (glsl_sampler_type_is_array(type))
flags |= IR3_INSTR_A;
}
if (flagsp)
*flagsp = flags;