mirror of https://gitlab.freedesktop.org/mesa/mesa
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:
parent
e80d52223e
commit
69b0ee7b6c
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue