Vulkan: support vktrace and renderdoc
This commit is contained in:
parent
04d8567d31
commit
407233390b
|
@ -347,6 +347,21 @@ namespace backend { namespace vulkan {
|
||||||
std::vector<const char*> layersToRequest;
|
std::vector<const char*> layersToRequest;
|
||||||
std::vector<const char*> extensionsToRequest;
|
std::vector<const char*> extensionsToRequest;
|
||||||
|
|
||||||
|
// vktrace works by instering a layer, so we need to explicitly enable it if it is present.
|
||||||
|
// Also it is good to put it in first position so that it doesn't see Vulkan calls inserted
|
||||||
|
// by other layers.
|
||||||
|
if (mGlobalInfo.vktrace) {
|
||||||
|
layersToRequest.push_back(kLayerNameLunargVKTrace);
|
||||||
|
usedKnobs->vktrace = true;
|
||||||
|
}
|
||||||
|
// RenderDoc installs a layer at the system level for its capture but we don't want to use
|
||||||
|
// it unless we are debugging in RenderDoc so we hide it behind a macro.
|
||||||
|
#if defined(NXT_USE_RENDERDOC)
|
||||||
|
if (mGlobalInfo.renderDocCapture) {
|
||||||
|
layersToRequest.push_back(kLayerNameRenderDocCapture);
|
||||||
|
usedKnobs->renderDocCapture = true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if defined(NXT_ENABLE_ASSERTS)
|
#if defined(NXT_ENABLE_ASSERTS)
|
||||||
if (mGlobalInfo.standardValidation) {
|
if (mGlobalInfo.standardValidation) {
|
||||||
layersToRequest.push_back(kLayerNameLunargStandardValidation);
|
layersToRequest.push_back(kLayerNameLunargStandardValidation);
|
||||||
|
|
|
@ -31,6 +31,8 @@ namespace {
|
||||||
namespace backend { namespace vulkan {
|
namespace backend { namespace vulkan {
|
||||||
|
|
||||||
const char kLayerNameLunargStandardValidation[] = "VK_LAYER_LUNARG_standard_validation";
|
const char kLayerNameLunargStandardValidation[] = "VK_LAYER_LUNARG_standard_validation";
|
||||||
|
const char kLayerNameLunargVKTrace[] = "VK_LAYER_LUNARG_vktrace";
|
||||||
|
const char kLayerNameRenderDocCapture[] = "VK_LAYER_RENDERDOC_Capture";
|
||||||
|
|
||||||
const char kExtensionNameExtDebugReport[] = "VK_EXT_debug_report";
|
const char kExtensionNameExtDebugReport[] = "VK_EXT_debug_report";
|
||||||
const char kExtensionNameKhrSurface[] = "VK_KHR_surface";
|
const char kExtensionNameKhrSurface[] = "VK_KHR_surface";
|
||||||
|
@ -58,6 +60,12 @@ namespace backend { namespace vulkan {
|
||||||
if (IsLayerName(layer, kLayerNameLunargStandardValidation)) {
|
if (IsLayerName(layer, kLayerNameLunargStandardValidation)) {
|
||||||
info->standardValidation = true;
|
info->standardValidation = true;
|
||||||
}
|
}
|
||||||
|
if (IsLayerName(layer, kLayerNameLunargVKTrace)) {
|
||||||
|
info->vktrace = true;
|
||||||
|
}
|
||||||
|
if (IsLayerName(layer, kLayerNameRenderDocCapture)) {
|
||||||
|
info->renderDocCapture = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,8 @@ namespace backend { namespace vulkan {
|
||||||
class Device;
|
class Device;
|
||||||
|
|
||||||
extern const char kLayerNameLunargStandardValidation[];
|
extern const char kLayerNameLunargStandardValidation[];
|
||||||
|
extern const char kLayerNameLunargVKTrace[];
|
||||||
|
extern const char kLayerNameRenderDocCapture[];
|
||||||
|
|
||||||
extern const char kExtensionNameExtDebugReport[];
|
extern const char kExtensionNameExtDebugReport[];
|
||||||
extern const char kExtensionNameKhrSurface[];
|
extern const char kExtensionNameKhrSurface[];
|
||||||
|
@ -33,6 +35,8 @@ namespace backend { namespace vulkan {
|
||||||
struct VulkanGlobalKnobs {
|
struct VulkanGlobalKnobs {
|
||||||
// Layers
|
// Layers
|
||||||
bool standardValidation = false;
|
bool standardValidation = false;
|
||||||
|
bool vktrace = false;
|
||||||
|
bool renderDocCapture = false;
|
||||||
|
|
||||||
// Extensions
|
// Extensions
|
||||||
bool debugReport = false;
|
bool debugReport = false;
|
||||||
|
|
Loading…
Reference in New Issue