diff options
Diffstat (limited to 'src/compiler/glsl')
-rw-r--r-- | src/compiler/glsl/ast_to_hir.cpp | 3 | ||||
-rw-r--r-- | src/compiler/glsl/glsl_to_nir.cpp | 6 | ||||
-rw-r--r-- | src/compiler/glsl/ir_clone.cpp | 3 | ||||
-rw-r--r-- | src/compiler/glsl/link_uniform_initializers.cpp | 3 | ||||
-rw-r--r-- | src/compiler/glsl/lower_buffer_access.cpp | 3 |
5 files changed, 14 insertions, 4 deletions
diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index 5cdeb94720b..7abb8199e1e 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -1108,12 +1108,15 @@ do_comparison(void *mem_ctx, int operation, ir_rvalue *op0, ir_rvalue *op1) switch (op0->type->base_type) { case GLSL_TYPE_FLOAT: + case GLSL_TYPE_FLOAT16: case GLSL_TYPE_UINT: case GLSL_TYPE_INT: case GLSL_TYPE_BOOL: case GLSL_TYPE_DOUBLE: case GLSL_TYPE_UINT64: case GLSL_TYPE_INT64: + case GLSL_TYPE_UINT16: + case GLSL_TYPE_INT16: return new(mem_ctx) ir_expression(operation, op0, op1); case GLSL_TYPE_ARRAY: { diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index d327f52be60..67f15977ee5 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -1378,13 +1378,15 @@ nir_visitor::evaluate_rvalue(ir_rvalue* ir) static bool type_is_float(glsl_base_type type) { - return type == GLSL_TYPE_FLOAT || type == GLSL_TYPE_DOUBLE; + return type == GLSL_TYPE_FLOAT || type == GLSL_TYPE_DOUBLE || + type == GLSL_TYPE_FLOAT16; } static bool type_is_signed(glsl_base_type type) { - return type == GLSL_TYPE_INT || type == GLSL_TYPE_INT64; + return type == GLSL_TYPE_INT || type == GLSL_TYPE_INT64 || + type == GLSL_TYPE_INT16; } void diff --git a/src/compiler/glsl/ir_clone.cpp b/src/compiler/glsl/ir_clone.cpp index 12135070892..f088b6aebd5 100644 --- a/src/compiler/glsl/ir_clone.cpp +++ b/src/compiler/glsl/ir_clone.cpp @@ -337,10 +337,13 @@ ir_constant::clone(void *mem_ctx, struct hash_table *ht) const case GLSL_TYPE_UINT: case GLSL_TYPE_INT: case GLSL_TYPE_FLOAT: + case GLSL_TYPE_FLOAT16: case GLSL_TYPE_DOUBLE: case GLSL_TYPE_BOOL: case GLSL_TYPE_UINT64: case GLSL_TYPE_INT64: + case GLSL_TYPE_UINT16: + case GLSL_TYPE_INT16: case GLSL_TYPE_SAMPLER: case GLSL_TYPE_IMAGE: return new(mem_ctx) ir_constant(this->type, &this->value); diff --git a/src/compiler/glsl/link_uniform_initializers.cpp b/src/compiler/glsl/link_uniform_initializers.cpp index f70d9100e12..be3715cc1a3 100644 --- a/src/compiler/glsl/link_uniform_initializers.cpp +++ b/src/compiler/glsl/link_uniform_initializers.cpp @@ -81,6 +81,9 @@ copy_constant_to_storage(union gl_constant_value *storage, case GLSL_TYPE_SUBROUTINE: case GLSL_TYPE_FUNCTION: case GLSL_TYPE_ERROR: + case GLSL_TYPE_UINT16: + case GLSL_TYPE_INT16: + case GLSL_TYPE_FLOAT16: /* All other types should have already been filtered by other * paths in the caller. */ 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 = |