intel/compiler: fix loading of draw_id from task & mesh payload
authorMarcin Ślusarz <marcin.slusarz@intel.com>
Thu, 29 Sep 2022 14:47:32 +0000 (16:47 +0200)
committerMarge Bot <emma+marge@anholt.net>
Thu, 29 Sep 2022 17:17:25 +0000 (17:17 +0000)
Previously both destination and source were floats, so no casting was
performed, but with 7664c85b1da source register was reinterpreted as
unsigned integer, so MOV started casting that integer to float.

Fixes: 7664c85b1da ("intel/compiler: Create and use struct for TASK and MESH thread payloads")
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18886>

src/intel/compiler/brw_mesh.cpp

index f4aaa5b..dfae5ce 100644 (file)
@@ -1260,6 +1260,7 @@ fs_visitor::nir_emit_task_mesh_intrinsic(const fs_builder &bld,
    }
 
    case nir_intrinsic_load_draw_id:
+      dest = retype(dest, BRW_REGISTER_TYPE_UD);
       bld.MOV(dest, payload.extended_parameter_0);
       break;