mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
venus: Simplify vn_GetPhysicalDeviceFeatures2
Reduce approximately 300 lines to 60. Signed-off-by: Chad Versace <chadversary@chromium.org> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Ryan Neph <ryanneph@google.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18000>
This commit is contained in:
parent
d46a78e74e
commit
7d1fb018f2
1 changed files with 41 additions and 287 deletions
|
|
@ -1630,304 +1630,58 @@ vn_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
||||||
{
|
{
|
||||||
struct vn_physical_device *physical_dev =
|
struct vn_physical_device *physical_dev =
|
||||||
vn_physical_device_from_handle(physicalDevice);
|
vn_physical_device_from_handle(physicalDevice);
|
||||||
const struct vn_physical_device_features *feats = &physical_dev->features;
|
const struct vn_physical_device_features *in_feats =
|
||||||
const struct VkPhysicalDeviceVulkan11Features *vk11_feats =
|
&physical_dev->features;
|
||||||
&feats->vulkan_1_1;
|
|
||||||
const struct VkPhysicalDeviceVulkan12Features *vk12_feats =
|
|
||||||
&feats->vulkan_1_2;
|
|
||||||
union {
|
|
||||||
VkBaseOutStructure *pnext;
|
|
||||||
|
|
||||||
VkPhysicalDeviceFeatures2 *features2;
|
pFeatures->features = in_feats->vulkan_1_0;
|
||||||
VkPhysicalDeviceVulkan11Features *vulkan_1_1;
|
|
||||||
VkPhysicalDeviceVulkan12Features *vulkan_1_2;
|
|
||||||
|
|
||||||
/* Vulkan 1.1 */
|
vk_foreach_struct(out, pFeatures->pNext) {
|
||||||
VkPhysicalDevice16BitStorageFeatures *sixteen_bit_storage;
|
if (vk_get_physical_device_core_1_1_feature_ext(out,
|
||||||
VkPhysicalDeviceMultiviewFeatures *multiview;
|
&in_feats->vulkan_1_1))
|
||||||
VkPhysicalDeviceVariablePointersFeatures *variable_pointers;
|
continue;
|
||||||
VkPhysicalDeviceProtectedMemoryFeatures *protected_memory;
|
|
||||||
VkPhysicalDeviceSamplerYcbcrConversionFeatures *sampler_ycbcr_conversion;
|
|
||||||
VkPhysicalDeviceShaderDrawParametersFeatures *shader_draw_parameters;
|
|
||||||
|
|
||||||
/* Vulkan 1.2 */
|
if (vk_get_physical_device_core_1_2_feature_ext(out,
|
||||||
VkPhysicalDevice8BitStorageFeatures *eight_bit_storage;
|
&in_feats->vulkan_1_2))
|
||||||
VkPhysicalDeviceShaderAtomicInt64Features *shader_atomic_int64;
|
continue;
|
||||||
VkPhysicalDeviceShaderFloat16Int8Features *shader_float16_int8;
|
|
||||||
VkPhysicalDeviceDescriptorIndexingFeatures *descriptor_indexing;
|
|
||||||
VkPhysicalDeviceScalarBlockLayoutFeatures *scalar_block_layout;
|
|
||||||
VkPhysicalDeviceImagelessFramebufferFeatures *imageless_framebuffer;
|
|
||||||
VkPhysicalDeviceUniformBufferStandardLayoutFeatures
|
|
||||||
*uniform_buffer_standard_layout;
|
|
||||||
VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
|
|
||||||
*shader_subgroup_extended_types;
|
|
||||||
VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures
|
|
||||||
*separate_depth_stencil_layouts;
|
|
||||||
VkPhysicalDeviceHostQueryResetFeatures *host_query_reset;
|
|
||||||
VkPhysicalDeviceTimelineSemaphoreFeatures *timeline_semaphore;
|
|
||||||
VkPhysicalDeviceBufferDeviceAddressFeatures *buffer_device_address;
|
|
||||||
VkPhysicalDeviceVulkanMemoryModelFeatures *vulkan_memory_model;
|
|
||||||
|
|
||||||
|
switch (out->sType) {
|
||||||
|
|
||||||
|
#define CASE(stype, member) \
|
||||||
|
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_##stype: \
|
||||||
|
vk_copy_struct_guts(out, (VkBaseInStructure *)&in_feats->member, \
|
||||||
|
sizeof(in_feats->member)); \
|
||||||
|
break
|
||||||
|
|
||||||
|
/* clang-format off */
|
||||||
/* Vulkan 1.3 */
|
/* Vulkan 1.3 */
|
||||||
VkPhysicalDevice4444FormatsFeaturesEXT *argb_4444_formats;
|
CASE(4444_FORMATS_FEATURES_EXT, argb_4444_formats);
|
||||||
VkPhysicalDeviceDynamicRenderingFeatures *dynamic_rendering;
|
CASE(DYNAMIC_RENDERING_FEATURES, dynamic_rendering);
|
||||||
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *extended_dynamic_state;
|
CASE(EXTENDED_DYNAMIC_STATE_FEATURES_EXT, extended_dynamic_state);
|
||||||
VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
|
CASE(EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT, extended_dynamic_state_2);
|
||||||
*extended_dynamic_state2;
|
CASE(IMAGE_ROBUSTNESS_FEATURES, image_robustness);
|
||||||
VkPhysicalDeviceImageRobustnessFeatures *image_robustness;
|
CASE(INLINE_UNIFORM_BLOCK_FEATURES, inline_uniform_block);
|
||||||
VkPhysicalDeviceInlineUniformBlockFeatures *inline_uniform_block;
|
CASE(MAINTENANCE_4_FEATURES, maintenance4);
|
||||||
VkPhysicalDeviceMaintenance4Features *maintenance4;
|
CASE(PIPELINE_CREATION_CACHE_CONTROL_FEATURES, pipeline_creation_cache_control);
|
||||||
VkPhysicalDevicePipelineCreationCacheControlFeatures
|
CASE(SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, shader_demote_to_helper_invocation);
|
||||||
*pipeline_creation_cache_control;
|
CASE(TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, texture_compression_astc_hdr);
|
||||||
VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures
|
|
||||||
*shader_demote_to_helper_invocation;
|
|
||||||
VkPhysicalDeviceTextureCompressionASTCHDRFeatures
|
|
||||||
*texture_compression_astc_hdr;
|
|
||||||
|
|
||||||
/* EXT */
|
/* EXT */
|
||||||
VkPhysicalDeviceConditionalRenderingFeaturesEXT *conditional_rendering;
|
CASE(CONDITIONAL_RENDERING_FEATURES_EXT, conditional_rendering);
|
||||||
VkPhysicalDeviceCustomBorderColorFeaturesEXT *custom_border_color;
|
CASE(CUSTOM_BORDER_COLOR_FEATURES_EXT, custom_border_color);
|
||||||
VkPhysicalDeviceDepthClipEnableFeaturesEXT *depth_clip_enable;
|
CASE(DEPTH_CLIP_ENABLE_FEATURES_EXT, depth_clip_enable);
|
||||||
VkPhysicalDeviceIndexTypeUint8FeaturesEXT *index_type_uint8;
|
CASE(INDEX_TYPE_UINT8_FEATURES_EXT, index_type_uint8);
|
||||||
VkPhysicalDeviceLineRasterizationFeaturesEXT *line_rasterization;
|
CASE(LINE_RASTERIZATION_FEATURES_EXT, line_rasterization);
|
||||||
VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
|
CASE(PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT, primitive_topology_list_restart);
|
||||||
*primitive_topology_list_restart;
|
CASE(PROVOKING_VERTEX_FEATURES_EXT, provoking_vertex);
|
||||||
VkPhysicalDeviceProvokingVertexFeaturesEXT *provoking_vertex;
|
CASE(ROBUSTNESS_2_FEATURES_EXT, robustness_2);
|
||||||
VkPhysicalDeviceRobustness2FeaturesEXT *robustness_2;
|
CASE(TRANSFORM_FEEDBACK_FEATURES_EXT, transform_feedback);
|
||||||
VkPhysicalDeviceTransformFeedbackFeaturesEXT *transform_feedback;
|
CASE(VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, vertex_attribute_divisor);
|
||||||
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT
|
/* clang-format on */
|
||||||
*vertex_attribute_divisor;
|
|
||||||
} u;
|
|
||||||
|
|
||||||
u.pnext = (VkBaseOutStructure *)pFeatures;
|
|
||||||
while (u.pnext) {
|
|
||||||
void *saved = u.pnext->pNext;
|
|
||||||
switch (u.pnext->sType) {
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:
|
|
||||||
u.features2->features = feats->vulkan_1_0;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES:
|
|
||||||
*u.vulkan_1_1 = *vk11_feats;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES:
|
|
||||||
*u.vulkan_1_2 = *vk12_feats;
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Vulkan 1.1 */
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:
|
|
||||||
u.sixteen_bit_storage->storageBuffer16BitAccess =
|
|
||||||
vk11_feats->storageBuffer16BitAccess;
|
|
||||||
u.sixteen_bit_storage->uniformAndStorageBuffer16BitAccess =
|
|
||||||
vk11_feats->uniformAndStorageBuffer16BitAccess;
|
|
||||||
u.sixteen_bit_storage->storagePushConstant16 =
|
|
||||||
vk11_feats->storagePushConstant16;
|
|
||||||
u.sixteen_bit_storage->storageInputOutput16 =
|
|
||||||
vk11_feats->storageInputOutput16;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:
|
|
||||||
u.multiview->multiview = vk11_feats->multiview;
|
|
||||||
u.multiview->multiviewGeometryShader =
|
|
||||||
vk11_feats->multiviewGeometryShader;
|
|
||||||
u.multiview->multiviewTessellationShader =
|
|
||||||
vk11_feats->multiviewTessellationShader;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:
|
|
||||||
u.variable_pointers->variablePointersStorageBuffer =
|
|
||||||
vk11_feats->variablePointersStorageBuffer;
|
|
||||||
u.variable_pointers->variablePointers = vk11_feats->variablePointers;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:
|
|
||||||
u.protected_memory->protectedMemory = vk11_feats->protectedMemory;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:
|
|
||||||
u.sampler_ycbcr_conversion->samplerYcbcrConversion =
|
|
||||||
vk11_feats->samplerYcbcrConversion;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES:
|
|
||||||
u.shader_draw_parameters->shaderDrawParameters =
|
|
||||||
vk11_feats->shaderDrawParameters;
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Vulkan 1.2 */
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES:
|
|
||||||
u.eight_bit_storage->storageBuffer8BitAccess =
|
|
||||||
vk12_feats->storageBuffer8BitAccess;
|
|
||||||
u.eight_bit_storage->uniformAndStorageBuffer8BitAccess =
|
|
||||||
vk12_feats->uniformAndStorageBuffer8BitAccess;
|
|
||||||
u.eight_bit_storage->storagePushConstant8 =
|
|
||||||
vk12_feats->storagePushConstant8;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES:
|
|
||||||
u.shader_atomic_int64->shaderBufferInt64Atomics =
|
|
||||||
vk12_feats->shaderBufferInt64Atomics;
|
|
||||||
u.shader_atomic_int64->shaderSharedInt64Atomics =
|
|
||||||
vk12_feats->shaderSharedInt64Atomics;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES:
|
|
||||||
u.shader_float16_int8->shaderFloat16 = vk12_feats->shaderFloat16;
|
|
||||||
u.shader_float16_int8->shaderInt8 = vk12_feats->shaderInt8;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES:
|
|
||||||
u.descriptor_indexing->shaderInputAttachmentArrayDynamicIndexing =
|
|
||||||
vk12_feats->shaderInputAttachmentArrayDynamicIndexing;
|
|
||||||
u.descriptor_indexing->shaderUniformTexelBufferArrayDynamicIndexing =
|
|
||||||
vk12_feats->shaderUniformTexelBufferArrayDynamicIndexing;
|
|
||||||
u.descriptor_indexing->shaderStorageTexelBufferArrayDynamicIndexing =
|
|
||||||
vk12_feats->shaderStorageTexelBufferArrayDynamicIndexing;
|
|
||||||
u.descriptor_indexing->shaderUniformBufferArrayNonUniformIndexing =
|
|
||||||
vk12_feats->shaderUniformBufferArrayNonUniformIndexing;
|
|
||||||
u.descriptor_indexing->shaderSampledImageArrayNonUniformIndexing =
|
|
||||||
vk12_feats->shaderSampledImageArrayNonUniformIndexing;
|
|
||||||
u.descriptor_indexing->shaderStorageBufferArrayNonUniformIndexing =
|
|
||||||
vk12_feats->shaderStorageBufferArrayNonUniformIndexing;
|
|
||||||
u.descriptor_indexing->shaderStorageImageArrayNonUniformIndexing =
|
|
||||||
vk12_feats->shaderStorageImageArrayNonUniformIndexing;
|
|
||||||
u.descriptor_indexing->shaderInputAttachmentArrayNonUniformIndexing =
|
|
||||||
vk12_feats->shaderInputAttachmentArrayNonUniformIndexing;
|
|
||||||
u.descriptor_indexing
|
|
||||||
->shaderUniformTexelBufferArrayNonUniformIndexing =
|
|
||||||
vk12_feats->shaderUniformTexelBufferArrayNonUniformIndexing;
|
|
||||||
u.descriptor_indexing
|
|
||||||
->shaderStorageTexelBufferArrayNonUniformIndexing =
|
|
||||||
vk12_feats->shaderStorageTexelBufferArrayNonUniformIndexing;
|
|
||||||
u.descriptor_indexing->descriptorBindingUniformBufferUpdateAfterBind =
|
|
||||||
vk12_feats->descriptorBindingUniformBufferUpdateAfterBind;
|
|
||||||
u.descriptor_indexing->descriptorBindingSampledImageUpdateAfterBind =
|
|
||||||
vk12_feats->descriptorBindingSampledImageUpdateAfterBind;
|
|
||||||
u.descriptor_indexing->descriptorBindingStorageImageUpdateAfterBind =
|
|
||||||
vk12_feats->descriptorBindingStorageImageUpdateAfterBind;
|
|
||||||
u.descriptor_indexing->descriptorBindingStorageBufferUpdateAfterBind =
|
|
||||||
vk12_feats->descriptorBindingStorageBufferUpdateAfterBind;
|
|
||||||
u.descriptor_indexing
|
|
||||||
->descriptorBindingUniformTexelBufferUpdateAfterBind =
|
|
||||||
vk12_feats->descriptorBindingUniformTexelBufferUpdateAfterBind;
|
|
||||||
u.descriptor_indexing
|
|
||||||
->descriptorBindingStorageTexelBufferUpdateAfterBind =
|
|
||||||
vk12_feats->descriptorBindingStorageTexelBufferUpdateAfterBind;
|
|
||||||
u.descriptor_indexing->descriptorBindingUpdateUnusedWhilePending =
|
|
||||||
vk12_feats->descriptorBindingUpdateUnusedWhilePending;
|
|
||||||
u.descriptor_indexing->descriptorBindingPartiallyBound =
|
|
||||||
vk12_feats->descriptorBindingPartiallyBound;
|
|
||||||
u.descriptor_indexing->descriptorBindingVariableDescriptorCount =
|
|
||||||
vk12_feats->descriptorBindingVariableDescriptorCount;
|
|
||||||
u.descriptor_indexing->runtimeDescriptorArray =
|
|
||||||
vk12_feats->runtimeDescriptorArray;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES:
|
|
||||||
u.scalar_block_layout->scalarBlockLayout =
|
|
||||||
vk12_feats->scalarBlockLayout;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES:
|
|
||||||
u.imageless_framebuffer->imagelessFramebuffer =
|
|
||||||
vk12_feats->imagelessFramebuffer;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES:
|
|
||||||
u.uniform_buffer_standard_layout->uniformBufferStandardLayout =
|
|
||||||
vk12_feats->uniformBufferStandardLayout;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES:
|
|
||||||
u.shader_subgroup_extended_types->shaderSubgroupExtendedTypes =
|
|
||||||
vk12_feats->shaderSubgroupExtendedTypes;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES:
|
|
||||||
u.separate_depth_stencil_layouts->separateDepthStencilLayouts =
|
|
||||||
vk12_feats->separateDepthStencilLayouts;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES:
|
|
||||||
u.host_query_reset->hostQueryReset = vk12_feats->hostQueryReset;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES:
|
|
||||||
u.timeline_semaphore->timelineSemaphore =
|
|
||||||
vk12_feats->timelineSemaphore;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES:
|
|
||||||
u.buffer_device_address->bufferDeviceAddress =
|
|
||||||
vk12_feats->bufferDeviceAddress;
|
|
||||||
u.buffer_device_address->bufferDeviceAddressCaptureReplay =
|
|
||||||
vk12_feats->bufferDeviceAddressCaptureReplay;
|
|
||||||
u.buffer_device_address->bufferDeviceAddressMultiDevice =
|
|
||||||
vk12_feats->bufferDeviceAddressMultiDevice;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES:
|
|
||||||
u.vulkan_memory_model->vulkanMemoryModel =
|
|
||||||
vk12_feats->vulkanMemoryModel;
|
|
||||||
u.vulkan_memory_model->vulkanMemoryModelDeviceScope =
|
|
||||||
vk12_feats->vulkanMemoryModelDeviceScope;
|
|
||||||
u.vulkan_memory_model->vulkanMemoryModelAvailabilityVisibilityChains =
|
|
||||||
vk12_feats->vulkanMemoryModelAvailabilityVisibilityChains;
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Vulkan 1.3 */
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT:
|
|
||||||
*u.argb_4444_formats = feats->argb_4444_formats;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES:
|
|
||||||
*u.dynamic_rendering = feats->dynamic_rendering;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
|
|
||||||
*u.extended_dynamic_state = feats->extended_dynamic_state;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT:
|
|
||||||
*u.extended_dynamic_state2 = feats->extended_dynamic_state_2;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES:
|
|
||||||
*u.image_robustness = feats->image_robustness;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES:
|
|
||||||
*u.inline_uniform_block = feats->inline_uniform_block;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES:
|
|
||||||
*u.pipeline_creation_cache_control = feats->pipeline_creation_cache_control;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES:
|
|
||||||
*u.shader_demote_to_helper_invocation =
|
|
||||||
feats->shader_demote_to_helper_invocation;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES:
|
|
||||||
*u.texture_compression_astc_hdr =
|
|
||||||
feats->texture_compression_astc_hdr;
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* EXT */
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:
|
|
||||||
*u.conditional_rendering = feats->conditional_rendering;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:
|
|
||||||
*u.custom_border_color = feats->custom_border_color;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT:
|
|
||||||
*u.depth_clip_enable = feats->depth_clip_enable;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT:
|
|
||||||
*u.index_type_uint8 = feats->index_type_uint8;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT:
|
|
||||||
*u.line_rasterization = feats->line_rasterization;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT:
|
|
||||||
*u.primitive_topology_list_restart = feats->primitive_topology_list_restart;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT:
|
|
||||||
*u.provoking_vertex = feats->provoking_vertex;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT:
|
|
||||||
*u.robustness_2 = feats->robustness_2;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT:
|
|
||||||
*u.transform_feedback = feats->transform_feedback;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:
|
|
||||||
*u.vertex_attribute_divisor = feats->vertex_attribute_divisor;
|
|
||||||
break;
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES:
|
|
||||||
*u.maintenance4 = feats->maintenance4;
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
#undef CASE
|
||||||
}
|
}
|
||||||
|
|
||||||
u.pnext->pNext = saved;
|
|
||||||
u.pnext = u.pnext->pNext;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue