mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-05 01:20:42 +00:00
Remove VK_LUNARG_DEBUG_MARKER, change support to VK_EXT_debug_marker
This commit is contained in:
@@ -1,98 +0,0 @@
|
||||
//
|
||||
// File: vk_lunarg_debug_marker.h
|
||||
//
|
||||
/*
|
||||
* Copyright (c) 2015-2016 The Khronos Group Inc.
|
||||
* Copyright (c) 2015-2016 Valve Corporation
|
||||
* Copyright (c) 2015-2016 LunarG, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and/or associated documentation files (the "Materials"), to
|
||||
* deal in the Materials without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Materials, and to permit persons to whom the Materials are
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice(s) and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Materials.
|
||||
*
|
||||
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
*
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE
|
||||
* USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
*
|
||||
* Authors:
|
||||
* Jon Ashburn <jon@lunarg.com>
|
||||
* Courtney Goeltzenleuchter <courtney@lunarg.com>
|
||||
*/
|
||||
|
||||
#ifndef __VK_DEBUG_MARKER_H__
|
||||
#define __VK_DEBUG_MARKER_H__
|
||||
|
||||
#include "vulkan.h"
|
||||
|
||||
#define VK_DEBUG_MARKER_EXTENSION_NUMBER 6
|
||||
#define VK_DEBUG_MARKER_EXTENSION_REVISION 1
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif // __cplusplus
|
||||
|
||||
/*
|
||||
***************************************************************************************************
|
||||
* DebugMarker Vulkan Extension API
|
||||
***************************************************************************************************
|
||||
*/
|
||||
|
||||
#define DEBUG_MARKER_EXTENSION_NAME "VK_LUNARG_DEBUG_MARKER"
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// Enumerations
|
||||
|
||||
#define VK_DEBUG_MARKER_ENUM_EXTEND(type, id) \
|
||||
((type)(VK_DEBUG_MARKER_EXTENSION_NUMBER * -1000 + (id)))
|
||||
|
||||
#define VK_OBJECT_INFO_TYPE_DBG_OBJECT_TAG \
|
||||
VK_DEBUG_MARKER_ENUM_EXTEND(VkDbgObjectInfoType, 0)
|
||||
#define VK_OBJECT_INFO_TYPE_DBG_OBJECT_NAME \
|
||||
VK_DEBUG_MARKER_ENUM_EXTEND(VkDbgObjectInfoType, 1)
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// API functions
|
||||
|
||||
typedef void(VKAPI_PTR *PFN_vkCmdDbgMarkerBegin)(VkCommandBuffer commandBuffer,
|
||||
const char *pMarker);
|
||||
typedef void(VKAPI_PTR *PFN_vkCmdDbgMarkerEnd)(VkCommandBuffer commandBuffer);
|
||||
typedef VkResult(VKAPI_PTR *PFN_vkDbgSetObjectTag)(
|
||||
VkDevice device, VkDebugReportObjectTypeEXT objType, uint64_t object,
|
||||
size_t tagSize, const void *pTag);
|
||||
typedef VkResult(VKAPI_PTR *PFN_vkDbgSetObjectName)(
|
||||
VkDevice device, VkDebugReportObjectTypeEXT objType, uint64_t object,
|
||||
size_t nameSize, const char *pName);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
|
||||
// DebugMarker extension entrypoints
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
vkCmdDbgMarkerBegin(VkCommandBuffer commandBuffer, const char *pMarker);
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkCmdDbgMarkerEnd(VkCommandBuffer commandBuffer);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vkDbgSetObjectTag(VkDevice device, VkDebugReportObjectTypeEXT objType,
|
||||
uint64_t object, size_t tagSize, const void *pTag);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vkDbgSetObjectName(VkDevice device, VkDebugReportObjectTypeEXT objType,
|
||||
uint64_t object, size_t nameSize, const char *pName);
|
||||
|
||||
#endif // VK_NO_PROTOTYPES
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // __VK_DEBUG_MARKER_H__
|
||||
@@ -61,7 +61,6 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="official\vk_layer.h" />
|
||||
<ClInclude Include="official\vk_lunarg_debug_marker.h" />
|
||||
<ClInclude Include="official\vk_platform.h" />
|
||||
<ClInclude Include="official\vulkan.h" />
|
||||
<ClInclude Include="vk_common.h" />
|
||||
|
||||
@@ -117,9 +117,6 @@
|
||||
<ClInclude Include="official\vk_layer.h">
|
||||
<Filter>official</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="official\vk_lunarg_debug_marker.h">
|
||||
<Filter>official</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="official\vk_platform.h">
|
||||
<Filter>official</Filter>
|
||||
</ClInclude>
|
||||
|
||||
@@ -41,7 +41,6 @@
|
||||
#define VK_NO_PROTOTYPES
|
||||
|
||||
#include "official/vulkan.h"
|
||||
#include "official/vk_lunarg_debug_marker.h"
|
||||
|
||||
#include "api/replay/renderdoc_replay.h"
|
||||
|
||||
@@ -301,6 +300,7 @@ enum VulkanChunkType
|
||||
END_EVENT,
|
||||
|
||||
SET_NAME,
|
||||
SET_SHADER_DEBUG_PATH,
|
||||
|
||||
CREATE_SWAP_BUFFER,
|
||||
|
||||
|
||||
@@ -145,11 +145,12 @@ const char *VkChunkNames[] =
|
||||
"vkCmdDispatch",
|
||||
"vkCmdDispatchIndirect",
|
||||
|
||||
"vkCmdDbgMarkerBegin",
|
||||
"vkCmdDbgMarker", // no equivalent function at the moment
|
||||
"vkCmdDbgMarkerEnd",
|
||||
"vkCmdDebugMarkerBeginEXT",
|
||||
"vkCmdDebugMarkerInsertEXT",
|
||||
"vkCmdDebugMarkerEndEXT",
|
||||
|
||||
"vkDbgSetObjectName",
|
||||
"vkDebugMarkerSetObjectNameEXT",
|
||||
"vkDebugMarkerSetObjectTagEXT",
|
||||
|
||||
"vkCreateSwapchainKHR",
|
||||
|
||||
@@ -724,8 +725,8 @@ VkResult WrappedVulkan::GetProvidedExtensionProperties(uint32_t *pPropertyCount,
|
||||
// this is the list of extensions we provide - regardless of whether the ICD supports them
|
||||
const VkExtensionProperties providedExtensions[] = {
|
||||
{
|
||||
DEBUG_MARKER_EXTENSION_NAME,
|
||||
VK_DEBUG_MARKER_EXTENSION_REVISION
|
||||
VK_EXT_DEBUG_MARKER_EXTENSION_NAME,
|
||||
VK_EXT_DEBUG_MARKER_SPEC_VERSION
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1920,16 +1921,19 @@ void WrappedVulkan::ProcessChunk(uint64_t offset, VulkanChunkType context)
|
||||
break;
|
||||
|
||||
case BEGIN_EVENT:
|
||||
Serialise_vkCmdDbgMarkerBegin(GetMainSerialiser(), VK_NULL_HANDLE, NULL);
|
||||
Serialise_vkCmdDebugMarkerBeginEXT(GetMainSerialiser(), VK_NULL_HANDLE, NULL);
|
||||
break;
|
||||
case SET_MARKER:
|
||||
RDCFATAL("No such function vkCmdDbgMarker");
|
||||
Serialise_vkCmdDebugMarkerInsertEXT(GetMainSerialiser(), VK_NULL_HANDLE, NULL);
|
||||
break;
|
||||
case END_EVENT:
|
||||
Serialise_vkCmdDbgMarkerEnd(GetMainSerialiser(), VK_NULL_HANDLE);
|
||||
Serialise_vkCmdDebugMarkerEndEXT(GetMainSerialiser(), VK_NULL_HANDLE);
|
||||
break;
|
||||
case SET_NAME:
|
||||
Serialise_vkDbgSetObjectName(GetMainSerialiser(), VK_NULL_HANDLE, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, 0, NULL);
|
||||
Serialise_vkDebugMarkerSetObjectNameEXT(GetMainSerialiser(), VK_NULL_HANDLE, NULL);
|
||||
break;
|
||||
case SET_SHADER_DEBUG_PATH:
|
||||
Serialise_SetShaderDebugPath(GetMainSerialiser(), VK_NULL_HANDLE, NULL);
|
||||
break;
|
||||
|
||||
case CREATE_SWAP_BUFFER:
|
||||
|
||||
@@ -487,6 +487,8 @@ private:
|
||||
|
||||
void StartFrameCapture(void *dev, void *wnd);
|
||||
bool EndFrameCapture(void *dev, void *wnd);
|
||||
|
||||
bool Serialise_SetShaderDebugPath(Serialiser *localSerialiser, VkDevice device, VkDebugMarkerObjectTagInfoEXT* pTagInfo);
|
||||
|
||||
// replay
|
||||
|
||||
@@ -1444,28 +1446,26 @@ public:
|
||||
const char* pLayerPrefix,
|
||||
const char* pMessage);
|
||||
|
||||
// VK_LUNARG_DEBUG_MARKER functions
|
||||
// VK_EXT_debug_marker functions
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, vkCmdDbgMarkerBegin,
|
||||
IMPLEMENT_FUNCTION_SERIALISED(VkResult, vkDebugMarkerSetObjectTagEXT,
|
||||
VkDevice device,
|
||||
VkDebugMarkerObjectTagInfoEXT* pTagInfo);
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(VkResult, vkDebugMarkerSetObjectNameEXT,
|
||||
VkDevice device,
|
||||
VkDebugMarkerObjectNameInfoEXT* pNameInfo);
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, vkCmdDebugMarkerBeginEXT,
|
||||
VkCommandBuffer commandBuffer,
|
||||
const char* pMarker);
|
||||
VkDebugMarkerMarkerInfoEXT* pMarker);
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, vkCmdDbgMarkerEnd,
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, vkCmdDebugMarkerEndEXT,
|
||||
VkCommandBuffer commandBuffer);
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(VkResult, vkDbgSetObjectTag,
|
||||
VkDevice device,
|
||||
VkDebugReportObjectTypeEXT objType,
|
||||
uint64_t object,
|
||||
size_t tagSize,
|
||||
const void* pTag);
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(VkResult, vkDbgSetObjectName,
|
||||
VkDevice device,
|
||||
VkDebugReportObjectTypeEXT objType,
|
||||
uint64_t object,
|
||||
size_t nameSize,
|
||||
const char* pName);
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, vkCmdDebugMarkerInsertEXT,
|
||||
VkCommandBuffer commandBuffer,
|
||||
VkDebugMarkerMarkerInfoEXT* pMarker);
|
||||
|
||||
// Windowing extension functions
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#undef VK_KHR_surface
|
||||
#undef VK_KHR_swapchain
|
||||
#undef VK_EXT_debug_report
|
||||
#undef VK_EXT_debug_marker
|
||||
|
||||
#if defined(VK_USE_PLATFORM_WIN32_KHR)
|
||||
|
||||
@@ -229,7 +230,7 @@
|
||||
CheckExt(VK_EXT_debug_report)
|
||||
|
||||
#define CheckDeviceExts() \
|
||||
CheckExt(VK_LUNARG_DEBUG_MARKER) \
|
||||
CheckExt(VK_EXT_debug_marker) \
|
||||
CheckExt(VK_KHR_swapchain)
|
||||
|
||||
#define HookInitVulkanInstanceExts() \
|
||||
@@ -244,10 +245,11 @@
|
||||
HookInitInstance_PlatformSpecific()
|
||||
|
||||
#define HookInitVulkanDeviceExts() \
|
||||
HookInitExtension(VK_LUNARG_DEBUG_MARKER, CmdDbgMarkerBegin); \
|
||||
HookInitExtension(VK_LUNARG_DEBUG_MARKER, CmdDbgMarkerEnd); \
|
||||
HookInitExtension(VK_LUNARG_DEBUG_MARKER, DbgSetObjectTag); \
|
||||
HookInitExtension(VK_LUNARG_DEBUG_MARKER, DbgSetObjectName); \
|
||||
HookInitExtension(VK_EXT_debug_marker, DebugMarkerSetObjectTagEXT); \
|
||||
HookInitExtension(VK_EXT_debug_marker, DebugMarkerSetObjectNameEXT); \
|
||||
HookInitExtension(VK_EXT_debug_marker, CmdDebugMarkerBeginEXT); \
|
||||
HookInitExtension(VK_EXT_debug_marker, CmdDebugMarkerEndEXT); \
|
||||
HookInitExtension(VK_EXT_debug_marker, CmdDebugMarkerInsertEXT); \
|
||||
HookInitExtension(VK_KHR_swapchain, CreateSwapchainKHR); \
|
||||
HookInitExtension(VK_KHR_swapchain, DestroySwapchainKHR); \
|
||||
HookInitExtension(VK_KHR_swapchain, GetSwapchainImagesKHR); \
|
||||
@@ -387,10 +389,11 @@
|
||||
HookDefine4(VkResult, vkCreateDebugReportCallbackEXT, VkInstance, instance, const VkDebugReportCallbackCreateInfoEXT*, pCreateInfo, const VkAllocationCallbacks*, pAllocator, VkDebugReportCallbackEXT*, pCallback); \
|
||||
HookDefine3(void, vkDestroyDebugReportCallbackEXT, VkInstance, instance, VkDebugReportCallbackEXT, callback, const VkAllocationCallbacks*, pAllocator); \
|
||||
HookDefine8(void, vkDebugReportMessageEXT, VkInstance, instance, VkDebugReportFlagsEXT, flags, VkDebugReportObjectTypeEXT, objectType, uint64_t, object, size_t, location, int32_t, messageCode, const char*, pLayerPrefix, const char*, pMessage); \
|
||||
HookDefine2(void, vkCmdDbgMarkerBegin, VkCommandBuffer, commandBuffer, const char*, pMarker); \
|
||||
HookDefine1(void, vkCmdDbgMarkerEnd, VkCommandBuffer, commandBuffer); \
|
||||
HookDefine5(VkResult, vkDbgSetObjectTag, VkDevice, device, VkDebugReportObjectTypeEXT, objType, uint64_t, object, size_t, tagSize, const void*, pTag); \
|
||||
HookDefine5(VkResult, vkDbgSetObjectName, VkDevice, device, VkDebugReportObjectTypeEXT, objType, uint64_t, object, size_t, nameSize, const char*, pName); \
|
||||
HookDefine2(VkResult, vkDebugMarkerSetObjectTagEXT, VkDevice, device, VkDebugMarkerObjectTagInfoEXT*, pTagInfo); \
|
||||
HookDefine2(VkResult, vkDebugMarkerSetObjectNameEXT, VkDevice, device, VkDebugMarkerObjectNameInfoEXT*, pNameInfo); \
|
||||
HookDefine2(void, vkCmdDebugMarkerBeginEXT, VkCommandBuffer, commandBuffer, VkDebugMarkerMarkerInfoEXT*, pMarkerInfo); \
|
||||
HookDefine1(void, vkCmdDebugMarkerEndEXT, VkCommandBuffer, commandBuffer); \
|
||||
HookDefine2(void, vkCmdDebugMarkerInsertEXT, VkCommandBuffer, commandBuffer, VkDebugMarkerMarkerInfoEXT*, pMarkerInfo); \
|
||||
HookDefine4(VkResult, vkGetPhysicalDeviceSurfaceSupportKHR, VkPhysicalDevice, physicalDevice, uint32_t, queueFamilyIndex, VkSurfaceKHR, surface, VkBool32*, pSupported); \
|
||||
HookDefine3(VkResult, vkGetPhysicalDeviceSurfaceCapabilitiesKHR, VkPhysicalDevice, physicalDevice, VkSurfaceKHR, surface, VkSurfaceCapabilitiesKHR*, pSurfaceProperties); \
|
||||
HookDefine4(VkResult, vkGetPhysicalDeviceSurfaceFormatsKHR, VkPhysicalDevice, physicalDevice, VkSurfaceKHR, surface, uint32_t*, pSurfaceFormatCount, VkSurfaceFormatKHR*, pSurfaceFormats); \
|
||||
@@ -418,9 +421,10 @@ struct VkLayerDispatchTableExtended : VkLayerDispatchTable
|
||||
// even though it won't actually ever get used
|
||||
PFN_vkCreateDevice CreateDevice;
|
||||
|
||||
// VK_LUNARG_DEBUG_MARKER
|
||||
PFN_vkCmdDbgMarkerBegin CmdDbgMarkerBegin;
|
||||
PFN_vkCmdDbgMarkerEnd CmdDbgMarkerEnd;
|
||||
PFN_vkDbgSetObjectTag DbgSetObjectTag;
|
||||
PFN_vkDbgSetObjectName DbgSetObjectName;
|
||||
// VK_EXT_debug_marker
|
||||
PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT;
|
||||
PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT;
|
||||
PFN_vkCmdDebugMarkerBeginEXT CmdDebugMarkerBeginEXT;
|
||||
PFN_vkCmdDebugMarkerEndEXT CmdDebugMarkerEndEXT;
|
||||
PFN_vkCmdDebugMarkerInsertEXT CmdDebugMarkerInsertEXT;
|
||||
};
|
||||
|
||||
@@ -308,6 +308,8 @@ struct VulkanCreationInfo
|
||||
|
||||
SPVModule spirv;
|
||||
|
||||
string unstrippedPath;
|
||||
|
||||
struct Reflection
|
||||
{
|
||||
string entryPoint;
|
||||
|
||||
@@ -2158,13 +2158,19 @@ void WrappedVulkan::vkCmdResetQueryPool(
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedVulkan::Serialise_vkCmdDbgMarkerBegin(
|
||||
bool WrappedVulkan::Serialise_vkCmdDebugMarkerBeginEXT(
|
||||
Serialiser* localSerialiser,
|
||||
VkCommandBuffer commandBuffer,
|
||||
const char* pMarker)
|
||||
VkDebugMarkerMarkerInfoEXT* pMarker)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, cmdid, GetResID(commandBuffer));
|
||||
SERIALISE_ELEMENT(string, name, pMarker ? string(pMarker) : "");
|
||||
SERIALISE_ELEMENT(string, name, pMarker && pMarker->pMarkerName ? string(pMarker->pMarkerName) : "");
|
||||
|
||||
float color[4] = {};
|
||||
if(m_State >= WRITING && pMarker)
|
||||
memcpy(color, pMarker->color, sizeof(color));
|
||||
|
||||
localSerialiser->SerialisePODArray<4>("color", color);
|
||||
|
||||
if(m_State < WRITING)
|
||||
m_LastCmdBufferID = cmdid;
|
||||
@@ -2181,12 +2187,12 @@ bool WrappedVulkan::Serialise_vkCmdDbgMarkerBegin(
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedVulkan::vkCmdDbgMarkerBegin(
|
||||
void WrappedVulkan::vkCmdDebugMarkerBeginEXT(
|
||||
VkCommandBuffer commandBuffer,
|
||||
const char* pMarker)
|
||||
VkDebugMarkerMarkerInfoEXT* pMarker)
|
||||
{
|
||||
if(ObjDisp(commandBuffer)->CmdDbgMarkerBegin)
|
||||
ObjDisp(commandBuffer)->CmdDbgMarkerBegin(Unwrap(commandBuffer), pMarker);
|
||||
if(ObjDisp(commandBuffer)->CmdDebugMarkerBeginEXT)
|
||||
ObjDisp(commandBuffer)->CmdDebugMarkerBeginEXT(Unwrap(commandBuffer), pMarker);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
@@ -2195,13 +2201,13 @@ void WrappedVulkan::vkCmdDbgMarkerBegin(
|
||||
CACHE_THREAD_SERIALISER();
|
||||
|
||||
SCOPED_SERIALISE_CONTEXT(BEGIN_EVENT);
|
||||
Serialise_vkCmdDbgMarkerBegin(localSerialiser, commandBuffer, pMarker);
|
||||
Serialise_vkCmdDebugMarkerBeginEXT(localSerialiser, commandBuffer, pMarker);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedVulkan::Serialise_vkCmdDbgMarkerEnd(Serialiser* localSerialiser, VkCommandBuffer commandBuffer)
|
||||
bool WrappedVulkan::Serialise_vkCmdDebugMarkerEndEXT(Serialiser* localSerialiser, VkCommandBuffer commandBuffer)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, cmdid, GetResID(commandBuffer));
|
||||
|
||||
@@ -2231,11 +2237,11 @@ bool WrappedVulkan::Serialise_vkCmdDbgMarkerEnd(Serialiser* localSerialiser, VkC
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedVulkan::vkCmdDbgMarkerEnd(
|
||||
void WrappedVulkan::vkCmdDebugMarkerEndEXT(
|
||||
VkCommandBuffer commandBuffer)
|
||||
{
|
||||
if(ObjDisp(commandBuffer)->CmdDbgMarkerEnd)
|
||||
ObjDisp(commandBuffer)->CmdDbgMarkerEnd(Unwrap(commandBuffer));
|
||||
if(ObjDisp(commandBuffer)->CmdDebugMarkerEndEXT)
|
||||
ObjDisp(commandBuffer)->CmdDebugMarkerEndEXT(Unwrap(commandBuffer));
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
@@ -2244,7 +2250,56 @@ void WrappedVulkan::vkCmdDbgMarkerEnd(
|
||||
CACHE_THREAD_SERIALISER();
|
||||
|
||||
SCOPED_SERIALISE_CONTEXT(END_EVENT);
|
||||
Serialise_vkCmdDbgMarkerEnd(localSerialiser, commandBuffer);
|
||||
Serialise_vkCmdDebugMarkerEndEXT(localSerialiser, commandBuffer);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedVulkan::Serialise_vkCmdDebugMarkerInsertEXT(
|
||||
Serialiser* localSerialiser,
|
||||
VkCommandBuffer commandBuffer,
|
||||
VkDebugMarkerMarkerInfoEXT* pMarker)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, cmdid, GetResID(commandBuffer));
|
||||
SERIALISE_ELEMENT(string, name, pMarker && pMarker->pMarkerName ? string(pMarker->pMarkerName) : "");
|
||||
|
||||
float color[4] = {};
|
||||
if(m_State >= WRITING && pMarker)
|
||||
memcpy(color, pMarker->color, sizeof(color));
|
||||
|
||||
localSerialiser->SerialisePODArray<4>("color", color);
|
||||
|
||||
if(m_State < WRITING)
|
||||
m_LastCmdBufferID = cmdid;
|
||||
|
||||
if(m_State == READING)
|
||||
{
|
||||
FetchDrawcall draw;
|
||||
draw.name = name;
|
||||
draw.flags |= eDraw_SetMarker;
|
||||
|
||||
AddDrawcall(draw, false);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedVulkan::vkCmdDebugMarkerInsertEXT(
|
||||
VkCommandBuffer commandBuffer,
|
||||
VkDebugMarkerMarkerInfoEXT* pMarker)
|
||||
{
|
||||
if(ObjDisp(commandBuffer)->CmdDebugMarkerInsertEXT)
|
||||
ObjDisp(commandBuffer)->CmdDebugMarkerInsertEXT(Unwrap(commandBuffer), pMarker);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
VkResourceRecord *record = GetRecord(commandBuffer);
|
||||
|
||||
CACHE_THREAD_SERIALISER();
|
||||
|
||||
SCOPED_SERIALISE_CONTEXT(SET_MARKER);
|
||||
Serialise_vkCmdDebugMarkerInsertEXT(localSerialiser, commandBuffer, pMarker);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
|
||||
@@ -543,7 +543,7 @@ bool WrappedVulkan::Serialise_vkCreateDevice(
|
||||
for(uint32_t i=0; i < createInfo.enabledExtensionCount; i++)
|
||||
{
|
||||
// don't include the debug marker extension
|
||||
if(strcmp(createInfo.ppEnabledExtensionNames[i], DEBUG_MARKER_EXTENSION_NAME))
|
||||
if(strcmp(createInfo.ppEnabledExtensionNames[i], VK_EXT_DEBUG_MARKER_EXTENSION_NAME))
|
||||
Extensions.push_back(createInfo.ppEnabledExtensionNames[i]);
|
||||
}
|
||||
|
||||
|
||||
@@ -798,21 +798,6 @@ void WrappedVulkan::vkDebugReportMessageEXT(
|
||||
return ObjDisp(instance)->DebugReportMessageEXT(Unwrap(instance), flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
|
||||
}
|
||||
|
||||
VkResult WrappedVulkan::vkDbgSetObjectTag(
|
||||
VkDevice device,
|
||||
VkDebugReportObjectTypeEXT objType,
|
||||
uint64_t object,
|
||||
size_t tagSize,
|
||||
const void* pTag)
|
||||
{
|
||||
if(ObjDisp(device)->DbgSetObjectTag)
|
||||
ObjDisp(device)->DbgSetObjectTag(device, objType, object, tagSize, pTag);
|
||||
|
||||
// don't do anything with the tags
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
static VkResourceRecord *GetObjRecord(VkDebugReportObjectTypeEXT objType, uint64_t object)
|
||||
{
|
||||
switch(objType)
|
||||
@@ -880,19 +865,63 @@ static VkResourceRecord *GetObjRecord(VkDebugReportObjectTypeEXT objType, uint64
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool WrappedVulkan::Serialise_vkDbgSetObjectName(
|
||||
bool WrappedVulkan::Serialise_SetShaderDebugPath(
|
||||
Serialiser *localSerialiser,
|
||||
VkDevice device,
|
||||
VkDebugReportObjectTypeEXT objType,
|
||||
uint64_t object,
|
||||
size_t nameSize,
|
||||
const char* pName)
|
||||
VkDebugMarkerObjectTagInfoEXT* pTagInfo)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, id, GetObjRecord(objType, object)->GetResourceID());
|
||||
SERIALISE_ELEMENT(ResourceId, id, GetObjRecord(pTagInfo->objectType, pTagInfo->object)->GetResourceID());
|
||||
|
||||
string path;
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
char *tag = (char *)pTagInfo->pTag;
|
||||
path = string(tag, tag + pTagInfo->tagSize);
|
||||
}
|
||||
|
||||
localSerialiser->Serialise("path", path);
|
||||
|
||||
if(m_State == READING)
|
||||
{
|
||||
m_CreationInfo.m_ShaderModule[GetResourceManager()->GetLiveID(id)].unstrippedPath = path;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
VkResult WrappedVulkan::vkDebugMarkerSetObjectTagEXT(
|
||||
VkDevice device,
|
||||
VkDebugMarkerObjectTagInfoEXT* pTagInfo)
|
||||
{
|
||||
if(pTagInfo && pTagInfo->tagName == RENDERDOC_ShaderDebugMagicValue_truncated &&
|
||||
pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT)
|
||||
{
|
||||
VkResourceRecord *record = GetObjRecord(pTagInfo->objectType, pTagInfo->object);
|
||||
|
||||
CACHE_THREAD_SERIALISER();
|
||||
|
||||
SCOPED_SERIALISE_CONTEXT(SET_SHADER_DEBUG_PATH);
|
||||
Serialise_SetShaderDebugPath(localSerialiser, device, pTagInfo);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
else if(ObjDisp(device)->DebugMarkerSetObjectTagEXT)
|
||||
{
|
||||
return ObjDisp(device)->DebugMarkerSetObjectTagEXT(device, pTagInfo);
|
||||
}
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
bool WrappedVulkan::Serialise_vkDebugMarkerSetObjectNameEXT(
|
||||
Serialiser *localSerialiser,
|
||||
VkDevice device,
|
||||
VkDebugMarkerObjectNameInfoEXT* pNameInfo)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, id, GetObjRecord(pNameInfo->objectType, pNameInfo->object)->GetResourceID());
|
||||
|
||||
string name;
|
||||
if(m_State >= WRITING)
|
||||
name = string(pName, pName+nameSize);
|
||||
name = pNameInfo->pObjectName;
|
||||
|
||||
localSerialiser->Serialise("name", name);
|
||||
|
||||
@@ -902,25 +931,22 @@ bool WrappedVulkan::Serialise_vkDbgSetObjectName(
|
||||
return true;
|
||||
}
|
||||
|
||||
VkResult WrappedVulkan::vkDbgSetObjectName(
|
||||
VkResult WrappedVulkan::vkDebugMarkerSetObjectNameEXT(
|
||||
VkDevice device,
|
||||
VkDebugReportObjectTypeEXT objType,
|
||||
uint64_t object,
|
||||
size_t nameSize,
|
||||
const char* pName)
|
||||
VkDebugMarkerObjectNameInfoEXT* pNameInfo)
|
||||
{
|
||||
if(ObjDisp(device)->DbgSetObjectName)
|
||||
ObjDisp(device)->DbgSetObjectName(device, objType, object, nameSize, pName);
|
||||
if(ObjDisp(device)->DebugMarkerSetObjectNameEXT)
|
||||
ObjDisp(device)->DebugMarkerSetObjectNameEXT(device, pNameInfo);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
Chunk *chunk = NULL;
|
||||
|
||||
VkResourceRecord *record = GetObjRecord(objType, object);
|
||||
VkResourceRecord *record = GetObjRecord(pNameInfo->objectType, pNameInfo->object);
|
||||
|
||||
if(!record)
|
||||
{
|
||||
RDCERR("Unrecognised object %d %llu", objType, object);
|
||||
RDCERR("Unrecognised object %d %llu", pNameInfo->objectType, pNameInfo->object);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -928,7 +954,7 @@ VkResult WrappedVulkan::vkDbgSetObjectName(
|
||||
CACHE_THREAD_SERIALISER();
|
||||
|
||||
SCOPED_SERIALISE_CONTEXT(SET_NAME);
|
||||
Serialise_vkDbgSetObjectName(localSerialiser, device, objType, object, nameSize, pName);
|
||||
Serialise_vkDebugMarkerSetObjectNameEXT(localSerialiser, device, pNameInfo);
|
||||
|
||||
chunk = scope.Get();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user