spirv: Get rid of the old caps struct

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Iván Briano <ivan.briano@intel.com>
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28905>
This commit is contained in:
Faith Ekstrand 2024-04-24 09:58:14 -05:00 committed by Marge Bot
parent e80d52223e
commit 69b0ee7b6c
4 changed files with 4 additions and 254 deletions

View File

@ -37,96 +37,6 @@ extern "C" {
#define MAX_XFB_BUFFERS 4
#define MAX_INLINABLE_UNIFORMS 4
struct spirv_supported_capabilities {
bool address;
bool amd_fragment_mask;
bool amd_image_gather_bias_lod;
bool amd_image_read_write_lod;
bool atomic_storage;
bool cooperative_matrix;
bool demote_to_helper_invocation;
bool derivative_group;
bool descriptor_array_dynamic_indexing;
bool descriptor_array_non_uniform_indexing;
bool descriptor_indexing;
bool device_group;
bool draw_parameters;
bool float_controls;
bool float_controls2;
bool float16_atomic_add;
bool float16_atomic_min_max;
bool float16;
bool float32_atomic_add;
bool float32_atomic_min_max;
bool float64_atomic_add;
bool float64_atomic_min_max;
bool float64;
bool fragment_barycentric;
bool fragment_density;
bool fragment_fully_covered;
bool fragment_shader_pixel_interlock;
bool fragment_shader_sample_interlock;
bool fragment_shading_rate;
bool generic_pointers;
bool geometry_streams;
bool groups;
bool image_atomic_int64;
bool image_ms_array;
bool image_read_without_format;
bool image_write_without_format;
bool int16;
bool int64_atomics;
bool int64;
bool int8;
bool integer_functions2;
bool kernel_image_read_write;
bool kernel_image;
bool kernel;
bool linkage;
bool literal_sampler;
bool mesh_shading_nv;
bool mesh_shading;
bool min_lod;
bool multiview;
bool per_view_attributes_nv;
bool physical_storage_buffer_address;
bool post_depth_coverage;
bool quad_control;
bool ray_cull_mask;
bool ray_query;
bool ray_tracing;
bool ray_traversal_primitive_culling;
bool ray_tracing_position_fetch;
bool runtime_descriptor_array;
bool shader_clock;
bool shader_enqueue;
bool shader_sm_builtins_nv;
bool shader_viewport_index_layer;
bool shader_viewport_mask_nv;
bool sparse_residency;
bool stencil_export;
bool storage_16bit;
bool storage_8bit;
bool storage_image_ms;
bool subgroup_arithmetic;
bool subgroup_ballot;
bool subgroup_basic;
bool subgroup_dispatch;
bool subgroup_quad;
bool subgroup_rotate;
bool subgroup_shuffle;
bool subgroup_vote;
bool tessellation;
bool transform_feedback;
bool variable_pointers;
bool vk_memory_model_device_scope;
bool vk_memory_model;
bool workgroup_memory_explicit_layout;
bool intel_subgroup_shuffle;
bool intel_subgroup_buffer_block_io;
};
typedef struct shader_info {
const char *name;

View File

@ -92,8 +92,6 @@ struct spirv_to_nir_options {
const struct spirv_capabilities *capabilities;
struct spirv_supported_capabilities caps;
/* Address format for various kinds of pointers. */
nir_address_format ubo_addr_format;
nir_address_format ssbo_addr_format;

View File

@ -285,15 +285,8 @@ int main(int argc, char **argv)
.environment = env,
};
if (entry_point.stage == MESA_SHADER_KERNEL) {
if (entry_point.stage == MESA_SHADER_KERNEL)
spirv_opts.environment = NIR_SPIRV_OPENCL;
spirv_opts.caps.address = true;
spirv_opts.caps.float64 = true;
spirv_opts.caps.int8 = true;
spirv_opts.caps.int16 = true;
spirv_opts.caps.int64 = true;
spirv_opts.caps.kernel = true;
}
nir_shader *nir = spirv_to_nir(map, word_count, NULL, 0,
entry_point.stage, entry_point.name,

View File

@ -6563,161 +6563,10 @@ vtn_create_builder(const uint32_t *words, size_t word_count,
b->options = dup_options;
b->values = vtn_zalloc_array(b, struct vtn_value, value_id_bound);
if (b->options->capabilities != NULL) {
if (b->options->capabilities != NULL)
b->supported_capabilities = *b->options->capabilities;
} else {
b->supported_capabilities = (struct spirv_capabilities) {
.Matrix = true,
.Shader = true,
.Geometry = true,
.GeometryPointSize = true,
.UniformBufferArrayDynamicIndexing = true,
.SampledImageArrayDynamicIndexing = true,
.StorageBufferArrayDynamicIndexing = true,
.StorageImageArrayDynamicIndexing = true,
.ImageRect = true,
.SampledRect = true,
.Sampled1D = true,
.Image1D = true,
.SampledCubeArray = true,
.ImageCubeArray = true,
.SampledBuffer = true,
.ImageBuffer = true,
.ImageQuery = true,
.DerivativeControl = true,
.InterpolationFunction = true,
.MultiViewport = true,
.SampleRateShading = true,
.ClipDistance = true,
.CullDistance = true,
.InputAttachment = true,
.ImageGatherExtended = true,
.StorageImageExtendedFormats = true,
.Vector16 = true,
.DotProduct = true,
.DotProductInputAll = true,
.DotProductInput4x8Bit = true,
.DotProductInput4x8BitPacked = true,
.ExpectAssumeKHR = true,
.Linkage = options->caps.linkage,
.SparseResidency = options->caps.sparse_residency,
.MinLod = options->caps.min_lod,
.AtomicStorage = options->caps.atomic_storage,
.Float64 = options->caps.float64,
.Int64 = options->caps.int64,
.Int16 = options->caps.int16,
.Int8 = options->caps.int8,
.TransformFeedback = options->caps.transform_feedback,
.GeometryStreams = options->caps.geometry_streams,
.Int64Atomics = options->caps.int64_atomics,
.StorageImageMultisample = options->caps.storage_image_ms,
.Addresses = options->caps.address,
.Kernel = options->caps.kernel,
.Float16Buffer = options->caps.kernel,
.GenericPointer = options->caps.generic_pointers,
.ImageBasic = options->caps.kernel_image,
.ImageReadWrite = options->caps.kernel_image_read_write,
.LiteralSampler = options->caps.literal_sampler,
.ImageMSArray = options->caps.image_ms_array,
.Tessellation = options->caps.tessellation,
.TessellationPointSize = options->caps.tessellation,
.DrawParameters = options->caps.draw_parameters,
.StorageImageReadWithoutFormat = options->caps.image_read_without_format,
.StorageImageWriteWithoutFormat = options->caps.image_write_without_format,
.DeviceGroup = options->caps.device_group,
.MultiView = options->caps.multiview,
.GroupNonUniform = options->caps.subgroup_basic,
.SubgroupVoteKHR = options->caps.subgroup_vote,
.GroupNonUniformVote = options->caps.subgroup_vote,
.SubgroupBallotKHR = options->caps.subgroup_ballot,
.GroupNonUniformBallot = options->caps.subgroup_ballot,
.GroupNonUniformShuffle = options->caps.subgroup_shuffle,
.GroupNonUniformShuffleRelative = options->caps.subgroup_shuffle,
.GroupNonUniformQuad = options->caps.subgroup_quad,
.GroupNonUniformArithmetic = options->caps.subgroup_arithmetic,
.GroupNonUniformClustered = options->caps.subgroup_arithmetic,
.Groups = options->caps.groups,
.SubgroupDispatch = options->caps.subgroup_dispatch,
.VariablePointersStorageBuffer = options->caps.variable_pointers,
.VariablePointers = options->caps.variable_pointers,
.StorageUniformBufferBlock16 = options->caps.storage_16bit,
.StorageUniform16 = options->caps.storage_16bit,
.StoragePushConstant16 = options->caps.storage_16bit,
.StorageInputOutput16 = options->caps.storage_16bit,
.ShaderLayer = options->caps.shader_viewport_index_layer,
.ShaderViewportIndex = options->caps.shader_viewport_index_layer,
.ShaderViewportIndexLayerEXT = options->caps.shader_viewport_index_layer,
.StorageBuffer8BitAccess = options->caps.storage_8bit,
.UniformAndStorageBuffer8BitAccess = options->caps.storage_8bit,
.StoragePushConstant8 = options->caps.storage_8bit,
.ShaderNonUniformEXT = options->caps.descriptor_indexing,
.InputAttachmentArrayDynamicIndexingEXT = options->caps.descriptor_array_dynamic_indexing,
.UniformTexelBufferArrayDynamicIndexingEXT = options->caps.descriptor_array_dynamic_indexing,
.StorageTexelBufferArrayDynamicIndexingEXT = options->caps.descriptor_array_dynamic_indexing,
.UniformBufferArrayNonUniformIndexingEXT = options->caps.descriptor_array_non_uniform_indexing,
.SampledImageArrayNonUniformIndexingEXT = options->caps.descriptor_array_non_uniform_indexing,
.StorageBufferArrayNonUniformIndexingEXT = options->caps.descriptor_array_non_uniform_indexing,
.StorageImageArrayNonUniformIndexingEXT = options->caps.descriptor_array_non_uniform_indexing,
.InputAttachmentArrayNonUniformIndexingEXT = options->caps.descriptor_array_non_uniform_indexing,
.UniformTexelBufferArrayNonUniformIndexingEXT = options->caps.descriptor_array_non_uniform_indexing,
.StorageTexelBufferArrayNonUniformIndexingEXT = options->caps.descriptor_array_non_uniform_indexing,
.RuntimeDescriptorArrayEXT = options->caps.runtime_descriptor_array,
.StencilExportEXT = options->caps.stencil_export,
.SampleMaskPostDepthCoverage = options->caps.post_depth_coverage,
.DenormFlushToZero = options->caps.float_controls,
.DenormPreserve = options->caps.float_controls,
.SignedZeroInfNanPreserve = options->caps.float_controls,
.RoundingModeRTE = options->caps.float_controls,
.RoundingModeRTZ = options->caps.float_controls,
.PhysicalStorageBufferAddresses = options->caps.physical_storage_buffer_address,
.ComputeDerivativeGroupQuadsNV = options->caps.derivative_group,
.ComputeDerivativeGroupLinearNV = options->caps.derivative_group,
.Float16 = options->caps.float16,
.FragmentShaderSampleInterlockEXT = options->caps.fragment_shader_sample_interlock,
.FragmentShaderPixelInterlockEXT = options->caps.fragment_shader_pixel_interlock,
.ShaderSMBuiltinsNV = options->caps.shader_sm_builtins_nv,
.DemoteToHelperInvocation = options->caps.demote_to_helper_invocation,
.ShaderClockKHR = options->caps.shader_clock,
.VulkanMemoryModel = options->caps.vk_memory_model,
.VulkanMemoryModelDeviceScope = options->caps.vk_memory_model_device_scope,
.ImageReadWriteLodAMD = options->caps.amd_image_read_write_lod,
.IntegerFunctions2INTEL = options->caps.integer_functions2,
.FragmentMaskAMD = options->caps.amd_fragment_mask,
.ImageGatherBiasLodAMD = options->caps.amd_image_gather_bias_lod,
.AtomicFloat16AddEXT = options->caps.float16_atomic_add,
.AtomicFloat32AddEXT = options->caps.float32_atomic_add,
.AtomicFloat64AddEXT = options->caps.float64_atomic_add,
.SubgroupShuffleINTEL = options->caps.intel_subgroup_shuffle,
.SubgroupBufferBlockIOINTEL = options->caps.intel_subgroup_buffer_block_io,
.RayCullMaskKHR = options->caps.ray_cull_mask,
.RayTracingKHR = options->caps.ray_tracing,
.RayQueryKHR = options->caps.ray_query,
.RayTraversalPrimitiveCullingKHR = options->caps.ray_traversal_primitive_culling,
.Int64ImageEXT = options->caps.image_atomic_int64,
.FragmentShadingRateKHR = options->caps.fragment_shading_rate,
.WorkgroupMemoryExplicitLayoutKHR = options->caps.workgroup_memory_explicit_layout,
.WorkgroupMemoryExplicitLayout8BitAccessKHR = options->caps.workgroup_memory_explicit_layout &&
options->caps.storage_8bit,
.WorkgroupMemoryExplicitLayout16BitAccessKHR = options->caps.workgroup_memory_explicit_layout &&
options->caps.storage_16bit,
.AtomicFloat16MinMaxEXT = options->caps.float16_atomic_min_max,
.AtomicFloat32MinMaxEXT = options->caps.float32_atomic_min_max,
.AtomicFloat64MinMaxEXT = options->caps.float64_atomic_min_max,
.MeshShadingEXT = options->caps.mesh_shading,
.MeshShadingNV = options->caps.mesh_shading_nv,
.PerViewAttributesNV = options->caps.per_view_attributes_nv,
.ShaderViewportMaskNV = options->caps.shader_viewport_mask_nv,
.GroupNonUniformRotateKHR = options->caps.subgroup_rotate,
.FragmentFullyCoveredEXT = options->caps.fragment_fully_covered,
.FragmentDensityEXT = options->caps.fragment_density,
.RayTracingPositionFetchKHR = options->caps.ray_tracing_position_fetch,
.RayQueryPositionFetchKHR = options->caps.ray_tracing_position_fetch,
.FragmentBarycentricKHR = options->caps.fragment_barycentric,
.ShaderEnqueueAMDX = options->caps.shader_enqueue,
.CooperativeMatrixKHR = options->caps.cooperative_matrix,
.QuadControlKHR = options->caps.quad_control,
};
}
else
b->supported_capabilities = implemented_capabilities;
/* In GLSLang commit 8297936dd6eb3, their handling of barrier() was fixed
* to provide correct memory semantics on compute shader barrier()