mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 21:50:12 +01:00
intel/compiler/fs: Fix compilation of shaders with SHADER_OPCODE_SHUFFLE of float64 type
During the lower_regioning() optimization, required_exec_type() is returning BRW_REGISTER_TYPE_UQ type when processing SHADER_OPCODE_SHUFFLE instructions of type BRW_REGISTER_TYPE_DF but MTL has float64 support but lacks int64 support causing shader compilation to fail. To fix that we could make required_exec_type() return BRW_REGISTER_TYPE_DF in such case but SHADER_OPCODE_SHUFFLE virtual instruction runs in the integer pipeline(inferred_exec_pipe()). So here replacing the has_64bit check by has_64bit_int, this will properly handle older and newer cases making this function return BRW_REGISTER_TYPE_UD. Then lower_exec_type() will take care to generate 2 32bits operations to accomplish the same. While at it also dropping the 'devinfo->verx10 == 70' check as GFX7_FEATURES fall into the same category as MTL, has float64 but no int64 support. Fixes at least this crucible tests: func.uniform-subgroup.exclusive.fadd64.q0 func.uniform-subgroup.exclusive.fmin64.q0 func.uniform-subgroup.exclusive.fmax64.q0 Reviewed-by: Francisco Jerez <currojerez@riseup.net> Reviewed-by: Matt Turner <mattst88@gmail.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18577>
This commit is contained in:
parent
731116da1a
commit
daf0b67bc2
1 changed files with 1 additions and 1 deletions
|
|
@ -145,7 +145,7 @@ namespace {
|
|||
* Work around both of the above and handle platforms that
|
||||
* don't support 64-bit types at all.
|
||||
*/
|
||||
if ((!has_64bit || devinfo->verx10 == 70 ||
|
||||
if ((!devinfo->has_64bit_int ||
|
||||
devinfo->platform == INTEL_PLATFORM_CHV ||
|
||||
intel_device_info_is_9lp(devinfo)) && type_sz(t) > 4)
|
||||
return BRW_REGISTER_TYPE_UD;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue