diff options
author | Eric Anholt <[email protected]> | 2019-05-14 17:18:40 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2019-06-04 16:44:24 -0700 |
commit | 8843b90cacc3546c6cb4a6e49daec4117649f1bf (patch) | |
tree | 6f1da2789fb6cee66788bd61557ce118f9eb6593 /src/freedreno | |
parent | fb872748ec63f26213ca2021846c4c3a1c6ab1a8 (diff) |
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 <[email protected]>
Diffstat (limited to 'src/freedreno')
-rw-r--r-- | src/freedreno/ir3/ir3_image.c | 30 |
1 files changed, 5 insertions, 25 deletions
diff --git a/src/freedreno/ir3/ir3_image.c b/src/freedreno/ir3/ir3_image.c index 835b5381d23..bb852dc25f5 100644 --- a/src/freedreno/ir3/ir3_image.c +++ b/src/freedreno/ir3/ir3_image.c @@ -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; - - 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: + unsigned coords = glsl_get_sampler_coordinate_components(type); + unsigned flags = 0; + + 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; |