diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h index 28fb19fe415..4fc6073b130 100644 --- a/src/compiler/shader_info.h +++ b/src/compiler/shader_info.h @@ -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; diff --git a/src/compiler/spirv/nir_spirv.h b/src/compiler/spirv/nir_spirv.h index 06c8ba244b8..348a6b82c9e 100644 --- a/src/compiler/spirv/nir_spirv.h +++ b/src/compiler/spirv/nir_spirv.h @@ -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; diff --git a/src/compiler/spirv/spirv2nir.c b/src/compiler/spirv/spirv2nir.c index 63635969b84..9301139e905 100644 --- a/src/compiler/spirv/spirv2nir.c +++ b/src/compiler/spirv/spirv2nir.c @@ -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, diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index ac46011b435..a1b156d6a14 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -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()