mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-04 17:10:47 +00:00
Track enabled status of some subgroup vulkan extensions we care about
This commit is contained in:
@@ -540,7 +540,11 @@
|
||||
DeclExt(KHR_ray_query); \
|
||||
DeclExt(EXT_nested_command_buffer); \
|
||||
DeclExt(EXT_shader_object); \
|
||||
DeclExt(KHR_ray_tracing_pipeline);
|
||||
DeclExt(KHR_ray_tracing_pipeline); \
|
||||
DeclExt(EXT_subgroup_size_control); \
|
||||
DeclExt(EXT_shader_subgroup_ballot); \
|
||||
DeclExt(EXT_shader_subgroup_vote); \
|
||||
DeclExt(KHR_shader_subgroup_uniform_control_flow);
|
||||
|
||||
// for simplicity and since the check itself is platform agnostic,
|
||||
// these aren't protected in platform defines
|
||||
@@ -670,7 +674,11 @@
|
||||
CheckExt(KHR_acceleration_structure, VKXX); \
|
||||
CheckExt(KHR_ray_query, VKXX); \
|
||||
CheckExt(EXT_shader_object, VKXX); \
|
||||
CheckExt(KHR_ray_tracing_pipeline, VKXX);
|
||||
CheckExt(KHR_ray_tracing_pipeline, VKXX); \
|
||||
CheckExt(EXT_subgroup_size_control, VK13); \
|
||||
CheckExt(EXT_shader_subgroup_ballot, VK11); \
|
||||
CheckExt(EXT_shader_subgroup_vote, VK11); \
|
||||
CheckExt(KHR_shader_subgroup_uniform_control_flow, VKXX);
|
||||
|
||||
#define HookInitVulkanInstanceExts_PhysDev() \
|
||||
HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceSupportKHR); \
|
||||
|
||||
@@ -1762,6 +1762,9 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
|
||||
|
||||
AddRequiredExtensions(false, Extensions, supportedExtensions);
|
||||
|
||||
VkPhysicalDeviceProperties physProps;
|
||||
ObjDisp(physicalDevice)->GetPhysicalDeviceProperties(Unwrap(physicalDevice), &physProps);
|
||||
|
||||
// Drop VK_KHR_driver_properties if it's not available, but add it if it is
|
||||
bool driverPropsSupported = (supportedExtensions.find(VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME) !=
|
||||
supportedExtensions.end());
|
||||
@@ -1892,6 +1895,19 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
|
||||
"mesh stage will not be available");
|
||||
}
|
||||
|
||||
// enable VK_KHR_shader_subgroup_uniform_control_flow if it's available, to make subgroup
|
||||
// debugging more reliable/spec-clean.
|
||||
// if we can't get it, we'll just emit the same code anyway and hope it compiles to something sensible
|
||||
if(RDCMIN(m_EnabledExtensions.vulkanVersion, physProps.apiVersion) >= VK_MAKE_VERSION(1, 1, 0))
|
||||
{
|
||||
if(supportedExtensions.find(VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME) !=
|
||||
supportedExtensions.end())
|
||||
{
|
||||
Extensions.push_back(VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME);
|
||||
RDCLOG("Enabling VK_KHR_shader_subgroup_uniform_control_flow extension");
|
||||
}
|
||||
}
|
||||
|
||||
bool KHRbuffer = false, EXTbuffer = false;
|
||||
|
||||
if(supportedExtensions.find(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME) !=
|
||||
@@ -3543,9 +3559,6 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
|
||||
|
||||
SAFE_DELETE_ARRAY(exts);
|
||||
|
||||
VkPhysicalDeviceProperties physProps;
|
||||
ObjDisp(physicalDevice)->GetPhysicalDeviceProperties(Unwrap(physicalDevice), &physProps);
|
||||
|
||||
VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR pipeExecFeatures = {
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user