turnip/ir3: handle image load/stores produced by AtomicLoad/Store
SpvOpAtomicLoad and SpvOpAtomicStore are translated into nir_intrinsic_image_deref_store/load instead of some separate atomic intrinsics, however they don't have src or dest type specified. Turnip doesn't support shaderImageFloat32Atomics so type is just integer. Fixes: dEQP-VK.memory_model.message_passing.core11.u32.coherent.fence_fence.atomicwrite.device.payload_local.image.guard_local.image.frag dEQP-VK.memory_model.message_passing.core11.u32.coherent.fence_fence.atomicwrite.workgroup.payload_local.buffer.guard_local.image.comp dEQP-VK.memory_model.write_after_read.core11.u32.coherent.fence_fence.atomicwrite.device.payload_local.buffer.guard_local.image.comp dEQP-VK.memory_model.write_after_read.core11.u32.coherent.fence_fence.atomicwrite.workgroup.payload_local.image.guard_local.image.comp dEQP-VK.memory_model.write_after_read.core11.u32.coherent.fence_fence.atomicwrite.workgroup.payload_nonlocal.workgroup.guard_local.image.comp Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8476>
This commit is contained in:

committed by
Marge Bot

parent
9c54928f77
commit
ad098553ee
@@ -25,11 +25,6 @@ dEQP-VK.image.subresource_layout.2d_array.all_levels.r8_snorm,Fail
|
||||
dEQP-VK.image.subresource_layout.3d.2_levels.r16g16_snorm,Fail
|
||||
dEQP-VK.image.subresource_layout.3d.2_levels.r8g8b8a8_snorm,Fail
|
||||
dEQP-VK.image.subresource_layout.3d.4_levels.r8g8_snorm,Fail
|
||||
dEQP-VK.memory_model.message_passing.core11.u32.coherent.fence_fence.atomicwrite.device.payload_local.image.guard_local.image.frag,Crash
|
||||
dEQP-VK.memory_model.message_passing.core11.u32.coherent.fence_fence.atomicwrite.workgroup.payload_local.buffer.guard_local.image.comp,Crash
|
||||
dEQP-VK.memory_model.write_after_read.core11.u32.coherent.fence_fence.atomicwrite.device.payload_local.buffer.guard_local.image.comp,Crash
|
||||
dEQP-VK.memory_model.write_after_read.core11.u32.coherent.fence_fence.atomicwrite.workgroup.payload_local.image.guard_local.image.comp,Crash
|
||||
dEQP-VK.memory_model.write_after_read.core11.u32.coherent.fence_fence.atomicwrite.workgroup.payload_nonlocal.workgroup.guard_local.image.comp,Crash
|
||||
dEQP-VK.multiview.masks.max_multi_view_view_count,Fail
|
||||
dEQP-VK.multiview.renderpass2.masks.max_multi_view_view_count,Fail
|
||||
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.depth_compare_greater_equal_greater,Fail
|
||||
|
@@ -119,11 +119,17 @@ ir3_get_type_for_image_intrinsic(const nir_intrinsic_instr *instr)
|
||||
case nir_intrinsic_image_load:
|
||||
case nir_intrinsic_bindless_image_load:
|
||||
type = nir_alu_type_get_base_type(nir_intrinsic_dest_type(instr));
|
||||
/* SpvOpAtomicLoad doesn't have dest type */
|
||||
if (type == nir_type_invalid)
|
||||
type = nir_type_uint;
|
||||
break;
|
||||
|
||||
case nir_intrinsic_image_store:
|
||||
case nir_intrinsic_bindless_image_store:
|
||||
type = nir_alu_type_get_base_type(nir_intrinsic_src_type(instr));
|
||||
/* SpvOpAtomicStore doesn't have src type */
|
||||
if (type == nir_type_invalid)
|
||||
type = nir_type_uint;
|
||||
break;
|
||||
|
||||
case nir_intrinsic_image_atomic_add:
|
||||
|
Reference in New Issue
Block a user