[Mesa-dev] [PATCH 1/7] glsl: Return correct number of coordinate components for cubemap array images.
Francisco Jerez
currojerez at riseup.net
Sat Jan 31 12:54:23 PST 2015
Cubemap array images are unlike cubemap array samplers in that they don't need
an additional coordinate to index individual cubemaps in the array, instead
they behave like a 2D array of 6n layers, with n the number of cubemaps in the
array. Take this exception into account.
---
src/glsl/glsl_types.cpp | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp
index b4223f4..61d785a 100644
--- a/src/glsl/glsl_types.cpp
+++ b/src/glsl/glsl_types.cpp
@@ -1225,8 +1225,13 @@ glsl_type::coordinate_components() const
break;
}
- /* Array textures need an additional component for the array index. */
- if (sampler_array)
+ /* Array textures need an additional component for the array index, */
+ if (sampler_array &&
+ /* except for cubemap array images that behave like a 2D array of
+ * interleaved cubemap faces.
+ */
+ !(base_type == GLSL_TYPE_IMAGE &&
+ sampler_dimensionality == GLSL_SAMPLER_DIM_CUBE))
size += 1;
return size;
--
2.1.3
More information about the mesa-dev
mailing list