mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-10-25 00:03:42 +00:00
Implement support for VK_EXT_host_query_reset
This commit is contained in:
9 files changed
+98
-7
No files matched your search
@@ -528,6 +528,7 @@ enum class VulkanChunk : uint32_t
|
||||
vkCmdSetSampleLocationsEXT,
|
||||
vkCmdSetDiscardRectangleEXT,
|
||||
DeviceMemoryRefs,
|
||||
vkResetQueryPoolEXT,
|
||||
Max,
|
||||
};
|
||||
|
||||
@@ -702,6 +703,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceFloatControlsPropertiesKHR);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceGroupProperties);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceHostQueryResetFeaturesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceIDProperties);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceImageFormatInfo2);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceMaintenance3Properties);
|
||||
@@ -919,6 +921,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceFeatures2);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceGroupProperties);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceHostQueryResetFeaturesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceIDProperties);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceImageFormatInfo2);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceMaintenance3Properties);
|
||||
|
||||
@@ -678,6 +678,9 @@ static const VkExtensionProperties supportedExtensions[] = {
|
||||
{
|
||||
VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME, VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION,
|
||||
},
|
||||
{
|
||||
VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION,
|
||||
},
|
||||
{
|
||||
VK_EXT_MEMORY_BUDGET_EXTENSION_NAME, VK_EXT_MEMORY_BUDGET_SPEC_VERSION,
|
||||
},
|
||||
@@ -2850,6 +2853,9 @@ bool WrappedVulkan::ProcessChunk(ReadSerialiser &ser, VulkanChunk chunk)
|
||||
std::vector<MemRefInterval> data;
|
||||
return GetResourceManager()->Serialise_DeviceMemoryRefs(ser, data);
|
||||
}
|
||||
case VulkanChunk::vkResetQueryPoolEXT:
|
||||
return Serialise_vkResetQueryPoolEXT(ser, VK_NULL_HANDLE, VK_NULL_HANDLE, 0, 0);
|
||||
break;
|
||||
default:
|
||||
{
|
||||
SystemChunk system = (SystemChunk)chunk;
|
||||
|
||||
@@ -2020,4 +2020,9 @@ public:
|
||||
VkResult vkGetCalibratedTimestampsEXT(VkDevice device, uint32_t timestampCount,
|
||||
const VkCalibratedTimestampInfoEXT *pTimestampInfos,
|
||||
uint64_t *pTimestamps, uint64_t *pMaxDeviation);
|
||||
|
||||
// VK_EXT_host_query_reset
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, vkResetQueryPoolEXT, VkDevice device, VkQueryPool queryPool,
|
||||
uint32_t firstQuery, uint32_t queryCount);
|
||||
};
|
||||
@@ -370,7 +370,8 @@
|
||||
DeclExt(EXT_conditional_rendering); \
|
||||
DeclExt(EXT_sample_locations); \
|
||||
DeclExt(EXT_discard_rectangles); \
|
||||
DeclExt(EXT_calibrated_timestamps);
|
||||
DeclExt(EXT_calibrated_timestamps); \
|
||||
DeclExt(EXT_host_query_reset);
|
||||
|
||||
// for simplicity and since the check itself is platform agnostic,
|
||||
// these aren't protected in platform defines
|
||||
@@ -442,7 +443,8 @@
|
||||
CheckExt(EXT_conditional_rendering, VKXX); \
|
||||
CheckExt(EXT_sample_locations, VKXX); \
|
||||
CheckExt(EXT_discard_rectangles, VKXX); \
|
||||
CheckExt(EXT_calibrated_timestamps, VKXX);
|
||||
CheckExt(EXT_calibrated_timestamps, VKXX); \
|
||||
CheckExt(EXT_host_query_reset, VKXX);
|
||||
|
||||
#define HookInitVulkanInstanceExts() \
|
||||
HookInitExtension(KHR_surface, DestroySurfaceKHR); \
|
||||
@@ -576,6 +578,7 @@
|
||||
HookInitExtension(EXT_sample_locations, CmdSetSampleLocationsEXT); \
|
||||
HookInitExtension(EXT_discard_rectangles, CmdSetDiscardRectangleEXT); \
|
||||
HookInitExtension(EXT_calibrated_timestamps, GetCalibratedTimestampsEXT); \
|
||||
HookInitExtension(EXT_host_query_reset, ResetQueryPoolEXT); \
|
||||
HookInitDevice_PlatformSpecific()
|
||||
|
||||
#define DefineHooks() \
|
||||
@@ -1144,6 +1147,8 @@
|
||||
HookDefine5(VkResult, vkGetCalibratedTimestampsEXT, VkDevice, device, uint32_t, timestampCount, \
|
||||
const VkCalibratedTimestampInfoEXT *, pTimestampInfos, uint64_t *, pTimestamps, \
|
||||
uint64_t *, pMaxDeviation); \
|
||||
HookDefine4(void, vkResetQueryPoolEXT, VkDevice, device, VkQueryPool, queryPool, uint32_t, \
|
||||
firstQuery, uint32_t, queryCount); \
|
||||
HookDefine_PlatformSpecific()
|
||||
|
||||
struct VkLayerInstanceDispatchTableExtended : VkLayerInstanceDispatchTable
|
||||
|
||||
@@ -181,6 +181,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
VkPhysicalDeviceFragmentDensityMapFeaturesEXT); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT, \
|
||||
VkPhysicalDeviceFragmentDensityMapPropertiesEXT); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT, \
|
||||
VkPhysicalDeviceHostQueryResetFeaturesEXT); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, VkPhysicalDeviceIDProperties); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, \
|
||||
VkPhysicalDeviceImageFormatInfo2); \
|
||||
@@ -479,7 +481,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT: \
|
||||
|
||||
@@ -475,6 +475,10 @@ SERIALISE_VK_HANDLES();
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT, \
|
||||
VkDeviceQueueGlobalPriorityCreateInfoEXT) \
|
||||
\
|
||||
/* VK_EXT_host_query_reset */ \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT, \
|
||||
VkPhysicalDeviceHostQueryResetFeaturesEXT) \
|
||||
\
|
||||
/* VK_EXT_memory_budget */ \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT, \
|
||||
VkPhysicalDeviceMemoryBudgetPropertiesEXT) \
|
||||
@@ -832,9 +836,6 @@ SERIALISE_VK_HANDLES();
|
||||
/* VK_EXT_hdr_metadata */ \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_HDR_METADATA_EXT) \
|
||||
\
|
||||
/* VK_EXT_host_query_reset */ \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT) \
|
||||
\
|
||||
/* VK_EXT_image_drm_format_modifier */ \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT) \
|
||||
@@ -3925,6 +3926,22 @@ void Deserialise(const VkPhysicalDeviceFragmentDensityMapFeaturesEXT &el)
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceHostQueryResetFeaturesEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() ||
|
||||
el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER(hostQueryReset);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkPhysicalDeviceHostQueryResetFeaturesEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceFragmentDensityMapPropertiesEXT &el)
|
||||
{
|
||||
@@ -6401,6 +6418,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceFeatures2);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceGroupProperties);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceHostQueryResetFeaturesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceIDProperties);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceImageFormatInfo2);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceMaintenance3Properties);
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
template <>
|
||||
std::string DoStringise(const VulkanChunk &el)
|
||||
{
|
||||
RDCCOMPILE_ASSERT((uint32_t)VulkanChunk::Max == 1133, "Chunks changed without updating names");
|
||||
RDCCOMPILE_ASSERT((uint32_t)VulkanChunk::Max == 1134, "Chunks changed without updating names");
|
||||
|
||||
BEGIN_ENUM_STRINGISE(VulkanChunk)
|
||||
{
|
||||
@@ -165,6 +165,7 @@ std::string DoStringise(const VulkanChunk &el)
|
||||
STRINGISE_ENUM_CLASS(vkCmdSetSampleLocationsEXT)
|
||||
STRINGISE_ENUM_CLASS(vkCmdSetDiscardRectangleEXT)
|
||||
STRINGISE_ENUM_CLASS_NAMED(DeviceMemoryRefs, "Device Memory References")
|
||||
STRINGISE_ENUM_CLASS(vkResetQueryPoolEXT);
|
||||
STRINGISE_ENUM_CLASS_NAMED(Max, "Max Chunk");
|
||||
}
|
||||
END_ENUM_STRINGISE()
|
||||
|
||||
@@ -1874,6 +1874,13 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
|
||||
CHECK_PHYS_EXT_FEATURE(inheritedConditionalRendering);
|
||||
}
|
||||
END_PHYS_EXT_CHECK();
|
||||
|
||||
BEGIN_PHYS_EXT_CHECK(VkPhysicalDeviceHostQueryResetFeaturesEXT,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT);
|
||||
{
|
||||
CHECK_PHYS_EXT_FEATURE(hostQueryReset);
|
||||
}
|
||||
END_PHYS_EXT_CHECK();
|
||||
}
|
||||
|
||||
if(availFeatures.depthClamp)
|
||||
|
||||
@@ -1286,6 +1286,48 @@ VkResult WrappedVulkan::vkGetQueryPoolResults(VkDevice device, VkQueryPool query
|
||||
queryCount, dataSize, pData, stride, flags);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
bool WrappedVulkan::Serialise_vkResetQueryPoolEXT(SerialiserType &ser, VkDevice device,
|
||||
VkQueryPool queryPool, uint32_t firstQuery,
|
||||
uint32_t queryCount)
|
||||
{
|
||||
SERIALISE_ELEMENT(device);
|
||||
SERIALISE_ELEMENT(queryPool);
|
||||
SERIALISE_ELEMENT(firstQuery);
|
||||
SERIALISE_ELEMENT(queryCount);
|
||||
|
||||
Serialise_DebugMessages(ser);
|
||||
|
||||
SERIALISE_CHECK_READ_ERRORS();
|
||||
|
||||
if(IsReplayingAndReading())
|
||||
{
|
||||
ObjDisp(device)->ResetQueryPoolEXT(Unwrap(device), Unwrap(queryPool), firstQuery, queryCount);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedVulkan::vkResetQueryPoolEXT(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery,
|
||||
uint32_t queryCount)
|
||||
{
|
||||
SCOPED_DBG_SINK();
|
||||
|
||||
SERIALISE_TIME_CALL(ObjDisp(device)->ResetQueryPoolEXT(Unwrap(device), Unwrap(queryPool),
|
||||
firstQuery, queryCount));
|
||||
|
||||
if(IsActiveCapturing(m_State))
|
||||
{
|
||||
CACHE_THREAD_SERIALISER();
|
||||
|
||||
SCOPED_SERIALISE_CHUNK(VulkanChunk::vkResetQueryPoolEXT);
|
||||
Serialise_vkResetQueryPoolEXT(ser, device, queryPool, firstQuery, queryCount);
|
||||
|
||||
m_FrameCaptureRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(GetResID(queryPool), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
bool WrappedVulkan::Serialise_vkCreateSamplerYcbcrConversion(
|
||||
SerialiserType &ser, VkDevice device, const VkSamplerYcbcrConversionCreateInfo *pCreateInfo,
|
||||
@@ -1985,3 +2027,6 @@ INSTANTIATE_FUNCTION_SERIALISED(VkResult, vkCreateSamplerYcbcrConversion, VkDevi
|
||||
const VkSamplerYcbcrConversionCreateInfo *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator,
|
||||
VkSamplerYcbcrConversion *pYcbcrConversion);
|
||||
|
||||
INSTANTIATE_FUNCTION_SERIALISED(VkResult, vkResetQueryPoolEXT, VkDevice device,
|
||||
VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
|
||||
Reference in new issue
Block a user