diff --git a/include/vulkan/utility/vk_dispatch_table.h b/include/vulkan/utility/vk_dispatch_table.h index 96e2faf..3d81ed5 100644 --- a/include/vulkan/utility/vk_dispatch_table.h +++ b/include/vulkan/utility/vk_dispatch_table.h @@ -161,6 +161,7 @@ typedef struct VkuInstanceDispatchTable_ { PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX GetPhysicalDeviceScreenPresentationSupportQNX; #endif // VK_USE_PLATFORM_SCREEN_QNX PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV GetPhysicalDeviceOpticalFlowImageFormatsNV; + PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV; } VkuInstanceDispatchTable; // Device function pointer dispatch table @@ -1526,5 +1527,6 @@ static inline void vkuInitInstanceDispatchTable(VkInstance instance, VkuInstance table->GetPhysicalDeviceScreenPresentationSupportQNX = (PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)gipa(instance, "vkGetPhysicalDeviceScreenPresentationSupportQNX"); #endif // VK_USE_PLATFORM_SCREEN_QNX table->GetPhysicalDeviceOpticalFlowImageFormatsNV = (PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV)gipa(instance, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV"); + table->GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV)gipa(instance, "vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV"); } // clang-format on diff --git a/include/vulkan/utility/vk_safe_struct.hpp b/include/vulkan/utility/vk_safe_struct.hpp index bbf04a0..7731700 100644 --- a/include/vulkan/utility/vk_safe_struct.hpp +++ b/include/vulkan/utility/vk_safe_struct.hpp @@ -18833,6 +18833,85 @@ struct safe_VkPipelineViewportDepthClampControlCreateInfoEXT { return reinterpret_cast(this); } }; +struct safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV { + VkStructureType sType; + void* pNext{}; + uint32_t MGranularity; + uint32_t NGranularity; + uint32_t KGranularity; + VkComponentTypeKHR AType; + VkComponentTypeKHR BType; + VkComponentTypeKHR CType; + VkComponentTypeKHR ResultType; + VkBool32 saturatingAccumulation; + VkScopeKHR scope; + uint32_t workgroupInvocations; + + safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV(const VkCooperativeMatrixFlexibleDimensionsPropertiesNV* in_struct, + PNextCopyState* copy_state = {}, bool copy_pnext = true); + safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV(const safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV& copy_src); + safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV& operator=( + const safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV& copy_src); + safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV(); + ~safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV(); + void initialize(const VkCooperativeMatrixFlexibleDimensionsPropertiesNV* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV* copy_src, PNextCopyState* copy_state = {}); + VkCooperativeMatrixFlexibleDimensionsPropertiesNV* ptr() { + return reinterpret_cast(this); + } + VkCooperativeMatrixFlexibleDimensionsPropertiesNV const* ptr() const { + return reinterpret_cast(this); + } +}; +struct safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV { + VkStructureType sType; + void* pNext{}; + VkBool32 cooperativeMatrixWorkgroupScope; + VkBool32 cooperativeMatrixFlexibleDimensions; + VkBool32 cooperativeMatrixReductions; + VkBool32 cooperativeMatrixConversions; + VkBool32 cooperativeMatrixPerElementOperations; + VkBool32 cooperativeMatrixTensorAddressing; + VkBool32 cooperativeMatrixBlockLoads; + + safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV(const VkPhysicalDeviceCooperativeMatrix2FeaturesNV* in_struct, + PNextCopyState* copy_state = {}, bool copy_pnext = true); + safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV(const safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV& copy_src); + safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV& operator=(const safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV& copy_src); + safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV(); + ~safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV(); + void initialize(const VkPhysicalDeviceCooperativeMatrix2FeaturesNV* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV* copy_src, PNextCopyState* copy_state = {}); + VkPhysicalDeviceCooperativeMatrix2FeaturesNV* ptr() { + return reinterpret_cast(this); + } + VkPhysicalDeviceCooperativeMatrix2FeaturesNV const* ptr() const { + return reinterpret_cast(this); + } +}; +struct safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV { + VkStructureType sType; + void* pNext{}; + uint32_t cooperativeMatrixWorkgroupScopeMaxWorkgroupSize; + uint32_t cooperativeMatrixFlexibleDimensionsMaxDimension; + uint32_t cooperativeMatrixWorkgroupScopeReservedSharedMemory; + + safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV(const VkPhysicalDeviceCooperativeMatrix2PropertiesNV* in_struct, + PNextCopyState* copy_state = {}, bool copy_pnext = true); + safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV(const safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV& copy_src); + safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV& operator=( + const safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV& copy_src); + safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV(); + ~safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV(); + void initialize(const VkPhysicalDeviceCooperativeMatrix2PropertiesNV* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV* copy_src, PNextCopyState* copy_state = {}); + VkPhysicalDeviceCooperativeMatrix2PropertiesNV* ptr() { + return reinterpret_cast(this); + } + VkPhysicalDeviceCooperativeMatrix2PropertiesNV const* ptr() const { + return reinterpret_cast(this); + } +}; struct safe_VkAccelerationStructureGeometryTrianglesDataKHR { VkStructureType sType; const void* pNext{}; diff --git a/include/vulkan/utility/vk_struct_helper.hpp b/include/vulkan/utility/vk_struct_helper.hpp index d3c9266..ddba89b 100644 --- a/include/vulkan/utility/vk_struct_helper.hpp +++ b/include/vulkan/utility/vk_struct_helper.hpp @@ -985,6 +985,9 @@ template <> inline VkStructureType GetSType inline VkStructureType GetSType() { return VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA; } template <> inline VkStructureType GetSType() { return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT; } template <> inline VkStructureType GetSType() { return VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT; } +template <> inline VkStructureType GetSType() { return VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV; } +template <> inline VkStructureType GetSType() { return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV; } +template <> inline VkStructureType GetSType() { return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV; } template <> inline VkStructureType GetSType() { return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR; } template <> inline VkStructureType GetSType() { return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR; } template <> inline VkStructureType GetSType() { return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR; } diff --git a/include/vulkan/vk_enum_string_helper.h b/include/vulkan/vk_enum_string_helper.h index 457bb03..340cba0 100644 --- a/include/vulkan/vk_enum_string_helper.h +++ b/include/vulkan/vk_enum_string_helper.h @@ -2002,6 +2002,12 @@ static inline const char* string_VkStructureType(VkStructureType input_value) { return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT"; case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT"; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV: + return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV"; + case VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV: + return "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV"; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV: + return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV"; default: return "Unhandled VkStructureType"; } diff --git a/scripts/known_good.json b/scripts/known_good.json index 536f291..7a5d211 100644 --- a/scripts/known_good.json +++ b/scripts/known_good.json @@ -7,7 +7,7 @@ "sub_dir": "Vulkan-Headers", "build_dir": "Vulkan-Headers/build", "install_dir": "Vulkan-Headers/build/install", - "commit": "v1.3.299" + "commit": "v1.3.300" }, { "name": "googletest", diff --git a/src/vulkan/vk_safe_struct_utils.cpp b/src/vulkan/vk_safe_struct_utils.cpp index d8750d8..f0c9df7 100644 --- a/src/vulkan/vk_safe_struct_utils.cpp +++ b/src/vulkan/vk_safe_struct_utils.cpp @@ -1870,6 +1870,12 @@ void *SafePnextCopy(const void *pNext, PNextCopyState* copy_state) { case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT: safe_pNext = new safe_VkPipelineViewportDepthClampControlCreateInfoEXT(reinterpret_cast(pNext), copy_state, false); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV: + safe_pNext = new safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV(reinterpret_cast(pNext), copy_state, false); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV: + safe_pNext = new safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV(reinterpret_cast(pNext), copy_state, false); + break; case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR: safe_pNext = new safe_VkWriteDescriptorSetAccelerationStructureKHR(reinterpret_cast(pNext), copy_state, false); break; @@ -3756,6 +3762,12 @@ void FreePnextChain(const void *pNext) { case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT: delete reinterpret_cast(header); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV: + delete reinterpret_cast(header); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV: + delete reinterpret_cast(header); + break; case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR: delete reinterpret_cast(header); break; diff --git a/src/vulkan/vk_safe_struct_vendor.cpp b/src/vulkan/vk_safe_struct_vendor.cpp index f086422..3fa04eb 100644 --- a/src/vulkan/vk_safe_struct_vendor.cpp +++ b/src/vulkan/vk_safe_struct_vendor.cpp @@ -15465,6 +15465,266 @@ void safe_VkImageAlignmentControlCreateInfoMESA::initialize(const safe_VkImageAl pNext = SafePnextCopy(copy_src->pNext); } +safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV::safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV( + const VkCooperativeMatrixFlexibleDimensionsPropertiesNV* in_struct, [[maybe_unused]] PNextCopyState* copy_state, + bool copy_pnext) + : sType(in_struct->sType), + MGranularity(in_struct->MGranularity), + NGranularity(in_struct->NGranularity), + KGranularity(in_struct->KGranularity), + AType(in_struct->AType), + BType(in_struct->BType), + CType(in_struct->CType), + ResultType(in_struct->ResultType), + saturatingAccumulation(in_struct->saturatingAccumulation), + scope(in_struct->scope), + workgroupInvocations(in_struct->workgroupInvocations) { + if (copy_pnext) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); + } +} + +safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV::safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV() + : sType(VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV), + pNext(nullptr), + MGranularity(), + NGranularity(), + KGranularity(), + AType(), + BType(), + CType(), + ResultType(), + saturatingAccumulation(), + scope(), + workgroupInvocations() {} + +safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV::safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV( + const safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV& copy_src) { + sType = copy_src.sType; + MGranularity = copy_src.MGranularity; + NGranularity = copy_src.NGranularity; + KGranularity = copy_src.KGranularity; + AType = copy_src.AType; + BType = copy_src.BType; + CType = copy_src.CType; + ResultType = copy_src.ResultType; + saturatingAccumulation = copy_src.saturatingAccumulation; + scope = copy_src.scope; + workgroupInvocations = copy_src.workgroupInvocations; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV& safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV::operator=( + const safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV& copy_src) { + if (©_src == this) return *this; + + FreePnextChain(pNext); + + sType = copy_src.sType; + MGranularity = copy_src.MGranularity; + NGranularity = copy_src.NGranularity; + KGranularity = copy_src.KGranularity; + AType = copy_src.AType; + BType = copy_src.BType; + CType = copy_src.CType; + ResultType = copy_src.ResultType; + saturatingAccumulation = copy_src.saturatingAccumulation; + scope = copy_src.scope; + workgroupInvocations = copy_src.workgroupInvocations; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV::~safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV() { + FreePnextChain(pNext); +} + +void safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV::initialize( + const VkCooperativeMatrixFlexibleDimensionsPropertiesNV* in_struct, [[maybe_unused]] PNextCopyState* copy_state) { + FreePnextChain(pNext); + sType = in_struct->sType; + MGranularity = in_struct->MGranularity; + NGranularity = in_struct->NGranularity; + KGranularity = in_struct->KGranularity; + AType = in_struct->AType; + BType = in_struct->BType; + CType = in_struct->CType; + ResultType = in_struct->ResultType; + saturatingAccumulation = in_struct->saturatingAccumulation; + scope = in_struct->scope; + workgroupInvocations = in_struct->workgroupInvocations; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV::initialize( + const safe_VkCooperativeMatrixFlexibleDimensionsPropertiesNV* copy_src, [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + MGranularity = copy_src->MGranularity; + NGranularity = copy_src->NGranularity; + KGranularity = copy_src->KGranularity; + AType = copy_src->AType; + BType = copy_src->BType; + CType = copy_src->CType; + ResultType = copy_src->ResultType; + saturatingAccumulation = copy_src->saturatingAccumulation; + scope = copy_src->scope; + workgroupInvocations = copy_src->workgroupInvocations; + pNext = SafePnextCopy(copy_src->pNext); +} + +safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV::safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV( + const VkPhysicalDeviceCooperativeMatrix2FeaturesNV* in_struct, [[maybe_unused]] PNextCopyState* copy_state, bool copy_pnext) + : sType(in_struct->sType), + cooperativeMatrixWorkgroupScope(in_struct->cooperativeMatrixWorkgroupScope), + cooperativeMatrixFlexibleDimensions(in_struct->cooperativeMatrixFlexibleDimensions), + cooperativeMatrixReductions(in_struct->cooperativeMatrixReductions), + cooperativeMatrixConversions(in_struct->cooperativeMatrixConversions), + cooperativeMatrixPerElementOperations(in_struct->cooperativeMatrixPerElementOperations), + cooperativeMatrixTensorAddressing(in_struct->cooperativeMatrixTensorAddressing), + cooperativeMatrixBlockLoads(in_struct->cooperativeMatrixBlockLoads) { + if (copy_pnext) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); + } +} + +safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV::safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV() + : sType(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV), + pNext(nullptr), + cooperativeMatrixWorkgroupScope(), + cooperativeMatrixFlexibleDimensions(), + cooperativeMatrixReductions(), + cooperativeMatrixConversions(), + cooperativeMatrixPerElementOperations(), + cooperativeMatrixTensorAddressing(), + cooperativeMatrixBlockLoads() {} + +safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV::safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV( + const safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV& copy_src) { + sType = copy_src.sType; + cooperativeMatrixWorkgroupScope = copy_src.cooperativeMatrixWorkgroupScope; + cooperativeMatrixFlexibleDimensions = copy_src.cooperativeMatrixFlexibleDimensions; + cooperativeMatrixReductions = copy_src.cooperativeMatrixReductions; + cooperativeMatrixConversions = copy_src.cooperativeMatrixConversions; + cooperativeMatrixPerElementOperations = copy_src.cooperativeMatrixPerElementOperations; + cooperativeMatrixTensorAddressing = copy_src.cooperativeMatrixTensorAddressing; + cooperativeMatrixBlockLoads = copy_src.cooperativeMatrixBlockLoads; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV& safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV::operator=( + const safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV& copy_src) { + if (©_src == this) return *this; + + FreePnextChain(pNext); + + sType = copy_src.sType; + cooperativeMatrixWorkgroupScope = copy_src.cooperativeMatrixWorkgroupScope; + cooperativeMatrixFlexibleDimensions = copy_src.cooperativeMatrixFlexibleDimensions; + cooperativeMatrixReductions = copy_src.cooperativeMatrixReductions; + cooperativeMatrixConversions = copy_src.cooperativeMatrixConversions; + cooperativeMatrixPerElementOperations = copy_src.cooperativeMatrixPerElementOperations; + cooperativeMatrixTensorAddressing = copy_src.cooperativeMatrixTensorAddressing; + cooperativeMatrixBlockLoads = copy_src.cooperativeMatrixBlockLoads; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV::~safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV() { FreePnextChain(pNext); } + +void safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV::initialize(const VkPhysicalDeviceCooperativeMatrix2FeaturesNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) { + FreePnextChain(pNext); + sType = in_struct->sType; + cooperativeMatrixWorkgroupScope = in_struct->cooperativeMatrixWorkgroupScope; + cooperativeMatrixFlexibleDimensions = in_struct->cooperativeMatrixFlexibleDimensions; + cooperativeMatrixReductions = in_struct->cooperativeMatrixReductions; + cooperativeMatrixConversions = in_struct->cooperativeMatrixConversions; + cooperativeMatrixPerElementOperations = in_struct->cooperativeMatrixPerElementOperations; + cooperativeMatrixTensorAddressing = in_struct->cooperativeMatrixTensorAddressing; + cooperativeMatrixBlockLoads = in_struct->cooperativeMatrixBlockLoads; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV::initialize( + const safe_VkPhysicalDeviceCooperativeMatrix2FeaturesNV* copy_src, [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + cooperativeMatrixWorkgroupScope = copy_src->cooperativeMatrixWorkgroupScope; + cooperativeMatrixFlexibleDimensions = copy_src->cooperativeMatrixFlexibleDimensions; + cooperativeMatrixReductions = copy_src->cooperativeMatrixReductions; + cooperativeMatrixConversions = copy_src->cooperativeMatrixConversions; + cooperativeMatrixPerElementOperations = copy_src->cooperativeMatrixPerElementOperations; + cooperativeMatrixTensorAddressing = copy_src->cooperativeMatrixTensorAddressing; + cooperativeMatrixBlockLoads = copy_src->cooperativeMatrixBlockLoads; + pNext = SafePnextCopy(copy_src->pNext); +} + +safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV::safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV( + const VkPhysicalDeviceCooperativeMatrix2PropertiesNV* in_struct, [[maybe_unused]] PNextCopyState* copy_state, bool copy_pnext) + : sType(in_struct->sType), + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize(in_struct->cooperativeMatrixWorkgroupScopeMaxWorkgroupSize), + cooperativeMatrixFlexibleDimensionsMaxDimension(in_struct->cooperativeMatrixFlexibleDimensionsMaxDimension), + cooperativeMatrixWorkgroupScopeReservedSharedMemory(in_struct->cooperativeMatrixWorkgroupScopeReservedSharedMemory) { + if (copy_pnext) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); + } +} + +safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV::safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV() + : sType(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV), + pNext(nullptr), + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize(), + cooperativeMatrixFlexibleDimensionsMaxDimension(), + cooperativeMatrixWorkgroupScopeReservedSharedMemory() {} + +safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV::safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV( + const safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV& copy_src) { + sType = copy_src.sType; + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize = copy_src.cooperativeMatrixWorkgroupScopeMaxWorkgroupSize; + cooperativeMatrixFlexibleDimensionsMaxDimension = copy_src.cooperativeMatrixFlexibleDimensionsMaxDimension; + cooperativeMatrixWorkgroupScopeReservedSharedMemory = copy_src.cooperativeMatrixWorkgroupScopeReservedSharedMemory; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV& safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV::operator=( + const safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV& copy_src) { + if (©_src == this) return *this; + + FreePnextChain(pNext); + + sType = copy_src.sType; + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize = copy_src.cooperativeMatrixWorkgroupScopeMaxWorkgroupSize; + cooperativeMatrixFlexibleDimensionsMaxDimension = copy_src.cooperativeMatrixFlexibleDimensionsMaxDimension; + cooperativeMatrixWorkgroupScopeReservedSharedMemory = copy_src.cooperativeMatrixWorkgroupScopeReservedSharedMemory; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV::~safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV() { + FreePnextChain(pNext); +} + +void safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV::initialize( + const VkPhysicalDeviceCooperativeMatrix2PropertiesNV* in_struct, [[maybe_unused]] PNextCopyState* copy_state) { + FreePnextChain(pNext); + sType = in_struct->sType; + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize = in_struct->cooperativeMatrixWorkgroupScopeMaxWorkgroupSize; + cooperativeMatrixFlexibleDimensionsMaxDimension = in_struct->cooperativeMatrixFlexibleDimensionsMaxDimension; + cooperativeMatrixWorkgroupScopeReservedSharedMemory = in_struct->cooperativeMatrixWorkgroupScopeReservedSharedMemory; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV::initialize( + const safe_VkPhysicalDeviceCooperativeMatrix2PropertiesNV* copy_src, [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize = copy_src->cooperativeMatrixWorkgroupScopeMaxWorkgroupSize; + cooperativeMatrixFlexibleDimensionsMaxDimension = copy_src->cooperativeMatrixFlexibleDimensionsMaxDimension; + cooperativeMatrixWorkgroupScopeReservedSharedMemory = copy_src->cooperativeMatrixWorkgroupScopeReservedSharedMemory; + pNext = SafePnextCopy(copy_src->pNext); +} + } // namespace vku // NOLINTEND