189 : vk_(p_vk), application_(application), valid_(false) {
190 if (!vk_.CreateDebugReportCallbackEXT || !vk_.DestroyDebugReportCallbackEXT) {
191 return;
192 }
193
194 if (!application_) {
195 return;
196 }
197
201 }
202 const VkDebugReportCallbackCreateInfoEXT create_info = {
203 .sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT,
204 .pNext = nullptr,
205 .flags = flags,
207 .pUserData = nullptr,
208 };
209
210 VkDebugReportCallbackEXT handle = VK_NULL_HANDLE;
212 application_, &create_info, nullptr, &handle)) != VK_SUCCESS) {
213 return;
214 }
215
216 handle_ = VulkanHandle<VkDebugReportCallbackEXT>{
217 handle, [this](VkDebugReportCallbackEXT handle) {
218 vk_.DestroyDebugReportCallbackEXT(application_, handle, nullptr);
219 }};
220
221 valid_ = true;
222}
static VKAPI_ATTR VkBool32 OnVulkanDebugReportCallback(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT object_type, uint64_t object, size_t location, int32_t message_code, const char *layer_prefix, const char *message, void *user_data)
static const VkDebugReportFlagsEXT kVulkanErrorFlags
static const VkDebugReportFlagsEXT kVulkanInfoFlags
bool ValidationLayerInfoMessagesEnabled()
#define VK_CALL_LOG_ERROR(expression)