Mesa (master): spirv: Calculate properly 16-bit vector sizes

Jason Ekstrand jekstrand at kemper.freedesktop.org
Thu Mar 1 06:15:02 UTC 2018


Module: Mesa
Branch: master
Commit: 23ffb7c2d17f0268b209782a46e6cb838bd63585
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=23ffb7c2d17f0268b209782a46e6cb838bd63585

Author: Jose Maria Casanova Crespo <jmcasanova at igalia.com>
Date:   Thu Feb 22 17:36:37 2018 +0100

spirv: Calculate properly 16-bit vector sizes

Range in 16-bit push constants load was being calculated
wrongly using 4-bytes per element instead of 2-bytes as it
should be.

v2: Use glsl_get_bit_size instead of if statement
    (Jason Ekstrand)

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

---

 src/compiler/spirv/vtn_variables.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index 9eb85c24e9..105b33a567 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -683,12 +683,9 @@ vtn_type_block_size(struct vtn_builder *b, struct vtn_type *type)
       if (cols > 1) {
          vtn_assert(type->stride > 0);
          return type->stride * cols;
-      } else if (base_type == GLSL_TYPE_DOUBLE ||
-		 base_type == GLSL_TYPE_UINT64 ||
-		 base_type == GLSL_TYPE_INT64) {
-         return glsl_get_vector_elements(type->type) * 8;
       } else {
-         return glsl_get_vector_elements(type->type) * 4;
+         unsigned type_size = glsl_get_bit_size(type->type) / 8;
+         return glsl_get_vector_elements(type->type) * type_size;
       }
    }
 




More information about the mesa-commit mailing list