Skip to content

Commit

Permalink
profiles: Support VK_EXT_host_image_copy
Browse files Browse the repository at this point in the history
  • Loading branch information
ShabbyX committed Sep 30, 2024
1 parent baf06ff commit 6df30b6
Show file tree
Hide file tree
Showing 6 changed files with 166 additions and 48 deletions.
11 changes: 7 additions & 4 deletions profiles/test/data/VP_LUNARG_test_host_image_copy/local_gpu.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"VK_EXT_global_priority": 2,
"VK_EXT_global_priority_query": 1,
"VK_EXT_graphics_pipeline_library": 1,
"VK_EXT_host_image_copy": 1,
"VK_EXT_host_query_reset": 1,
"VK_EXT_image_2d_view_of_3d": 1,
"VK_EXT_image_drm_format_modifier": 2,
Expand Down Expand Up @@ -1407,13 +1408,15 @@
"maxBufferSize": 4294967292
},
"VkPhysicalDeviceHostImageCopyPropertiesEXT": {
"copySrcLayoutCount": 0,
"pCopySrcLayouts": [

"VK_IMAGE_LAYOUT_GENERAL",
"VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL",
"VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"
],
"copyDstLayoutCount": 0,
"pCopyDstLayouts": [

"VK_IMAGE_LAYOUT_GENERAL",
"VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL",
"VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"
],
"optimalTilingLayoutUUID": [
0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"VK_EXT_global_priority_query": 1,
"VK_EXT_graphics_pipeline_library": 1,
"VK_EXT_hdr_metadata": 2,
"VK_EXT_host_image_copy": 1,
"VK_EXT_host_query_reset": 1,
"VK_EXT_image_2d_view_of_3d": 1,
"VK_EXT_image_drm_format_modifier": 2,
Expand Down Expand Up @@ -964,13 +965,15 @@
"maxBufferSize": 4294967296
},
"VkPhysicalDeviceHostImageCopyPropertiesEXT": {
"copySrcLayoutCount": 0,
"pCopySrcLayouts": [

"VK_IMAGE_LAYOUT_GENERAL",
"VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL",
"VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"
],
"copyDstLayoutCount": 0,
"pCopyDstLayouts": [

"VK_IMAGE_LAYOUT_GENERAL",
"VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL",
"VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"
],
"optimalTilingLayoutUUID": [
0,
Expand Down
20 changes: 13 additions & 7 deletions scripts/gen_profiles_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -575,7 +575,7 @@ def add_members(self, merged, entry, property = None):
continue

xmlmember = self.registry.structs[property].members[member]
if xmlmember.limittype == 'exact' or xmlmember.limittype == 'noauto':
if (xmlmember.limittype == 'exact' or xmlmember.limittype == 'noauto') and not xmlmember.isDynamicallySizedArrayWithCap():
del merged[member]
#elif 'mul' in xmlmember.limittype and xmlmember.type == 'float':
# del merged[member]
Expand All @@ -585,18 +585,14 @@ def add_members(self, merged, entry, property = None):
merged[member] = entry[member]
elif not member in merged:
xmlmember = self.registry.structs[property].members[member]
if xmlmember.limittype == 'exact' or xmlmember.limittype == 'noauto':
if (xmlmember.limittype == 'exact' or xmlmember.limittype == 'noauto') and not xmlmember.isDynamicallySizedArrayWithCap():
continue
elif self.mode == 'union' or self.first is True:
if xmlmember.type == 'uint64_t' or xmlmember.type == 'VkDeviceSize':
merged[member] = int(entry[member])
else:
merged[member] = entry[member]
else:
# VK_EXT_host_image_copy is unsupported
if property == 'VkPhysicalDeviceHostImageCopyPropertiesEXT':
continue

# Merge properties
xmlmember = self.registry.structs[property].members[member]
if xmlmember.limittype == 'struct':
Expand All @@ -615,7 +611,7 @@ def add_members(self, merged, entry, property = None):
self.merge_members(merged, member, entry, xmlmember)

def merge_members(self, merged, member, entry, xmlmember):
if xmlmember.limittype == 'exact' or xmlmember.limittype == 'noauto':
if (xmlmember.limittype == 'exact' or xmlmember.limittype == 'noauto') and not xmlmember.isDynamicallySizedArrayWithCap():
del merged[member]
elif self.mode == 'union':
#if xmlmember.limittype == 'exact':
Expand Down Expand Up @@ -685,6 +681,11 @@ def merge_members(self, merged, member, entry, xmlmember):
merged[member][0] = entry[member][0]
if entry[member][1] > merged[member][1]:
merged[member][1] = entry[member][1]
elif xmlmember.isDynamicallySizedArrayWithCap():
entry_set = set(merged[member])
merged_set = set(entry[member])
union_set = merged_set.union(entry_set)
merged[member] = list(union_set)
else:
print("ERROR: Unknown limitype: " + xmlmember.limittype + " for " + member)
elif self.mode == 'intersection':
Expand Down Expand Up @@ -792,6 +793,11 @@ def merge_members(self, merged, member, entry, xmlmember):
merged[member][1] = entry[member][1]
#if member[1] < member[0]:
# merged.pop(member, None)
elif xmlmember.isDynamicallySizedArrayWithCap():
entry_set = set(merged[member])
merged_set = set(entry[member])
intersection_set = merged_set.intersection(entry_set)
merged[member] = list(intersection_set)
else:
print("ERROR: Unknown limitype: " + xmlmember.limittype + " for " + member)
else:
Expand Down
4 changes: 1 addition & 3 deletions scripts/gen_profiles_layer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2946,9 +2946,7 @@ class VulkanProfilesLayerGenerator():
emulated_extensions = ['VK_KHR_portability_subset']
additional_features = ['VkPhysicalDeviceFeatures', 'VkPhysicalDevicePortabilitySubsetFeaturesKHR']
additional_properties = ['VkPhysicalDeviceProperties', 'VkPhysicalDeviceLimits', 'VkPhysicalDeviceSparseProperties', 'VkPhysicalDeviceToolProperties', 'VkPhysicalDevicePortabilitySubsetPropertiesKHR']
# VkPhysicalDeviceHostImageCopyFeaturesEXT is not ignored to allow the people using the MockICD to still have the feature enabled,
# but use the properties in the MockICD until HostImageCopyPropertiesEXT is fixed.
ignored_structs = ['VkPhysicalDeviceHostImageCopyPropertiesEXT', 'VkPhysicalDeviceLayeredApiPropertiesListKHR']
ignored_structs = ['VkPhysicalDeviceLayeredApiPropertiesListKHR']

def generate(self, path, registry):
self.registry = registry
Expand Down
Loading

0 comments on commit 6df30b6

Please sign in to comment.