mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 00:20:09 +01:00
spirv: Handle doubles when multiplying a mat by a scalar
The code to handle mat multiplication by a scalar tries to pick either imul or fmul depending on whether the matrix is float or integer. However it was doing this by checking whether the base type is float. This was making it choose the int path for doubles (and presumably float16s). Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
1a0aba7216
commit
25a966a23d
1 changed files with 3 additions and 3 deletions
|
|
@ -142,10 +142,10 @@ mat_times_scalar(struct vtn_builder *b,
|
|||
{
|
||||
struct vtn_ssa_value *dest = vtn_create_ssa_value(b, mat->type);
|
||||
for (unsigned i = 0; i < glsl_get_matrix_columns(mat->type); i++) {
|
||||
if (glsl_get_base_type(mat->type) == GLSL_TYPE_FLOAT)
|
||||
dest->elems[i]->def = nir_fmul(&b->nb, mat->elems[i]->def, scalar);
|
||||
else
|
||||
if (glsl_base_type_is_integer(glsl_get_base_type(mat->type)))
|
||||
dest->elems[i]->def = nir_imul(&b->nb, mat->elems[i]->def, scalar);
|
||||
else
|
||||
dest->elems[i]->def = nir_fmul(&b->nb, mat->elems[i]->def, scalar);
|
||||
}
|
||||
|
||||
return dest;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue