From 9d5b4a4ffdc2afa68afc6fe962003d13ae16099c Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Wed, 24 Apr 2024 09:26:21 -0500 Subject: [PATCH] intel/kernel: Use the new capabilities struct MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Alyssa Rosenzweig Reviewed-by: Iván Briano Acked-By: Mike Blumenkrantz Part-of: --- src/intel/compiler/brw_kernel.c | 86 +++++++++++++-------------------- src/intel/compiler/intel_clc.c | 50 +++++++++---------- 2 files changed, 59 insertions(+), 77 deletions(-) diff --git a/src/intel/compiler/brw_kernel.c b/src/intel/compiler/brw_kernel.c index 6548b451898..92ef3a180f9 100644 --- a/src/intel/compiler/brw_kernel.c +++ b/src/intel/compiler/brw_kernel.c @@ -30,6 +30,7 @@ #include "nir_clc_helpers.h" #include "compiler/nir/nir_builder.h" #include "compiler/spirv/nir_spirv.h" +#include "compiler/spirv/spirv_info.h" #include "dev/intel_debug.h" #include "util/u_atomic.h" #include "util/u_dynarray.h" @@ -240,6 +241,37 @@ lower_kernel_intrinsics(nir_shader *nir) return progress; } +static const struct spirv_capabilities spirv_caps = { + .Addresses = true, + .Float16 = true, + .Float64 = true, + .Groups = true, + .StorageImageWriteWithoutFormat = true, + .Int8 = true, + .Int16 = true, + .Int64 = true, + .Int64Atomics = true, + .Kernel = true, + .Linkage = true, /* We receive linked kernel from clc */ + .DenormFlushToZero = true, + .DenormPreserve = true, + .SignedZeroInfNanPreserve = true, + .RoundingModeRTE = true, + .RoundingModeRTZ = true, + .GenericPointer = true, + .GroupNonUniform = true, + .GroupNonUniformArithmetic = true, + .GroupNonUniformClustered = true, + .GroupNonUniformBallot = true, + .GroupNonUniformQuad = true, + .GroupNonUniformShuffle = true, + .GroupNonUniformVote = true, + .SubgroupDispatch = true, + + .SubgroupShuffleINTEL = true, + .SubgroupBufferBlockIOINTEL = true, +}; + bool brw_kernel_from_spirv(struct brw_compiler *compiler, struct disk_cache *disk_cache, @@ -255,33 +287,7 @@ brw_kernel_from_spirv(struct brw_compiler *compiler, struct spirv_to_nir_options spirv_options = { .environment = NIR_SPIRV_OPENCL, - .caps = { - .address = true, - .float16 = true, - .float64 = true, - .groups = true, - .image_write_without_format = true, - .int8 = true, - .int16 = true, - .int64 = true, - .int64_atomics = true, - .kernel = true, - .linkage = true, /* We receive linked kernel from clc */ - .float_controls = true, - .generic_pointers = true, - .storage_8bit = true, - .storage_16bit = true, - .subgroup_arithmetic = true, - .subgroup_basic = true, - .subgroup_ballot = true, - .subgroup_dispatch = true, - .subgroup_quad = true, - .subgroup_shuffle = true, - .subgroup_vote = true, - - .intel_subgroup_shuffle = true, - .intel_subgroup_buffer_block_io = true, - }, + .capabilities = &spirv_caps, .shared_addr_format = nir_address_format_62bit_generic, .global_addr_format = nir_address_format_62bit_generic, .temp_addr_format = nir_address_format_62bit_generic, @@ -593,31 +599,7 @@ brw_nir_from_spirv(void *mem_ctx, unsigned gfx_version, const uint32_t *spirv, { struct spirv_to_nir_options spirv_options = { .environment = NIR_SPIRV_OPENCL, - .caps = { - .address = true, - .groups = true, - .image_write_without_format = true, - .int8 = true, - .int16 = true, - .int64 = true, - .int64_atomics = true, - .kernel = true, - .linkage = true, /* We receive linked kernel from clc */ - .float_controls = true, - .generic_pointers = true, - .storage_8bit = true, - .storage_16bit = true, - .subgroup_arithmetic = true, - .subgroup_basic = true, - .subgroup_ballot = true, - .subgroup_dispatch = true, - .subgroup_quad = true, - .subgroup_shuffle = true, - .subgroup_vote = true, - - .intel_subgroup_shuffle = true, - .intel_subgroup_buffer_block_io = true, - }, + .capabilities = &spirv_caps, .shared_addr_format = nir_address_format_62bit_generic, .global_addr_format = nir_address_format_62bit_generic, .temp_addr_format = nir_address_format_62bit_generic, diff --git a/src/intel/compiler/intel_clc.c b/src/intel/compiler/intel_clc.c index 8bfe91b708e..31cc820239f 100644 --- a/src/intel/compiler/intel_clc.c +++ b/src/intel/compiler/intel_clc.c @@ -27,6 +27,7 @@ #include "compiler/clc/clc.h" #include "compiler/glsl_types.h" #include "compiler/nir/nir_serialize.h" +#include "compiler/spirv/spirv_info.h" #include "dev/intel_debug.h" #include "util/build_id.h" #include "util/disk_cache.h" @@ -318,33 +319,32 @@ struct intel_clc_params { static int output_nir(const struct intel_clc_params *params, struct clc_binary *binary) { + const struct spirv_capabilities spirv_caps = { + .Addresses = true, + .Groups = true, + .StorageImageWriteWithoutFormat = true, + .Int8 = true, + .Int16 = true, + .Int64 = true, + .Int64Atomics = true, + .Kernel = true, + .Linkage = true, /* We receive linked kernel from clc */ + .GenericPointer = true, + .GroupNonUniform = true, + .GroupNonUniformArithmetic = true, + .GroupNonUniformBallot = true, + .GroupNonUniformQuad = true, + .GroupNonUniformShuffle = true, + .GroupNonUniformVote = true, + .SubgroupDispatch = true, + + .SubgroupShuffleINTEL = true, + .SubgroupBufferBlockIOINTEL = true, + }; + struct spirv_to_nir_options spirv_options = { .environment = NIR_SPIRV_OPENCL, - .caps = { - .address = true, - .groups = true, - .image_write_without_format = true, - .int8 = true, - .int16 = true, - .int64 = true, - .int64_atomics = true, - .kernel = true, - .linkage = true, /* We receive linked kernel from clc */ - .float_controls = true, - .generic_pointers = true, - .storage_8bit = true, - .storage_16bit = true, - .subgroup_arithmetic = true, - .subgroup_basic = true, - .subgroup_ballot = true, - .subgroup_dispatch = true, - .subgroup_quad = true, - .subgroup_shuffle = true, - .subgroup_vote = true, - - .intel_subgroup_shuffle = true, - .intel_subgroup_buffer_block_io = true, - }, + .capabilities = &spirv_caps, .shared_addr_format = nir_address_format_62bit_generic, .global_addr_format = nir_address_format_62bit_generic, .temp_addr_format = nir_address_format_62bit_generic,