Merge "Add VK_EXT_fragment_density_map for Chrome" into main
diff --git a/codegen/vulkan/vulkan-docs-next/scripts/cerealgenerator.py b/codegen/vulkan/vulkan-docs-next/scripts/cerealgenerator.py
index 8d77d3b..b539e87 100644
--- a/codegen/vulkan/vulkan-docs-next/scripts/cerealgenerator.py
+++ b/codegen/vulkan/vulkan-docs-next/scripts/cerealgenerator.py
@@ -135,6 +135,8 @@
"VK_EXT_vertex_attribute_divisor",
# QNX
"VK_QNX_external_memory_screen_buffer",
+ # b/320855472 Chrome
+ "VK_EXT_fragment_density_map",
]
HOST_MODULES = ["goldfish_vk_extension_structs", "goldfish_vk_marshaling",
diff --git a/guest/vulkan_enc/VkEncoder.cpp b/guest/vulkan_enc/VkEncoder.cpp
index c9ef5c4..4ec592d 100644
--- a/guest/vulkan_enc/VkEncoder.cpp
+++ b/guest/vulkan_enc/VkEncoder.cpp
@@ -33200,6 +33200,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
diff --git a/guest/vulkan_enc/VkEncoder.h b/guest/vulkan_enc/VkEncoder.h
index 5a40b30..a970261 100644
--- a/guest/vulkan_enc/VkEncoder.h
+++ b/guest/vulkan_enc/VkEncoder.h
@@ -941,6 +941,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
diff --git a/guest/vulkan_enc/func_table.cpp b/guest/vulkan_enc/func_table.cpp
index b35d29a..38b0675 100644
--- a/guest/vulkan_enc/func_table.cpp
+++ b/guest/vulkan_enc/func_table.cpp
@@ -5222,6 +5222,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
diff --git a/guest/vulkan_enc/goldfish_vk_counting_guest.cpp b/guest/vulkan_enc/goldfish_vk_counting_guest.cpp
index 0ca2b28..67669e6 100644
--- a/guest/vulkan_enc/goldfish_vk_counting_guest.cpp
+++ b/guest/vulkan_enc/goldfish_vk_counting_guest.cpp
@@ -6530,6 +6530,61 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void count_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ uint32_t featureBits, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* toCount, size_t* count) {
+ (void)featureBits;
+ (void)rootType;
+ (void)toCount;
+ (void)count;
+ *count += sizeof(VkStructureType);
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = toCount->sType;
+ }
+ count_extension_struct(featureBits, rootType, toCount->pNext, count);
+ *count += sizeof(VkBool32);
+ *count += sizeof(VkBool32);
+ *count += sizeof(VkBool32);
+}
+
+void count_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ uint32_t featureBits, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* toCount, size_t* count) {
+ (void)featureBits;
+ (void)rootType;
+ (void)toCount;
+ (void)count;
+ *count += sizeof(VkStructureType);
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = toCount->sType;
+ }
+ count_extension_struct(featureBits, rootType, toCount->pNext, count);
+ count_VkExtent2D(featureBits, rootType, (VkExtent2D*)(&toCount->minFragmentDensityTexelSize),
+ count);
+ count_VkExtent2D(featureBits, rootType, (VkExtent2D*)(&toCount->maxFragmentDensityTexelSize),
+ count);
+ *count += sizeof(VkBool32);
+}
+
+void count_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ uint32_t featureBits, VkStructureType rootType,
+ const VkRenderPassFragmentDensityMapCreateInfoEXT* toCount, size_t* count) {
+ (void)featureBits;
+ (void)rootType;
+ (void)toCount;
+ (void)count;
+ *count += sizeof(VkStructureType);
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = toCount->sType;
+ }
+ count_extension_struct(featureBits, rootType, toCount->pNext, count);
+ count_VkAttachmentReference(featureBits, rootType,
+ (VkAttachmentReference*)(&toCount->fragmentDensityMapAttachment),
+ count);
+}
+
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
@@ -8206,6 +8261,105 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ count_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ featureBits, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension),
+ count);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ count_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ featureBits, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension),
+ count);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ count_VkImportColorBufferGOOGLE(
+ featureBits, rootType,
+ reinterpret_cast<const VkImportColorBufferGOOGLE*>(structExtension), count);
+ break;
+ }
+ default: {
+ count_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ featureBits, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension),
+ count);
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ count_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ featureBits, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension),
+ count);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ count_VkCreateBlobGOOGLE(
+ featureBits, rootType,
+ reinterpret_cast<const VkCreateBlobGOOGLE*>(structExtension), count);
+ break;
+ }
+ default: {
+ count_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ featureBits, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension),
+ count);
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ count_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ featureBits, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension),
+ count);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ count_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ featureBits, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension),
+ count);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ count_VkImportBufferGOOGLE(
+ featureBits, rootType,
+ reinterpret_cast<const VkImportBufferGOOGLE*>(structExtension), count);
+ break;
+ }
+ default: {
+ count_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ featureBits, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension),
+ count);
+ break;
+ }
+ }
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
count_VkPhysicalDeviceProvokingVertexFeaturesEXT(
diff --git a/guest/vulkan_enc/goldfish_vk_counting_guest.h b/guest/vulkan_enc/goldfish_vk_counting_guest.h
index d8db6b2..3e8250b 100644
--- a/guest/vulkan_enc/goldfish_vk_counting_guest.h
+++ b/guest/vulkan_enc/goldfish_vk_counting_guest.h
@@ -1575,6 +1575,20 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void count_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ uint32_t featureBits, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* toCount, size_t* count);
+
+void count_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ uint32_t featureBits, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* toCount, size_t* count);
+
+void count_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ uint32_t featureBits, VkStructureType rootType,
+ const VkRenderPassFragmentDensityMapCreateInfoEXT* toCount, size_t* count);
+
+#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(count_VkPhysicalDeviceScalarBlockLayoutFeatures,
count_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)
diff --git a/guest/vulkan_enc/goldfish_vk_deepcopy_guest.cpp b/guest/vulkan_enc/goldfish_vk_deepcopy_guest.cpp
index 23cc624..887d987 100644
--- a/guest/vulkan_enc/goldfish_vk_deepcopy_guest.cpp
+++ b/guest/vulkan_enc/goldfish_vk_deepcopy_guest.cpp
@@ -7555,6 +7555,83 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ Allocator* alloc, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* from,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* to) {
+ (void)alloc;
+ (void)rootType;
+ *to = *from;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = from->sType;
+ }
+ const void* from_pNext = from;
+ size_t pNext_size = 0u;
+ while (!pNext_size && from_pNext) {
+ from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
+ pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
+ }
+ to->pNext = nullptr;
+ if (pNext_size) {
+ to->pNext = (void*)alloc->alloc(pNext_size);
+ deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
+ }
+}
+
+void deepcopy_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ Allocator* alloc, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* from,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* to) {
+ (void)alloc;
+ (void)rootType;
+ *to = *from;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = from->sType;
+ }
+ const void* from_pNext = from;
+ size_t pNext_size = 0u;
+ while (!pNext_size && from_pNext) {
+ from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
+ pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
+ }
+ to->pNext = nullptr;
+ if (pNext_size) {
+ to->pNext = (void*)alloc->alloc(pNext_size);
+ deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
+ }
+ deepcopy_VkExtent2D(alloc, rootType, &from->minFragmentDensityTexelSize,
+ (VkExtent2D*)(&to->minFragmentDensityTexelSize));
+ deepcopy_VkExtent2D(alloc, rootType, &from->maxFragmentDensityTexelSize,
+ (VkExtent2D*)(&to->maxFragmentDensityTexelSize));
+}
+
+void deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ Allocator* alloc, VkStructureType rootType,
+ const VkRenderPassFragmentDensityMapCreateInfoEXT* from,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* to) {
+ (void)alloc;
+ (void)rootType;
+ *to = *from;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = from->sType;
+ }
+ const void* from_pNext = from;
+ size_t pNext_size = 0u;
+ while (!pNext_size && from_pNext) {
+ from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
+ pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
+ }
+ to->pNext = nullptr;
+ if (pNext_size) {
+ to->pNext = (void*)alloc->alloc(pNext_size);
+ deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
+ }
+ deepcopy_VkAttachmentReference(alloc, rootType, &from->fragmentDensityMapAttachment,
+ (VkAttachmentReference*)(&to->fragmentDensityMapAttachment));
+}
+
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
@@ -9560,6 +9637,116 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension),
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension),
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ deepcopy_VkImportColorBufferGOOGLE(
+ alloc, rootType,
+ reinterpret_cast<const VkImportColorBufferGOOGLE*>(structExtension),
+ reinterpret_cast<VkImportColorBufferGOOGLE*>(structExtension_out));
+ break;
+ }
+ default: {
+ deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension),
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ deepcopy_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension),
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ deepcopy_VkCreateBlobGOOGLE(
+ alloc, rootType,
+ reinterpret_cast<const VkCreateBlobGOOGLE*>(structExtension),
+ reinterpret_cast<VkCreateBlobGOOGLE*>(structExtension_out));
+ break;
+ }
+ default: {
+ deepcopy_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension),
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out));
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension),
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension),
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ deepcopy_VkImportBufferGOOGLE(
+ alloc, rootType,
+ reinterpret_cast<const VkImportBufferGOOGLE*>(structExtension),
+ reinterpret_cast<VkImportBufferGOOGLE*>(structExtension_out));
+ break;
+ }
+ default: {
+ deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension),
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+ }
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
deepcopy_VkPhysicalDeviceProvokingVertexFeaturesEXT(
diff --git a/guest/vulkan_enc/goldfish_vk_deepcopy_guest.h b/guest/vulkan_enc/goldfish_vk_deepcopy_guest.h
index da8bc90..393a1e7 100644
--- a/guest/vulkan_enc/goldfish_vk_deepcopy_guest.h
+++ b/guest/vulkan_enc/goldfish_vk_deepcopy_guest.h
@@ -1722,6 +1722,23 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ Allocator* alloc, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* from,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* to);
+
+void deepcopy_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ Allocator* alloc, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* from,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* to);
+
+void deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ Allocator* alloc, VkStructureType rootType,
+ const VkRenderPassFragmentDensityMapCreateInfoEXT* from,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* to);
+
+#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceScalarBlockLayoutFeatures,
deepcopy_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)
diff --git a/guest/vulkan_enc/goldfish_vk_extension_structs_guest.cpp b/guest/vulkan_enc/goldfish_vk_extension_structs_guest.cpp
index 979fed2..f4827d0 100644
--- a/guest/vulkan_enc/goldfish_vk_extension_structs_guest.cpp
+++ b/guest/vulkan_enc/goldfish_vk_extension_structs_guest.cpp
@@ -162,6 +162,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
@@ -632,6 +634,64 @@
return sizeof(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT);
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ return sizeof(VkImportColorBufferGOOGLE);
+ break;
+ }
+ default: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
+ break;
+ }
+ }
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ return sizeof(VkCreateBlobGOOGLE);
+ break;
+ }
+ default: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
+ break;
+ }
+ }
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ return sizeof(VkImportBufferGOOGLE);
+ break;
+ }
+ default: {
+ return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
+ break;
+ }
+ }
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
return sizeof(VkPhysicalDeviceProvokingVertexFeaturesEXT);
@@ -1185,6 +1245,64 @@
return sizeof(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT);
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ return sizeof(VkImportColorBufferGOOGLE);
+ break;
+ }
+ default: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
+ break;
+ }
+ }
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ return sizeof(VkCreateBlobGOOGLE);
+ break;
+ }
+ default: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
+ break;
+ }
+ }
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ return sizeof(VkImportBufferGOOGLE);
+ break;
+ }
+ default: {
+ return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
+ break;
+ }
+ }
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
return sizeof(VkPhysicalDeviceProvokingVertexFeaturesEXT);
diff --git a/guest/vulkan_enc/goldfish_vk_extension_structs_guest.h b/guest/vulkan_enc/goldfish_vk_extension_structs_guest.h
index 71c7390..48a4442 100644
--- a/guest/vulkan_enc/goldfish_vk_extension_structs_guest.h
+++ b/guest/vulkan_enc/goldfish_vk_extension_structs_guest.h
@@ -182,6 +182,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
diff --git a/guest/vulkan_enc/goldfish_vk_marshaling_guest.cpp b/guest/vulkan_enc/goldfish_vk_marshaling_guest.cpp
index 3edd322..9dd6ef2 100644
--- a/guest/vulkan_enc/goldfish_vk_marshaling_guest.cpp
+++ b/guest/vulkan_enc/goldfish_vk_marshaling_guest.cpp
@@ -12194,6 +12194,100 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forMarshaling) {
+ (void)rootType;
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forMarshaling->sType;
+ }
+ marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
+ vkStream->write((VkBool32*)&forMarshaling->fragmentDensityMap, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->fragmentDensityMapDynamic, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->fragmentDensityMapNonSubsampledImages,
+ sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forUnmarshaling) {
+ (void)rootType;
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ forUnmarshaling->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forUnmarshaling->sType;
+ }
+ unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
+ vkStream->read((VkBool32*)&forUnmarshaling->fragmentDensityMap, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->fragmentDensityMapDynamic, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->fragmentDensityMapNonSubsampledImages,
+ sizeof(VkBool32));
+}
+
+void marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forMarshaling) {
+ (void)rootType;
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forMarshaling->sType;
+ }
+ marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
+ marshal_VkExtent2D(vkStream, rootType,
+ (VkExtent2D*)(&forMarshaling->minFragmentDensityTexelSize));
+ marshal_VkExtent2D(vkStream, rootType,
+ (VkExtent2D*)(&forMarshaling->maxFragmentDensityTexelSize));
+ vkStream->write((VkBool32*)&forMarshaling->fragmentDensityInvocations, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forUnmarshaling) {
+ (void)rootType;
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ forUnmarshaling->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forUnmarshaling->sType;
+ }
+ unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
+ unmarshal_VkExtent2D(vkStream, rootType,
+ (VkExtent2D*)(&forUnmarshaling->minFragmentDensityTexelSize));
+ unmarshal_VkExtent2D(vkStream, rootType,
+ (VkExtent2D*)(&forUnmarshaling->maxFragmentDensityTexelSize));
+ vkStream->read((VkBool32*)&forUnmarshaling->fragmentDensityInvocations, sizeof(VkBool32));
+}
+
+void marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ const VkRenderPassFragmentDensityMapCreateInfoEXT* forMarshaling) {
+ (void)rootType;
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forMarshaling->sType;
+ }
+ marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
+ marshal_VkAttachmentReference(
+ vkStream, rootType, (VkAttachmentReference*)(&forMarshaling->fragmentDensityMapAttachment));
+}
+
+void unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* forUnmarshaling) {
+ (void)rootType;
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ forUnmarshaling->sType = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forUnmarshaling->sType;
+ }
+ unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
+ unmarshal_VkAttachmentReference(
+ vkStream, rootType,
+ (VkAttachmentReference*)(&forUnmarshaling->fragmentDensityMapAttachment));
+}
+
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
@@ -14307,6 +14401,97 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ marshal_VkImportColorBufferGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<const VkImportColorBufferGOOGLE*>(structExtension));
+ break;
+ }
+ default: {
+ marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension));
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ marshal_VkCreateBlobGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<const VkCreateBlobGOOGLE*>(structExtension));
+ break;
+ }
+ default: {
+ marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension));
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ marshal_VkImportBufferGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<const VkImportBufferGOOGLE*>(structExtension));
+ break;
+ }
+ default: {
+ marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension));
+ break;
+ }
+ }
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
marshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
@@ -15405,6 +15590,97 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ unmarshal_VkImportColorBufferGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<VkImportColorBufferGOOGLE*>(structExtension_out));
+ break;
+ }
+ default: {
+ unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ unmarshal_VkCreateBlobGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<VkCreateBlobGOOGLE*>(structExtension_out));
+ break;
+ }
+ default: {
+ unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out));
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ unmarshal_VkImportBufferGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<VkImportBufferGOOGLE*>(structExtension_out));
+ break;
+ }
+ default: {
+ unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+ }
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
unmarshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
diff --git a/guest/vulkan_enc/goldfish_vk_marshaling_guest.h b/guest/vulkan_enc/goldfish_vk_marshaling_guest.h
index 008d90e..e981c85 100644
--- a/guest/vulkan_enc/goldfish_vk_marshaling_guest.h
+++ b/guest/vulkan_enc/goldfish_vk_marshaling_guest.h
@@ -3252,6 +3252,32 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forUnmarshaling);
+
+void marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ const VkRenderPassFragmentDensityMapCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* forUnmarshaling);
+
+#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceScalarBlockLayoutFeatures,
marshal_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)
diff --git a/guest/vulkan_enc/goldfish_vk_reserved_marshaling_guest.cpp b/guest/vulkan_enc/goldfish_vk_reserved_marshaling_guest.cpp
index 6c223e7..5ebb12b 100644
--- a/guest/vulkan_enc/goldfish_vk_reserved_marshaling_guest.cpp
+++ b/guest/vulkan_enc/goldfish_vk_reserved_marshaling_guest.cpp
@@ -8208,6 +8208,63 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void reservedmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forMarshaling, uint8_t** ptr) {
+ (void)vkStream;
+ (void)rootType;
+ memcpy(*ptr, (VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ *ptr += sizeof(VkStructureType);
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forMarshaling->sType;
+ }
+ reservedmarshal_extension_struct(vkStream, rootType, forMarshaling->pNext, ptr);
+ memcpy(*ptr, (VkBool32*)&forMarshaling->fragmentDensityMap, sizeof(VkBool32));
+ *ptr += sizeof(VkBool32);
+ memcpy(*ptr, (VkBool32*)&forMarshaling->fragmentDensityMapDynamic, sizeof(VkBool32));
+ *ptr += sizeof(VkBool32);
+ memcpy(*ptr, (VkBool32*)&forMarshaling->fragmentDensityMapNonSubsampledImages,
+ sizeof(VkBool32));
+ *ptr += sizeof(VkBool32);
+}
+
+void reservedmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forMarshaling, uint8_t** ptr) {
+ (void)vkStream;
+ (void)rootType;
+ memcpy(*ptr, (VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ *ptr += sizeof(VkStructureType);
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forMarshaling->sType;
+ }
+ reservedmarshal_extension_struct(vkStream, rootType, forMarshaling->pNext, ptr);
+ reservedmarshal_VkExtent2D(vkStream, rootType,
+ (VkExtent2D*)(&forMarshaling->minFragmentDensityTexelSize), ptr);
+ reservedmarshal_VkExtent2D(vkStream, rootType,
+ (VkExtent2D*)(&forMarshaling->maxFragmentDensityTexelSize), ptr);
+ memcpy(*ptr, (VkBool32*)&forMarshaling->fragmentDensityInvocations, sizeof(VkBool32));
+ *ptr += sizeof(VkBool32);
+}
+
+void reservedmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ const VkRenderPassFragmentDensityMapCreateInfoEXT* forMarshaling, uint8_t** ptr) {
+ (void)vkStream;
+ (void)rootType;
+ memcpy(*ptr, (VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ *ptr += sizeof(VkStructureType);
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forMarshaling->sType;
+ }
+ reservedmarshal_extension_struct(vkStream, rootType, forMarshaling->pNext, ptr);
+ reservedmarshal_VkAttachmentReference(
+ vkStream, rootType, (VkAttachmentReference*)(&forMarshaling->fragmentDensityMapAttachment),
+ ptr);
+}
+
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
@@ -9961,6 +10018,105 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ reservedmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension),
+ ptr);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ reservedmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension),
+ ptr);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ reservedmarshal_VkImportColorBufferGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<const VkImportColorBufferGOOGLE*>(structExtension), ptr);
+ break;
+ }
+ default: {
+ reservedmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension),
+ ptr);
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ reservedmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension),
+ ptr);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ reservedmarshal_VkCreateBlobGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<const VkCreateBlobGOOGLE*>(structExtension), ptr);
+ break;
+ }
+ default: {
+ reservedmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension),
+ ptr);
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ reservedmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension),
+ ptr);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ reservedmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension),
+ ptr);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ reservedmarshal_VkImportBufferGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<const VkImportBufferGOOGLE*>(structExtension), ptr);
+ break;
+ }
+ default: {
+ reservedmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension),
+ ptr);
+ break;
+ }
+ }
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
reservedmarshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
diff --git a/guest/vulkan_enc/goldfish_vk_reserved_marshaling_guest.h b/guest/vulkan_enc/goldfish_vk_reserved_marshaling_guest.h
index ac2de29..13bac31 100644
--- a/guest/vulkan_enc/goldfish_vk_reserved_marshaling_guest.h
+++ b/guest/vulkan_enc/goldfish_vk_reserved_marshaling_guest.h
@@ -1749,6 +1749,20 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void reservedmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forMarshaling, uint8_t** ptr);
+
+void reservedmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forMarshaling, uint8_t** ptr);
+
+void reservedmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VulkanStreamGuest* vkStream, VkStructureType rootType,
+ const VkRenderPassFragmentDensityMapCreateInfoEXT* forMarshaling, uint8_t** ptr);
+
+#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceScalarBlockLayoutFeatures,
reservedmarshal_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)
diff --git a/guest/vulkan_enc/goldfish_vk_transform_guest.cpp b/guest/vulkan_enc/goldfish_vk_transform_guest.cpp
index 8aa5c7d..e6c6673 100644
--- a/guest/vulkan_enc/goldfish_vk_transform_guest.cpp
+++ b/guest/vulkan_enc/goldfish_vk_transform_guest.cpp
@@ -7022,6 +7022,76 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void transform_tohost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ ResourceTracker* resourceTracker, VkPhysicalDeviceFragmentDensityMapFeaturesEXT* toTransform) {
+ (void)resourceTracker;
+ (void)toTransform;
+ if (toTransform->pNext) {
+ transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
+ }
+}
+
+void transform_fromhost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ ResourceTracker* resourceTracker, VkPhysicalDeviceFragmentDensityMapFeaturesEXT* toTransform) {
+ (void)resourceTracker;
+ (void)toTransform;
+ if (toTransform->pNext) {
+ transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
+ }
+}
+
+void transform_tohost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ ResourceTracker* resourceTracker,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* toTransform) {
+ (void)resourceTracker;
+ (void)toTransform;
+ if (toTransform->pNext) {
+ transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
+ }
+ transform_tohost_VkExtent2D(resourceTracker,
+ (VkExtent2D*)(&toTransform->minFragmentDensityTexelSize));
+ transform_tohost_VkExtent2D(resourceTracker,
+ (VkExtent2D*)(&toTransform->maxFragmentDensityTexelSize));
+}
+
+void transform_fromhost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ ResourceTracker* resourceTracker,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* toTransform) {
+ (void)resourceTracker;
+ (void)toTransform;
+ if (toTransform->pNext) {
+ transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
+ }
+ transform_fromhost_VkExtent2D(resourceTracker,
+ (VkExtent2D*)(&toTransform->minFragmentDensityTexelSize));
+ transform_fromhost_VkExtent2D(resourceTracker,
+ (VkExtent2D*)(&toTransform->maxFragmentDensityTexelSize));
+}
+
+void transform_tohost_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ ResourceTracker* resourceTracker, VkRenderPassFragmentDensityMapCreateInfoEXT* toTransform) {
+ (void)resourceTracker;
+ (void)toTransform;
+ if (toTransform->pNext) {
+ transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
+ }
+ transform_tohost_VkAttachmentReference(
+ resourceTracker, (VkAttachmentReference*)(&toTransform->fragmentDensityMapAttachment));
+}
+
+void transform_fromhost_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ ResourceTracker* resourceTracker, VkRenderPassFragmentDensityMapCreateInfoEXT* toTransform) {
+ (void)resourceTracker;
+ (void)toTransform;
+ if (toTransform->pNext) {
+ transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
+ }
+ transform_fromhost_VkAttachmentReference(
+ resourceTracker, (VkAttachmentReference*)(&toTransform->fragmentDensityMapAttachment));
+}
+
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
@@ -8679,6 +8749,26 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ transform_tohost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ resourceTracker, reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ transform_tohost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ resourceTracker, reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ transform_tohost_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ resourceTracker, reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
transform_tohost_VkPhysicalDeviceProvokingVertexFeaturesEXT(
@@ -9725,6 +9815,26 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ transform_fromhost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ resourceTracker, reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ transform_fromhost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ resourceTracker, reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ transform_fromhost_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ resourceTracker, reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
transform_fromhost_VkPhysicalDeviceProvokingVertexFeaturesEXT(
diff --git a/guest/vulkan_enc/goldfish_vk_transform_guest.h b/guest/vulkan_enc/goldfish_vk_transform_guest.h
index fb8ef89..540e703 100644
--- a/guest/vulkan_enc/goldfish_vk_transform_guest.h
+++ b/guest/vulkan_enc/goldfish_vk_transform_guest.h
@@ -2763,6 +2763,26 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void transform_tohost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ ResourceTracker* resourceTracker, VkPhysicalDeviceFragmentDensityMapFeaturesEXT* toTransform);
+
+void transform_fromhost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ ResourceTracker* resourceTracker, VkPhysicalDeviceFragmentDensityMapFeaturesEXT* toTransform);
+
+void transform_tohost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ ResourceTracker* resourceTracker, VkPhysicalDeviceFragmentDensityMapPropertiesEXT* toTransform);
+
+void transform_fromhost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ ResourceTracker* resourceTracker, VkPhysicalDeviceFragmentDensityMapPropertiesEXT* toTransform);
+
+void transform_tohost_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ ResourceTracker* resourceTracker, VkRenderPassFragmentDensityMapCreateInfoEXT* toTransform);
+
+void transform_fromhost_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ ResourceTracker* resourceTracker, VkRenderPassFragmentDensityMapCreateInfoEXT* toTransform);
+
+#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceScalarBlockLayoutFeatures,
transform_tohost_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)
diff --git a/host/vulkan/VkDecoder.cpp b/host/vulkan/VkDecoder.cpp
index d2cc9ac..8e965de 100644
--- a/host/vulkan/VkDecoder.cpp
+++ b/host/vulkan/VkDecoder.cpp
@@ -18290,6 +18290,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
diff --git a/host/vulkan/VkDecoder.h b/host/vulkan/VkDecoder.h
index ed04fe1..27041d8 100644
--- a/host/vulkan/VkDecoder.h
+++ b/host/vulkan/VkDecoder.h
@@ -196,6 +196,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
diff --git a/host/vulkan/VkDecoderSnapshot.cpp b/host/vulkan/VkDecoderSnapshot.cpp
index d901f76..dab9099 100644
--- a/host/vulkan/VkDecoderSnapshot.cpp
+++ b/host/vulkan/VkDecoderSnapshot.cpp
@@ -2430,6 +2430,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
diff --git a/host/vulkan/VkDecoderSnapshot.h b/host/vulkan/VkDecoderSnapshot.h
index b68db16..8d8783b 100644
--- a/host/vulkan/VkDecoderSnapshot.h
+++ b/host/vulkan/VkDecoderSnapshot.h
@@ -1337,6 +1337,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
diff --git a/host/vulkan/VkSubDecoder.cpp b/host/vulkan/VkSubDecoder.cpp
index 194cf92..c89cd81 100644
--- a/host/vulkan/VkSubDecoder.cpp
+++ b/host/vulkan/VkSubDecoder.cpp
@@ -2746,6 +2746,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
diff --git a/host/vulkan/cereal/common/goldfish_vk_deepcopy.cpp b/host/vulkan/cereal/common/goldfish_vk_deepcopy.cpp
index 841a6d7..60e5411 100644
--- a/host/vulkan/cereal/common/goldfish_vk_deepcopy.cpp
+++ b/host/vulkan/cereal/common/goldfish_vk_deepcopy.cpp
@@ -7762,6 +7762,83 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ Allocator* alloc, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* from,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* to) {
+ (void)alloc;
+ (void)rootType;
+ *to = *from;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = from->sType;
+ }
+ const void* from_pNext = from;
+ size_t pNext_size = 0u;
+ while (!pNext_size && from_pNext) {
+ from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
+ pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
+ }
+ to->pNext = nullptr;
+ if (pNext_size) {
+ to->pNext = (void*)alloc->alloc(pNext_size);
+ deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
+ }
+}
+
+void deepcopy_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ Allocator* alloc, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* from,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* to) {
+ (void)alloc;
+ (void)rootType;
+ *to = *from;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = from->sType;
+ }
+ const void* from_pNext = from;
+ size_t pNext_size = 0u;
+ while (!pNext_size && from_pNext) {
+ from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
+ pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
+ }
+ to->pNext = nullptr;
+ if (pNext_size) {
+ to->pNext = (void*)alloc->alloc(pNext_size);
+ deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
+ }
+ deepcopy_VkExtent2D(alloc, rootType, &from->minFragmentDensityTexelSize,
+ (VkExtent2D*)(&to->minFragmentDensityTexelSize));
+ deepcopy_VkExtent2D(alloc, rootType, &from->maxFragmentDensityTexelSize,
+ (VkExtent2D*)(&to->maxFragmentDensityTexelSize));
+}
+
+void deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ Allocator* alloc, VkStructureType rootType,
+ const VkRenderPassFragmentDensityMapCreateInfoEXT* from,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* to) {
+ (void)alloc;
+ (void)rootType;
+ *to = *from;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = from->sType;
+ }
+ const void* from_pNext = from;
+ size_t pNext_size = 0u;
+ while (!pNext_size && from_pNext) {
+ from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
+ pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
+ }
+ to->pNext = nullptr;
+ if (pNext_size) {
+ to->pNext = (void*)alloc->alloc(pNext_size);
+ deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
+ }
+ deepcopy_VkAttachmentReference(alloc, rootType, &from->fragmentDensityMapAttachment,
+ (VkAttachmentReference*)(&to->fragmentDensityMapAttachment));
+}
+
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
@@ -9950,6 +10027,116 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension),
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension),
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ deepcopy_VkImportColorBufferGOOGLE(
+ alloc, rootType,
+ reinterpret_cast<const VkImportColorBufferGOOGLE*>(structExtension),
+ reinterpret_cast<VkImportColorBufferGOOGLE*>(structExtension_out));
+ break;
+ }
+ default: {
+ deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension),
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ deepcopy_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension),
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ deepcopy_VkCreateBlobGOOGLE(
+ alloc, rootType,
+ reinterpret_cast<const VkCreateBlobGOOGLE*>(structExtension),
+ reinterpret_cast<VkCreateBlobGOOGLE*>(structExtension_out));
+ break;
+ }
+ default: {
+ deepcopy_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension),
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out));
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension),
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension),
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ deepcopy_VkImportBufferGOOGLE(
+ alloc, rootType,
+ reinterpret_cast<const VkImportBufferGOOGLE*>(structExtension),
+ reinterpret_cast<VkImportBufferGOOGLE*>(structExtension_out));
+ break;
+ }
+ default: {
+ deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ alloc, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension),
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+ }
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
deepcopy_VkPhysicalDeviceProvokingVertexFeaturesEXT(
diff --git a/host/vulkan/cereal/common/goldfish_vk_deepcopy.h b/host/vulkan/cereal/common/goldfish_vk_deepcopy.h
index b293359..19cf402 100644
--- a/host/vulkan/cereal/common/goldfish_vk_deepcopy.h
+++ b/host/vulkan/cereal/common/goldfish_vk_deepcopy.h
@@ -1746,6 +1746,23 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ Allocator* alloc, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* from,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* to);
+
+void deepcopy_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ Allocator* alloc, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* from,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* to);
+
+void deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ Allocator* alloc, VkStructureType rootType,
+ const VkRenderPassFragmentDensityMapCreateInfoEXT* from,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* to);
+
+#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceScalarBlockLayoutFeatures,
deepcopy_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)
diff --git a/host/vulkan/cereal/common/goldfish_vk_dispatch.cpp b/host/vulkan/cereal/common/goldfish_vk_dispatch.cpp
index f3bff18..65dcfe3 100644
--- a/host/vulkan/cereal/common/goldfish_vk_dispatch.cpp
+++ b/host/vulkan/cereal/common/goldfish_vk_dispatch.cpp
@@ -167,6 +167,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
diff --git a/host/vulkan/cereal/common/goldfish_vk_dispatch.h b/host/vulkan/cereal/common/goldfish_vk_dispatch.h
index b2ecac9..a25d740 100644
--- a/host/vulkan/cereal/common/goldfish_vk_dispatch.h
+++ b/host/vulkan/cereal/common/goldfish_vk_dispatch.h
@@ -522,6 +522,8 @@
#ifdef VK_EXT_metal_surface
PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT;
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
diff --git a/host/vulkan/cereal/common/goldfish_vk_extension_structs.cpp b/host/vulkan/cereal/common/goldfish_vk_extension_structs.cpp
index d7e7019..6ba7ee4 100644
--- a/host/vulkan/cereal/common/goldfish_vk_extension_structs.cpp
+++ b/host/vulkan/cereal/common/goldfish_vk_extension_structs.cpp
@@ -162,6 +162,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
@@ -646,6 +648,64 @@
return sizeof(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT);
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ return sizeof(VkImportColorBufferGOOGLE);
+ break;
+ }
+ default: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
+ break;
+ }
+ }
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ return sizeof(VkCreateBlobGOOGLE);
+ break;
+ }
+ default: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
+ break;
+ }
+ }
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ return sizeof(VkImportBufferGOOGLE);
+ break;
+ }
+ default: {
+ return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
+ break;
+ }
+ }
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
return sizeof(VkPhysicalDeviceProvokingVertexFeaturesEXT);
@@ -1232,6 +1292,64 @@
return sizeof(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT);
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ return sizeof(VkImportColorBufferGOOGLE);
+ break;
+ }
+ default: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
+ break;
+ }
+ }
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ return sizeof(VkCreateBlobGOOGLE);
+ break;
+ }
+ default: {
+ return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
+ break;
+ }
+ }
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ return sizeof(VkImportBufferGOOGLE);
+ break;
+ }
+ default: {
+ return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
+ break;
+ }
+ }
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
return sizeof(VkPhysicalDeviceProvokingVertexFeaturesEXT);
diff --git a/host/vulkan/cereal/common/goldfish_vk_extension_structs.h b/host/vulkan/cereal/common/goldfish_vk_extension_structs.h
index 06ba3c0..7a0a923 100644
--- a/host/vulkan/cereal/common/goldfish_vk_extension_structs.h
+++ b/host/vulkan/cereal/common/goldfish_vk_extension_structs.h
@@ -176,6 +176,8 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
diff --git a/host/vulkan/cereal/common/goldfish_vk_marshaling.cpp b/host/vulkan/cereal/common/goldfish_vk_marshaling.cpp
index 6cf617b..94abfa4 100644
--- a/host/vulkan/cereal/common/goldfish_vk_marshaling.cpp
+++ b/host/vulkan/cereal/common/goldfish_vk_marshaling.cpp
@@ -15681,6 +15681,136 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forMarshaling) {
+ (void)rootType;
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forMarshaling->sType;
+ }
+ marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
+ vkStream->write((VkBool32*)&forMarshaling->fragmentDensityMap, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->fragmentDensityMapDynamic, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->fragmentDensityMapNonSubsampledImages,
+ sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forUnmarshaling) {
+ (void)rootType;
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ forUnmarshaling->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forUnmarshaling->sType;
+ }
+ size_t pNext_size;
+ pNext_size = vkStream->getBe32();
+ forUnmarshaling->pNext = nullptr;
+ if (pNext_size) {
+ vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
+ vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
+ VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
+ vkStream->alloc((void**)&forUnmarshaling->pNext,
+ goldfish_vk_extension_struct_size_with_stream_features(
+ vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
+ *(VkStructureType*)forUnmarshaling->pNext = extType;
+ unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
+ }
+ vkStream->read((VkBool32*)&forUnmarshaling->fragmentDensityMap, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->fragmentDensityMapDynamic, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->fragmentDensityMapNonSubsampledImages,
+ sizeof(VkBool32));
+}
+
+void marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forMarshaling) {
+ (void)rootType;
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forMarshaling->sType;
+ }
+ marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
+ marshal_VkExtent2D(vkStream, rootType,
+ (VkExtent2D*)(&forMarshaling->minFragmentDensityTexelSize));
+ marshal_VkExtent2D(vkStream, rootType,
+ (VkExtent2D*)(&forMarshaling->maxFragmentDensityTexelSize));
+ vkStream->write((VkBool32*)&forMarshaling->fragmentDensityInvocations, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forUnmarshaling) {
+ (void)rootType;
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ forUnmarshaling->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forUnmarshaling->sType;
+ }
+ size_t pNext_size;
+ pNext_size = vkStream->getBe32();
+ forUnmarshaling->pNext = nullptr;
+ if (pNext_size) {
+ vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
+ vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
+ VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
+ vkStream->alloc((void**)&forUnmarshaling->pNext,
+ goldfish_vk_extension_struct_size_with_stream_features(
+ vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
+ *(VkStructureType*)forUnmarshaling->pNext = extType;
+ unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
+ }
+ unmarshal_VkExtent2D(vkStream, rootType,
+ (VkExtent2D*)(&forUnmarshaling->minFragmentDensityTexelSize));
+ unmarshal_VkExtent2D(vkStream, rootType,
+ (VkExtent2D*)(&forUnmarshaling->maxFragmentDensityTexelSize));
+ vkStream->read((VkBool32*)&forUnmarshaling->fragmentDensityInvocations, sizeof(VkBool32));
+}
+
+void marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ const VkRenderPassFragmentDensityMapCreateInfoEXT* forMarshaling) {
+ (void)rootType;
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forMarshaling->sType;
+ }
+ marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
+ marshal_VkAttachmentReference(
+ vkStream, rootType, (VkAttachmentReference*)(&forMarshaling->fragmentDensityMapAttachment));
+}
+
+void unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* forUnmarshaling) {
+ (void)rootType;
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ forUnmarshaling->sType = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forUnmarshaling->sType;
+ }
+ size_t pNext_size;
+ pNext_size = vkStream->getBe32();
+ forUnmarshaling->pNext = nullptr;
+ if (pNext_size) {
+ vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
+ vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
+ VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
+ vkStream->alloc((void**)&forUnmarshaling->pNext,
+ goldfish_vk_extension_struct_size_with_stream_features(
+ vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
+ *(VkStructureType*)forUnmarshaling->pNext = extType;
+ unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
+ }
+ unmarshal_VkAttachmentReference(
+ vkStream, rootType,
+ (VkAttachmentReference*)(&forUnmarshaling->fragmentDensityMapAttachment));
+}
+
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
@@ -18548,6 +18678,97 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ marshal_VkImportColorBufferGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<const VkImportColorBufferGOOGLE*>(structExtension));
+ break;
+ }
+ default: {
+ marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension));
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ marshal_VkCreateBlobGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<const VkCreateBlobGOOGLE*>(structExtension));
+ break;
+ }
+ default: {
+ marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension));
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ marshal_VkImportBufferGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<const VkImportBufferGOOGLE*>(structExtension));
+ break;
+ }
+ default: {
+ marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension));
+ break;
+ }
+ }
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
marshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
@@ -19701,6 +19922,97 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ unmarshal_VkImportColorBufferGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<VkImportColorBufferGOOGLE*>(structExtension_out));
+ break;
+ }
+ default: {
+ unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ unmarshal_VkCreateBlobGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<VkCreateBlobGOOGLE*>(structExtension_out));
+ break;
+ }
+ default: {
+ unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out));
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ unmarshal_VkImportBufferGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<VkImportBufferGOOGLE*>(structExtension_out));
+ break;
+ }
+ default: {
+ unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+ }
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
unmarshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
diff --git a/host/vulkan/cereal/common/goldfish_vk_marshaling.h b/host/vulkan/cereal/common/goldfish_vk_marshaling.h
index 84054ca..51a8b16 100644
--- a/host/vulkan/cereal/common/goldfish_vk_marshaling.h
+++ b/host/vulkan/cereal/common/goldfish_vk_marshaling.h
@@ -3275,6 +3275,32 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forUnmarshaling);
+
+void marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ const VkRenderPassFragmentDensityMapCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* forUnmarshaling);
+
+#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceScalarBlockLayoutFeatures,
marshal_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)
diff --git a/host/vulkan/cereal/common/goldfish_vk_reserved_marshaling.cpp b/host/vulkan/cereal/common/goldfish_vk_reserved_marshaling.cpp
index ffaef3d..ba88df5 100644
--- a/host/vulkan/cereal/common/goldfish_vk_reserved_marshaling.cpp
+++ b/host/vulkan/cereal/common/goldfish_vk_reserved_marshaling.cpp
@@ -12097,6 +12097,108 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void reservedunmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
+ memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
+ *ptr += sizeof(VkStructureType);
+ forUnmarshaling->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forUnmarshaling->sType;
+ }
+ uint32_t pNext_size;
+ memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
+ android::base::Stream::fromBe32((uint8_t*)&pNext_size);
+ *ptr += sizeof(uint32_t);
+ forUnmarshaling->pNext = nullptr;
+ if (pNext_size) {
+ vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
+ memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
+ *ptr += sizeof(VkStructureType);
+ VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
+ vkStream->alloc((void**)&forUnmarshaling->pNext,
+ goldfish_vk_extension_struct_size_with_stream_features(
+ vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
+ *(VkStructureType*)forUnmarshaling->pNext = extType;
+ reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
+ ptr);
+ }
+ memcpy((VkBool32*)&forUnmarshaling->fragmentDensityMap, *ptr, sizeof(VkBool32));
+ *ptr += sizeof(VkBool32);
+ memcpy((VkBool32*)&forUnmarshaling->fragmentDensityMapDynamic, *ptr, sizeof(VkBool32));
+ *ptr += sizeof(VkBool32);
+ memcpy((VkBool32*)&forUnmarshaling->fragmentDensityMapNonSubsampledImages, *ptr,
+ sizeof(VkBool32));
+ *ptr += sizeof(VkBool32);
+}
+
+void reservedunmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
+ memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
+ *ptr += sizeof(VkStructureType);
+ forUnmarshaling->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forUnmarshaling->sType;
+ }
+ uint32_t pNext_size;
+ memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
+ android::base::Stream::fromBe32((uint8_t*)&pNext_size);
+ *ptr += sizeof(uint32_t);
+ forUnmarshaling->pNext = nullptr;
+ if (pNext_size) {
+ vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
+ memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
+ *ptr += sizeof(VkStructureType);
+ VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
+ vkStream->alloc((void**)&forUnmarshaling->pNext,
+ goldfish_vk_extension_struct_size_with_stream_features(
+ vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
+ *(VkStructureType*)forUnmarshaling->pNext = extType;
+ reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
+ ptr);
+ }
+ reservedunmarshal_VkExtent2D(vkStream, rootType,
+ (VkExtent2D*)(&forUnmarshaling->minFragmentDensityTexelSize), ptr);
+ reservedunmarshal_VkExtent2D(vkStream, rootType,
+ (VkExtent2D*)(&forUnmarshaling->maxFragmentDensityTexelSize), ptr);
+ memcpy((VkBool32*)&forUnmarshaling->fragmentDensityInvocations, *ptr, sizeof(VkBool32));
+ *ptr += sizeof(VkBool32);
+}
+
+void reservedunmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
+ memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
+ *ptr += sizeof(VkStructureType);
+ forUnmarshaling->sType = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT;
+ if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ rootType = forUnmarshaling->sType;
+ }
+ uint32_t pNext_size;
+ memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
+ android::base::Stream::fromBe32((uint8_t*)&pNext_size);
+ *ptr += sizeof(uint32_t);
+ forUnmarshaling->pNext = nullptr;
+ if (pNext_size) {
+ vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
+ memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
+ *ptr += sizeof(VkStructureType);
+ VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
+ vkStream->alloc((void**)&forUnmarshaling->pNext,
+ goldfish_vk_extension_struct_size_with_stream_features(
+ vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
+ *(VkStructureType*)forUnmarshaling->pNext = extType;
+ reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
+ ptr);
+ }
+ reservedunmarshal_VkAttachmentReference(
+ vkStream, rootType,
+ (VkAttachmentReference*)(&forUnmarshaling->fragmentDensityMapAttachment), ptr);
+}
+
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
@@ -14633,6 +14735,105 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+ reservedunmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out),
+ ptr);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
+ reservedunmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out),
+ ptr);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ reservedunmarshal_VkImportColorBufferGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<VkImportColorBufferGOOGLE*>(structExtension_out), ptr);
+ break;
+ }
+ default: {
+ reservedunmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out),
+ ptr);
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
+ reservedunmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out),
+ ptr);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ reservedunmarshal_VkCreateBlobGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<VkCreateBlobGOOGLE*>(structExtension_out), ptr);
+ break;
+ }
+ default: {
+ reservedunmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out),
+ ptr);
+ break;
+ }
+ }
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ switch (rootType) {
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
+ reservedunmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out),
+ ptr);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
+ reservedunmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out),
+ ptr);
+ break;
+ }
+ case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
+ reservedunmarshal_VkImportBufferGOOGLE(
+ vkStream, rootType,
+ reinterpret_cast<VkImportBufferGOOGLE*>(structExtension_out), ptr);
+ break;
+ }
+ default: {
+ reservedunmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ vkStream, rootType,
+ reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out),
+ ptr);
+ break;
+ }
+ }
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
reservedunmarshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
diff --git a/host/vulkan/cereal/common/goldfish_vk_reserved_marshaling.h b/host/vulkan/cereal/common/goldfish_vk_reserved_marshaling.h
index 377d139..fd75598 100644
--- a/host/vulkan/cereal/common/goldfish_vk_reserved_marshaling.h
+++ b/host/vulkan/cereal/common/goldfish_vk_reserved_marshaling.h
@@ -1738,6 +1738,20 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void reservedunmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forUnmarshaling, uint8_t** ptr);
+
+void reservedunmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forUnmarshaling, uint8_t** ptr);
+
+void reservedunmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VulkanStream* vkStream, VkStructureType rootType,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* forUnmarshaling, uint8_t** ptr);
+
+#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(reservedunmarshal_VkPhysicalDeviceScalarBlockLayoutFeatures,
reservedunmarshal_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)
diff --git a/host/vulkan/cereal/common/goldfish_vk_transform.cpp b/host/vulkan/cereal/common/goldfish_vk_transform.cpp
index 8790c1c..e80c899 100644
--- a/host/vulkan/cereal/common/goldfish_vk_transform.cpp
+++ b/host/vulkan/cereal/common/goldfish_vk_transform.cpp
@@ -7234,6 +7234,80 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void transform_tohost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VkDecoderGlobalState* resourceTracker,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* toTransform) {
+ (void)resourceTracker;
+ (void)toTransform;
+ if (toTransform->pNext) {
+ transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
+ }
+}
+
+void transform_fromhost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VkDecoderGlobalState* resourceTracker,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* toTransform) {
+ (void)resourceTracker;
+ (void)toTransform;
+ if (toTransform->pNext) {
+ transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
+ }
+}
+
+void transform_tohost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VkDecoderGlobalState* resourceTracker,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* toTransform) {
+ (void)resourceTracker;
+ (void)toTransform;
+ if (toTransform->pNext) {
+ transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
+ }
+ transform_tohost_VkExtent2D(resourceTracker,
+ (VkExtent2D*)(&toTransform->minFragmentDensityTexelSize));
+ transform_tohost_VkExtent2D(resourceTracker,
+ (VkExtent2D*)(&toTransform->maxFragmentDensityTexelSize));
+}
+
+void transform_fromhost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VkDecoderGlobalState* resourceTracker,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* toTransform) {
+ (void)resourceTracker;
+ (void)toTransform;
+ if (toTransform->pNext) {
+ transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
+ }
+ transform_fromhost_VkExtent2D(resourceTracker,
+ (VkExtent2D*)(&toTransform->minFragmentDensityTexelSize));
+ transform_fromhost_VkExtent2D(resourceTracker,
+ (VkExtent2D*)(&toTransform->maxFragmentDensityTexelSize));
+}
+
+void transform_tohost_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VkDecoderGlobalState* resourceTracker,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* toTransform) {
+ (void)resourceTracker;
+ (void)toTransform;
+ if (toTransform->pNext) {
+ transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
+ }
+ transform_tohost_VkAttachmentReference(
+ resourceTracker, (VkAttachmentReference*)(&toTransform->fragmentDensityMapAttachment));
+}
+
+void transform_fromhost_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VkDecoderGlobalState* resourceTracker,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* toTransform) {
+ (void)resourceTracker;
+ (void)toTransform;
+ if (toTransform->pNext) {
+ transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
+ }
+ transform_fromhost_VkAttachmentReference(
+ resourceTracker, (VkAttachmentReference*)(&toTransform->fragmentDensityMapAttachment));
+}
+
+#endif
#ifdef VK_EXT_scalar_block_layout
#endif
#ifdef VK_EXT_subgroup_size_control
@@ -9045,6 +9119,26 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ transform_tohost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ resourceTracker, reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ transform_tohost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ resourceTracker, reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ transform_tohost_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ resourceTracker, reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
transform_tohost_VkPhysicalDeviceProvokingVertexFeaturesEXT(
@@ -10150,6 +10244,26 @@
break;
}
#endif
+#ifdef VK_EXT_fragment_density_map
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+ transform_fromhost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ resourceTracker, reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+ transform_fromhost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ resourceTracker, reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
+ structExtension_out));
+ break;
+ }
+ case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+ transform_fromhost_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ resourceTracker, reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
+ structExtension_out));
+ break;
+ }
+#endif
#ifdef VK_EXT_provoking_vertex
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
transform_fromhost_VkPhysicalDeviceProvokingVertexFeaturesEXT(
diff --git a/host/vulkan/cereal/common/goldfish_vk_transform.h b/host/vulkan/cereal/common/goldfish_vk_transform.h
index 359fa4d..b7b5851 100644
--- a/host/vulkan/cereal/common/goldfish_vk_transform.h
+++ b/host/vulkan/cereal/common/goldfish_vk_transform.h
@@ -2884,6 +2884,32 @@
#endif
#ifdef VK_EXT_metal_surface
#endif
+#ifdef VK_EXT_fragment_density_map
+void transform_tohost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VkDecoderGlobalState* resourceTracker,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* toTransform);
+
+void transform_fromhost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
+ VkDecoderGlobalState* resourceTracker,
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT* toTransform);
+
+void transform_tohost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VkDecoderGlobalState* resourceTracker,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* toTransform);
+
+void transform_fromhost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
+ VkDecoderGlobalState* resourceTracker,
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT* toTransform);
+
+void transform_tohost_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VkDecoderGlobalState* resourceTracker,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* toTransform);
+
+void transform_fromhost_VkRenderPassFragmentDensityMapCreateInfoEXT(
+ VkDecoderGlobalState* resourceTracker,
+ VkRenderPassFragmentDensityMapCreateInfoEXT* toTransform);
+
+#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceScalarBlockLayoutFeatures,
transform_tohost_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)