summaryrefslogtreecommitdiffstats
path: root/src/compiler/glsl/lower_buffer_access.cpp
diff options
context:
space:
mode:
authorEduardo Lima Mitev <[email protected]>2017-07-01 07:46:41 +0200
committerJose Maria Casanova Crespo <[email protected]>2017-12-06 08:57:18 +0100
commit59f458cd8703b97b31b826499f01fcc9a30cd606 (patch)
tree73319583582ec9d3830da2c32f554816a7c86e67 /src/compiler/glsl/lower_buffer_access.cpp
parent8761a04d0d9332d9c0c99164faf855fc3c741f7c (diff)
glsl: Add 16-bit types
Adds new INT16, UINT16 and FLOAT16 base types. The corresponding GL types for half floats were reused from the AMD_gpu_shader_half_float extension. The int16 and uint16 types come from NV_gpu_shader_5 extension. This adds the builtins and the lexer support. To avoid a bunch of warnings due to cases not handled in switch, the new types have been added to a few places using same behavior as their 32-bit counterparts, except for a few trivial cases where they are already handled properly. Subsequent patches in this set will provide correct 16-bit implementations when needed. v2: * Use FLOAT16 instead of HALF_FLOAT as name of the base type. * Removed float16_t from builtin types. * Don't copy 16-bit types as if they were 32-bit values in copy_constant_to_storage(). * Use get_scalar_type() instead of adding a new custom switch statement. (Jason Ekstrand) v3: Use GL_FLOAT16_NV instead of GL_HALF_FLOAT for consistency (Ilia Mirkin) v4: Add missing 16-bit base types support in glsl_to_nir (Eduardo Lima). v5: Fix coding style (Topi Poholainen). Signed-off-by: Jose Maria Casanova Crespo <[email protected]> Signed-off-by: Eduardo Lima <[email protected]> Signed-off-by: Alejandro Piñeiro <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/compiler/glsl/lower_buffer_access.cpp')
-rw-r--r--src/compiler/glsl/lower_buffer_access.cpp3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/compiler/glsl/lower_buffer_access.cpp b/src/compiler/glsl/lower_buffer_access.cpp
index fa6e5f5c066..db6e8e367b7 100644
--- a/src/compiler/glsl/lower_buffer_access.cpp
+++ b/src/compiler/glsl/lower_buffer_access.cpp
@@ -144,8 +144,7 @@ lower_buffer_access::emit_access(void *mem_ctx,
const unsigned matrix_stride =
link_calculate_matrix_stride(matrix_type, row_major, packing);
- const glsl_type *deref_type = deref->type->is_float() ?
- glsl_type::float_type : glsl_type::double_type;
+ const glsl_type *deref_type = deref->type->get_scalar_type();
for (unsigned i = 0; i < deref->type->vector_elements; i++) {
ir_rvalue *chan_offset =