glsl/types: fix dword slots calc for float16 matricies.
authorDave Airlie <airlied@redhat.com>
Tue, 1 Feb 2022 07:49:25 +0000 (17:49 +1000)
committerMarge Bot <emma+marge@anholt.net>
Sun, 23 Oct 2022 01:43:44 +0000 (01:43 +0000)
The current uniform query uploader for mat3 calcs things as
if the vector elements are f16vec4 wide, so fix the calcs
here to do the same.

Fixes GTF-GL46.gtf21.GL.mat3.mat3arraysimple_frag on llvmpipe
when 16-bit uniform lowering is allowed.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14817>

src/compiler/glsl_types.cpp

index c890928..63190ee 100644 (file)
@@ -2968,7 +2968,7 @@ glsl_type::count_dword_slots(bool is_bindless) const
    case GLSL_TYPE_UINT16:
    case GLSL_TYPE_INT16:
    case GLSL_TYPE_FLOAT16:
-      return DIV_ROUND_UP(this->components(), 2);
+      return DIV_ROUND_UP(this->vector_elements, 2) * this->matrix_columns;
    case GLSL_TYPE_UINT8:
    case GLSL_TYPE_INT8:
       return DIV_ROUND_UP(this->components(), 4);