完成新的VKDebugOut对象,使用户创建时可使用自定义的Debug输出
This commit is contained in:
parent
19be1c4d9f
commit
4079407f73
@ -5,19 +5,37 @@
|
|||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
|
|
||||||
|
const char *GetVkDebugReportObjectTypename(VkDebugReportObjectTypeEXT objType);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vulkan 调试信息输出基类<br>
|
||||||
|
* 如若需要自定义的调试信息输出,请从此类派生
|
||||||
|
*/
|
||||||
class VKDebugOut
|
class VKDebugOut
|
||||||
{
|
{
|
||||||
VkInstance inst=nullptr;
|
VkInstance inst;
|
||||||
|
|
||||||
VkDebugUtilsMessengerEXT debug_messenger;
|
VkDebugUtilsMessengerEXT debug_messenger;
|
||||||
VkDebugReportCallbackEXT debug_report_callback;
|
VkDebugReportCallbackEXT debug_report_callback;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
VKDebugOut();
|
virtual VkBool32 OnDebugUtilsMessage(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VkDebugUtilsMessageTypeFlagsEXT messageType,const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData);
|
||||||
|
virtual VkBool32 OnDebugReport(VkDebugReportFlagsEXT msgFlags,VkDebugReportObjectTypeEXT objType,uint64_t srcObject,size_t location,int32_t msgCode,const char *pLayerPrefix,const char *pMsg);
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
VKDebugOut()
|
||||||
|
{
|
||||||
|
inst=VK_NULL_HANDLE;
|
||||||
|
debug_messenger=VK_NULL_HANDLE;
|
||||||
|
debug_report_callback=VK_NULL_HANDLE;
|
||||||
|
}
|
||||||
|
|
||||||
virtual ~VKDebugOut();
|
virtual ~VKDebugOut();
|
||||||
|
|
||||||
virtual bool Init(VkInstance);
|
virtual bool Init(VkInstance);
|
||||||
};//class VKDebugOut
|
};//class VKDebugOut
|
||||||
|
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
#endif//HGL_GRAPH_VULKAN_DEBUG_OUT_INCLUDE
|
#endif//HGL_GRAPH_VULKAN_DEBUG_OUT_INCLUDE
|
||||||
|
@ -20,9 +20,9 @@ VK_NAMESPACE_BEGIN
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
friend Instance *CreateInstance(const UTF8String &app_name,VKDebugOut *do=nullptr);
|
friend Instance *CreateInstance(const UTF8String &app_name,VKDebugOut *out=nullptr);
|
||||||
|
|
||||||
Instance(VkInstance,VKDebugOut *,CharPointerList &);
|
Instance(VkInstance,CharPointerList &,VKDebugOut *);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -35,6 +35,6 @@ VK_NAMESPACE_BEGIN
|
|||||||
const PhysicalDevice * GetDevice (VkPhysicalDeviceType)const;
|
const PhysicalDevice * GetDevice (VkPhysicalDeviceType)const;
|
||||||
};//class Instance
|
};//class Instance
|
||||||
|
|
||||||
Instance *CreateInstance(const UTF8String &,VKDebugOut *do=nullptr); ///<创建一个Vulkan实例
|
Instance *CreateInstance(const UTF8String &,VKDebugOut *); ///<创建一个Vulkan实例
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
#endif//HGL_GRAPH_VULKAN_INSTANCE_INCLUDE
|
#endif//HGL_GRAPH_VULKAN_INSTANCE_INCLUDE
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
SET(RENDER_DEVICE_VULKAN_SOURCE VKFormat.cpp
|
SET(RENDER_DEVICE_VULKAN_SOURCE VKFormat.cpp
|
||||||
VKMemory.cpp
|
VKMemory.cpp
|
||||||
VKProperties.cpp
|
VKProperties.cpp
|
||||||
|
VKDebugOut.cpp
|
||||||
VKInstance.cpp
|
VKInstance.cpp
|
||||||
VKPhysicalDevice.cpp
|
VKPhysicalDevice.cpp
|
||||||
VKImageView.cpp
|
VKImageView.cpp
|
||||||
|
@ -1,7 +1,62 @@
|
|||||||
#include<hgl/graph/vulkan/VK.h>
|
#include<hgl/graph/vulkan/VKDebugOut.h>
|
||||||
#include<iostream>
|
#include<iostream>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
const char VkDebugReportObjectTypename[][32]=
|
||||||
|
{
|
||||||
|
"UNKNOWN",
|
||||||
|
"INSTANCE",
|
||||||
|
"PHYSICAL_DEVICE",
|
||||||
|
"DEVICE",
|
||||||
|
"QUEUE",
|
||||||
|
"SEMAPHORE",
|
||||||
|
"COMMAND_BUFFER",
|
||||||
|
"FENCE",
|
||||||
|
"DEVICE_MEMORY",
|
||||||
|
"BUFFER",
|
||||||
|
"IMAGE",
|
||||||
|
"EVENT",
|
||||||
|
"QUERY_POOL",
|
||||||
|
"BUFFER_VIEW",
|
||||||
|
"IMAGE_VIEW",
|
||||||
|
"SHADER_MODULE",
|
||||||
|
"PIPELINE_CACHE",
|
||||||
|
"PIPELINE_LAYOUT",
|
||||||
|
"RENDER_PASS",
|
||||||
|
"PIPELINE",
|
||||||
|
"DESCRIPTOR_SET_LAYOUT",
|
||||||
|
"SAMPLER",
|
||||||
|
"DESCRIPTOR_POOL",
|
||||||
|
"DESCRIPTOR_SET",
|
||||||
|
"FRAMEBUFFER",
|
||||||
|
"COMMAND_POOL",
|
||||||
|
"SURFACE_KHR",
|
||||||
|
"SWAPCHAIN_KHR",
|
||||||
|
"DEBUG_REPORT_CALLBACK_EXT",
|
||||||
|
"DISPLAY_KHR",
|
||||||
|
"DISPLAY_MODE_KHR",
|
||||||
|
"OBJECT_TABLE_NVX",
|
||||||
|
"INDIRECT_COMMANDS_LAYOUT_NVX",
|
||||||
|
"VALIDATION_CACHE_EXT",
|
||||||
|
|
||||||
|
"SAMPLER_YCBCR_CONVERSION",
|
||||||
|
"DESCRIPTOR_UPDATE_TEMPLATE",
|
||||||
|
"ACCELERATION_STRUCTURE_NV"
|
||||||
|
};
|
||||||
|
}//namespace
|
||||||
|
|
||||||
|
const char *GetVkDebugReportObjectTypename(VkDebugReportObjectTypeEXT objType)
|
||||||
|
{
|
||||||
|
if(objType==VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT) return VkDebugReportObjectTypename[VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT+1];else
|
||||||
|
if(objType==VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT) return VkDebugReportObjectTypename[VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT+2];else
|
||||||
|
if(objType==VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT) return VkDebugReportObjectTypename[VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT+3];else
|
||||||
|
if(objType<VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT
|
||||||
|
&&objType>VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT) return VkDebugReportObjectTypename[0];else
|
||||||
|
return VkDebugReportObjectTypename[objType];
|
||||||
|
}
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
VkResult CreateDebugUtilsMessengerEXT(VkInstance instance,const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo,const VkAllocationCallbacks *pAllocator,VkDebugUtilsMessengerEXT *pDebugMessenger)
|
VkResult CreateDebugUtilsMessengerEXT(VkInstance instance,const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo,const VkAllocationCallbacks *pAllocator,VkDebugUtilsMessengerEXT *pDebugMessenger)
|
||||||
@ -26,33 +81,32 @@ namespace
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VkDebugUtilsMessageTypeFlagsEXT messageType,const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData,void *pUserData)
|
VkBool32 DefaultVulkanDebugUtilsMessage(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
||||||
|
VkDebugUtilsMessageTypeFlagsEXT messageType,
|
||||||
|
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData)
|
||||||
{
|
{
|
||||||
if(messageSeverity&VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)
|
if(messageSeverity&VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT) std::cerr<<"[ERROR] "; else
|
||||||
{
|
if(messageSeverity&VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) std::cerr<<"[WARNING] "; else
|
||||||
std::cout<<"ERROR: "<<pCallbackData->pMessage<<std::endl;
|
if(messageSeverity&VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT) std::cerr<<"[INFO] "; else
|
||||||
}
|
if(messageSeverity&VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT) std::cerr<<"[VERBOSE] "; else
|
||||||
else
|
std::cerr<<"[Validation layer] ";
|
||||||
if(messageSeverity&VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT)
|
|
||||||
{
|
std::cerr<<pCallbackData->pMessage<<std::endl;
|
||||||
std::cout<<"WARNING: "<<pCallbackData->pMessage<<std::endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if(messageSeverity&VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT)
|
|
||||||
{
|
|
||||||
std::cout<<"INFO: "<<pCallbackData->pMessage<<std::endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if(messageSeverity&VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT)
|
|
||||||
{
|
|
||||||
std::cout<<"VERBOSE: "<<pCallbackData->pMessage<<std::endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
std::cerr<<"validation layer: "<<pCallbackData->pMessage<<std::endl;
|
|
||||||
|
|
||||||
return VK_FALSE;
|
return VK_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VKAPI_ATTR VkBool32 VKAPI_CALL vulkan_debug_utils_callback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VkDebugUtilsMessageTypeFlagsEXT messageType,const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData,void *pUserData)
|
||||||
|
{
|
||||||
|
if(!pCallbackData)
|
||||||
|
return VK_FALSE;
|
||||||
|
|
||||||
|
if(!pUserData)
|
||||||
|
return DefaultVulkanDebugUtilsMessage(messageSeverity,messageType,pCallbackData);
|
||||||
|
else
|
||||||
|
return ((VKDebugOut *)pUserData)->OnDebugUtilsMessage(messageSeverity,messageType,pCallbackData);
|
||||||
|
}
|
||||||
|
|
||||||
bool CreateDebugReportCallbackEXT(VkInstance instance,const VkDebugReportCallbackCreateInfoEXT *pCreateInfo,const VkAllocationCallbacks *pAllocator,VkDebugReportCallbackEXT *pCallback)
|
bool CreateDebugReportCallbackEXT(VkInstance instance,const VkDebugReportCallbackCreateInfoEXT *pCreateInfo,const VkAllocationCallbacks *pAllocator,VkDebugReportCallbackEXT *pCallback)
|
||||||
{
|
{
|
||||||
auto func=(PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(instance,"vkCreateDebugReportCallbackEXT");
|
auto func=(PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(instance,"vkCreateDebugReportCallbackEXT");
|
||||||
@ -81,47 +135,43 @@ namespace
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VKAPI_ATTR VkBool32 VKAPI_CALL dbgFunc(VkDebugReportFlagsEXT msgFlags,VkDebugReportObjectTypeEXT objType,uint64_t srcObject,
|
VkBool32 DefaultVulkanDebugReport( VkDebugReportFlagsEXT msgFlags,
|
||||||
|
VkDebugReportObjectTypeEXT objType,
|
||||||
|
uint64_t srcObject,
|
||||||
|
size_t location,
|
||||||
|
int32_t msgCode,
|
||||||
|
const char *pLayerPrefix,
|
||||||
|
const char *pMsg)
|
||||||
|
{
|
||||||
|
const char *obj_type_name=GetVkDebugReportObjectTypename(objType);
|
||||||
|
|
||||||
|
if(msgFlags&VK_DEBUG_REPORT_ERROR_BIT_EXT) std::cerr<<"[ERROR:"; else
|
||||||
|
if(msgFlags&VK_DEBUG_REPORT_WARNING_BIT_EXT) std::cerr<<"[WARNING:"; else
|
||||||
|
if(msgFlags&VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT)std::cerr<<"[PERFORMANCE WARNING:"; else
|
||||||
|
if(msgFlags&VK_DEBUG_REPORT_INFORMATION_BIT_EXT) std::cerr<<"[INFO:"; else
|
||||||
|
if(msgFlags&VK_DEBUG_REPORT_DEBUG_BIT_EXT) std::cerr<<"[DEBUG:";
|
||||||
|
|
||||||
|
std::cerr<<msgCode<<"]["<<obj_type_name<<":"<<srcObject<<"][Location:"<<location<<"]["<<pLayerPrefix<<"] "<<pMsg<<std::endl;
|
||||||
|
|
||||||
|
return VK_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
VKAPI_ATTR VkBool32 VKAPI_CALL vulkan_debug_report_callback(VkDebugReportFlagsEXT msgFlags,VkDebugReportObjectTypeEXT objType,uint64_t srcObject,
|
||||||
size_t location,int32_t msgCode,const char *pLayerPrefix,const char *pMsg,
|
size_t location,int32_t msgCode,const char *pLayerPrefix,const char *pMsg,
|
||||||
void *pUserData)
|
void *pUserData)
|
||||||
{
|
{
|
||||||
if(msgFlags&VK_DEBUG_REPORT_ERROR_BIT_EXT)
|
if(!pUserData)
|
||||||
{
|
return DefaultVulkanDebugReport(msgFlags,objType,srcObject,location,msgCode,pLayerPrefix,pMsg);
|
||||||
std::cout<<"ERROR: ";
|
else
|
||||||
}
|
return ((VKDebugOut *)pUserData)->OnDebugReport(msgFlags,objType,srcObject,location,msgCode,pLayerPrefix,pMsg);
|
||||||
else if(msgFlags&VK_DEBUG_REPORT_WARNING_BIT_EXT)
|
|
||||||
{
|
|
||||||
std::cout<<"WARNING: ";
|
|
||||||
}
|
|
||||||
else if(msgFlags&VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT)
|
|
||||||
{
|
|
||||||
std::cout<<"PERFORMANCE WARNING: ";
|
|
||||||
}
|
|
||||||
else if(msgFlags&VK_DEBUG_REPORT_INFORMATION_BIT_EXT)
|
|
||||||
{
|
|
||||||
std::cout<<"INFO: ";
|
|
||||||
}
|
|
||||||
else if(msgFlags&VK_DEBUG_REPORT_DEBUG_BIT_EXT)
|
|
||||||
{
|
|
||||||
std::cout<<"DEBUG: ";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout<<"["<<pLayerPrefix<<"] Code "<<msgCode<<" : "<<pMsg<<std::endl;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* false indicates that layer should not bail-out of an
|
|
||||||
* API call that had validation failures. This may mean that the
|
|
||||||
* app dies inside the driver due to invalid parameter(s).
|
|
||||||
* That's what would happen without validation layers, so we'll
|
|
||||||
* keep that behavior here.
|
|
||||||
*/
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
|
bool VKDebugOut::Init(VkInstance i)
|
||||||
|
{
|
||||||
|
int count=0;
|
||||||
|
|
||||||
virtual bool Init(VkInstance);
|
inst=i;
|
||||||
debug_report_callback=VK_NULL_HANDLE;
|
|
||||||
{
|
{
|
||||||
VkDebugReportCallbackCreateInfoEXT create_info;
|
VkDebugReportCallbackCreateInfoEXT create_info;
|
||||||
|
|
||||||
@ -133,39 +183,54 @@ namespace
|
|||||||
|VK_DEBUG_REPORT_DEBUG_BIT_EXT
|
|VK_DEBUG_REPORT_DEBUG_BIT_EXT
|
||||||
|VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT;
|
|VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT;
|
||||||
|
|
||||||
create_info.pfnCallback =dbgFunc;
|
create_info.pfnCallback =vulkan_debug_report_callback;
|
||||||
create_info.pUserData =nullptr;
|
create_info.pUserData =this;
|
||||||
|
|
||||||
CreateDebugReportCallbackEXT(inst,&create_info,nullptr,&debug_report_callback);
|
if(CreateDebugReportCallbackEXT(inst,&create_info,nullptr,&debug_report_callback))
|
||||||
|
++count;
|
||||||
}
|
}
|
||||||
|
|
||||||
debug_messenger=VK_NULL_HANDLE;
|
|
||||||
{
|
{
|
||||||
VkDebugUtilsMessengerCreateInfoEXT createInfo;
|
VkDebugUtilsMessengerCreateInfoEXT create_info;
|
||||||
|
|
||||||
createInfo.sType =VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
|
create_info.sType =VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
|
||||||
createInfo.pNext =nullptr;
|
create_info.pNext =nullptr;
|
||||||
createInfo.flags =0;
|
create_info.flags =0;
|
||||||
|
|
||||||
createInfo.messageSeverity =VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT
|
create_info.messageSeverity =VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT
|
||||||
|VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT
|
|VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT
|
||||||
|VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
|
|VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
|
||||||
|
|
||||||
createInfo.messageType =VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT
|
create_info.messageType =VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT
|
||||||
|VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT
|
|VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT
|
||||||
|VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
|
|VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
|
||||||
|
|
||||||
createInfo.pfnUserCallback =debugCallback;
|
create_info.pfnUserCallback =vulkan_debug_utils_callback;
|
||||||
createInfo.pUserData =nullptr;
|
create_info.pUserData =this;
|
||||||
|
|
||||||
CreateDebugUtilsMessengerEXT(inst,&createInfo,nullptr,&debug_messenger);
|
if(CreateDebugUtilsMessengerEXT(inst,&create_info,nullptr,&debug_messenger))
|
||||||
|
++count;
|
||||||
}
|
}
|
||||||
|
|
||||||
void close()
|
return(count);
|
||||||
{
|
}
|
||||||
if(debug_messenger)
|
|
||||||
DestroyDebugUtilsMessengerEXT(inst,debug_messenger,nullptr);
|
|
||||||
|
|
||||||
if(debug_report_callback)
|
VKDebugOut::~VKDebugOut()
|
||||||
DestroyDebugReportCallbackEXT(inst,debug_report_callback,nullptr);
|
{
|
||||||
}
|
if(debug_messenger)
|
||||||
|
DestroyDebugUtilsMessengerEXT(inst,debug_messenger,nullptr);
|
||||||
|
|
||||||
|
if(debug_report_callback)
|
||||||
|
DestroyDebugReportCallbackEXT(inst,debug_report_callback,nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
VkBool32 VKDebugOut::OnDebugUtilsMessage(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VkDebugUtilsMessageTypeFlagsEXT messageType,const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData)
|
||||||
|
{
|
||||||
|
return DefaultVulkanDebugUtilsMessage(messageSeverity,messageType,pCallbackData);
|
||||||
|
}
|
||||||
|
|
||||||
|
VkBool32 VKDebugOut::OnDebugReport(VkDebugReportFlagsEXT msgFlags,VkDebugReportObjectTypeEXT objType,uint64_t srcObject,size_t location,int32_t msgCode,const char *pLayerPrefix,const char *pMsg)
|
||||||
|
{
|
||||||
|
return DefaultVulkanDebugReport(msgFlags,objType,srcObject,location,msgCode,pLayerPrefix,pMsg);
|
||||||
|
}
|
||||||
|
VK_NAMESPACE_END
|
@ -1,12 +1,13 @@
|
|||||||
#include<hgl/graph/vulkan/VKInstance.h>
|
#include<hgl/graph/vulkan/VKInstance.h>
|
||||||
#include<hgl/graph/vulkan/VKSurfaceExtensionName.h>
|
#include<hgl/graph/vulkan/VKSurfaceExtensionName.h>
|
||||||
#include<hgl/graph/vulkan/VKPhysicalDevice.h>
|
#include<hgl/graph/vulkan/VKPhysicalDevice.h>
|
||||||
|
#include<hgl/graph/vulkan/VKDebugOut.h>
|
||||||
#include<iostream>
|
#include<iostream>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
Device *CreateRenderDevice(VkInstance,const PhysicalDevice *,Window *);
|
Device *CreateRenderDevice(VkInstance,const PhysicalDevice *,Window *);
|
||||||
|
|
||||||
Instance *CreateInstance(const UTF8String &app_name,VKDebugOut *do)
|
Instance *CreateInstance(const UTF8String &app_name,VKDebugOut *out)
|
||||||
{
|
{
|
||||||
VkApplicationInfo app_info;
|
VkApplicationInfo app_info;
|
||||||
VkInstanceCreateInfo inst_info;
|
VkInstanceCreateInfo inst_info;
|
||||||
@ -43,19 +44,22 @@ Instance *CreateInstance(const UTF8String &app_name,VKDebugOut *do)
|
|||||||
|
|
||||||
if(vkCreateInstance(&inst_info,nullptr,&inst)==VK_SUCCESS)
|
if(vkCreateInstance(&inst_info,nullptr,&inst)==VK_SUCCESS)
|
||||||
{
|
{
|
||||||
do->Init(inst);
|
if(!out)
|
||||||
return(new Instance(inst,ext_list,do));
|
out=new VKDebugOut;
|
||||||
|
|
||||||
|
out->Init(inst);
|
||||||
|
return(new Instance(inst,ext_list,out));
|
||||||
}
|
}
|
||||||
|
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
Instance::Instance(VkInstance i,CharPointerList &el,VKDebugOut *do)
|
Instance::Instance(VkInstance i,CharPointerList &el,VKDebugOut *out)
|
||||||
{
|
{
|
||||||
inst=i;
|
inst=i;
|
||||||
ext_list=el;
|
ext_list=el;
|
||||||
|
|
||||||
debug_out=do;
|
debug_out=out;
|
||||||
|
|
||||||
uint32_t gpu_count = 1;
|
uint32_t gpu_count = 1;
|
||||||
|
|
||||||
@ -72,7 +76,7 @@ Instance::Instance(VkInstance i,CharPointerList &el,VKDebugOut *do)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Instance::~Instance()
|
Instance::~Instance()
|
||||||
|
{
|
||||||
SAFE_CLEAR(debug_out);
|
SAFE_CLEAR(debug_out);
|
||||||
|
|
||||||
physical_devices.Clear();
|
physical_devices.Clear();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user