mirror of
https://github.com/libretro/RetroArch
synced 2025-04-10 15:45:19 +00:00
Merge pull request #14366 from Themaister/master
Vulkan: Fix some validation errors
This commit is contained in:
commit
06ab11d3e5
@ -80,43 +80,19 @@ static bool trigger_spurious_error(void)
|
|||||||
|
|
||||||
#ifdef VULKAN_DEBUG
|
#ifdef VULKAN_DEBUG
|
||||||
static VKAPI_ATTR VkBool32 VKAPI_CALL vulkan_debug_cb(
|
static VKAPI_ATTR VkBool32 VKAPI_CALL vulkan_debug_cb(
|
||||||
VkDebugReportFlagsEXT flags,
|
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
||||||
VkDebugReportObjectTypeEXT objectType,
|
VkDebugUtilsMessageTypeFlagsEXT messageType,
|
||||||
uint64_t object,
|
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData,
|
||||||
size_t location,
|
|
||||||
int32_t messageCode,
|
|
||||||
const char *pLayerPrefix,
|
|
||||||
const char *pMessage,
|
|
||||||
void *pUserData)
|
void *pUserData)
|
||||||
{
|
{
|
||||||
(void)objectType;
|
const char *name;
|
||||||
(void)object;
|
|
||||||
(void)location;
|
|
||||||
(void)messageCode;
|
|
||||||
(void)pUserData;
|
(void)pUserData;
|
||||||
|
|
||||||
if (flags & VK_DEBUG_REPORT_ERROR_BIT_EXT)
|
if (messageSeverity == VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT &&
|
||||||
|
messageType == VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT)
|
||||||
{
|
{
|
||||||
RARCH_ERR("[Vulkan]: Error: %s: %s\n",
|
RARCH_ERR("[Vulkan]: Validation Error: %s\n", pCallbackData->pMessage);
|
||||||
pLayerPrefix, pMessage);
|
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
else if (flags & VK_DEBUG_REPORT_WARNING_BIT_EXT)
|
|
||||||
{
|
|
||||||
RARCH_WARN("[Vulkan]: Warning: %s: %s\n",
|
|
||||||
pLayerPrefix, pMessage);
|
|
||||||
}
|
|
||||||
else if (flags & VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT)
|
|
||||||
{
|
|
||||||
RARCH_LOG("[Vulkan]: Performance warning: %s: %s\n",
|
|
||||||
pLayerPrefix, pMessage);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RARCH_LOG("[Vulkan]: Information: %s: %s\n",
|
|
||||||
pLayerPrefix, pMessage);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return VK_FALSE;
|
return VK_FALSE;
|
||||||
}
|
}
|
||||||
@ -382,6 +358,40 @@ static unsigned vulkan_num_miplevels(unsigned width, unsigned height)
|
|||||||
return levels;
|
return levels;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void vulkan_debug_mark_object(VkDevice device,
|
||||||
|
VkObjectType object_type, uint64_t object_handle, const char *name, unsigned count)
|
||||||
|
{
|
||||||
|
if (vkSetDebugUtilsObjectNameEXT)
|
||||||
|
{
|
||||||
|
char merged_name[1024];
|
||||||
|
snprintf(merged_name, sizeof(merged_name), "%s (%u)", name, count);
|
||||||
|
|
||||||
|
VkDebugUtilsObjectNameInfoEXT info = { VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT };
|
||||||
|
info.objectType = object_type;
|
||||||
|
info.objectHandle = object_handle;
|
||||||
|
info.pObjectName = merged_name;
|
||||||
|
vkSetDebugUtilsObjectNameEXT(device, &info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void vulkan_debug_mark_buffer(VkDevice device, VkBuffer buffer)
|
||||||
|
{
|
||||||
|
static unsigned object_count;
|
||||||
|
vulkan_debug_mark_object(device, VK_OBJECT_TYPE_BUFFER, (uint64_t)buffer, "RetroArch buffer", ++object_count);
|
||||||
|
}
|
||||||
|
|
||||||
|
void vulkan_debug_mark_image(VkDevice device, VkImage image)
|
||||||
|
{
|
||||||
|
static unsigned object_count;
|
||||||
|
vulkan_debug_mark_object(device, VK_OBJECT_TYPE_IMAGE, (uint64_t)image, "RetroArch image", ++object_count);
|
||||||
|
}
|
||||||
|
|
||||||
|
void vulkan_debug_mark_memory(VkDevice device, VkDeviceMemory memory)
|
||||||
|
{
|
||||||
|
static unsigned object_count;
|
||||||
|
vulkan_debug_mark_object(device, VK_OBJECT_TYPE_DEVICE_MEMORY, (uint64_t)memory, "RetroArch memory", ++object_count);
|
||||||
|
}
|
||||||
|
|
||||||
struct vk_texture vulkan_create_texture(vk_t *vk,
|
struct vk_texture vulkan_create_texture(vk_t *vk,
|
||||||
struct vk_texture *old,
|
struct vk_texture *old,
|
||||||
unsigned width, unsigned height,
|
unsigned width, unsigned height,
|
||||||
@ -483,6 +493,7 @@ struct vk_texture vulkan_create_texture(vk_t *vk,
|
|||||||
if (type != VULKAN_TEXTURE_STAGING && type != VULKAN_TEXTURE_READBACK)
|
if (type != VULKAN_TEXTURE_STAGING && type != VULKAN_TEXTURE_READBACK)
|
||||||
{
|
{
|
||||||
vkCreateImage(device, &info, NULL, &tex.image);
|
vkCreateImage(device, &info, NULL, &tex.image);
|
||||||
|
vulkan_debug_mark_image(device, tex.image);
|
||||||
#if 0
|
#if 0
|
||||||
vulkan_track_alloc(tex.image);
|
vulkan_track_alloc(tex.image);
|
||||||
#endif
|
#endif
|
||||||
@ -493,6 +504,7 @@ struct vk_texture vulkan_create_texture(vk_t *vk,
|
|||||||
/* Linear staging textures are not guaranteed to be supported,
|
/* Linear staging textures are not guaranteed to be supported,
|
||||||
* use buffers instead. */
|
* use buffers instead. */
|
||||||
vkCreateBuffer(device, &buffer_info, NULL, &tex.buffer);
|
vkCreateBuffer(device, &buffer_info, NULL, &tex.buffer);
|
||||||
|
vulkan_debug_mark_buffer(device, tex.buffer);
|
||||||
vkGetBufferMemoryRequirements(device, tex.buffer, &mem_reqs);
|
vkGetBufferMemoryRequirements(device, tex.buffer, &mem_reqs);
|
||||||
}
|
}
|
||||||
alloc.allocationSize = mem_reqs.size;
|
alloc.allocationSize = mem_reqs.size;
|
||||||
@ -538,6 +550,7 @@ struct vk_texture vulkan_create_texture(vk_t *vk,
|
|||||||
|
|
||||||
buffer_info.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
|
buffer_info.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
|
||||||
vkCreateBuffer(device, &buffer_info, NULL, &tex.buffer);
|
vkCreateBuffer(device, &buffer_info, NULL, &tex.buffer);
|
||||||
|
vulkan_debug_mark_buffer(device, tex.buffer);
|
||||||
vkGetBufferMemoryRequirements(device, tex.buffer, &mem_reqs);
|
vkGetBufferMemoryRequirements(device, tex.buffer, &mem_reqs);
|
||||||
|
|
||||||
alloc.allocationSize = mem_reqs.size;
|
alloc.allocationSize = mem_reqs.size;
|
||||||
@ -586,6 +599,7 @@ struct vk_texture vulkan_create_texture(vk_t *vk,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
vkAllocateMemory(device, &alloc, NULL, &tex.memory);
|
vkAllocateMemory(device, &alloc, NULL, &tex.memory);
|
||||||
|
vulkan_debug_mark_memory(device, tex.memory);
|
||||||
tex.memory_size = alloc.allocationSize;
|
tex.memory_size = alloc.allocationSize;
|
||||||
tex.memory_type = alloc.memoryTypeIndex;
|
tex.memory_type = alloc.memoryTypeIndex;
|
||||||
}
|
}
|
||||||
@ -1163,6 +1177,7 @@ struct vk_buffer vulkan_create_buffer(
|
|||||||
info.queueFamilyIndexCount = 0;
|
info.queueFamilyIndexCount = 0;
|
||||||
info.pQueueFamilyIndices = NULL;
|
info.pQueueFamilyIndices = NULL;
|
||||||
vkCreateBuffer(context->device, &info, NULL, &buffer.buffer);
|
vkCreateBuffer(context->device, &info, NULL, &buffer.buffer);
|
||||||
|
vulkan_debug_mark_buffer(context->device, buffer.buffer);
|
||||||
|
|
||||||
vkGetBufferMemoryRequirements(context->device, buffer.buffer, &mem_reqs);
|
vkGetBufferMemoryRequirements(context->device, buffer.buffer, &mem_reqs);
|
||||||
|
|
||||||
@ -1175,6 +1190,7 @@ struct vk_buffer vulkan_create_buffer(
|
|||||||
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
|
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
|
||||||
| VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
|
| VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
|
||||||
vkAllocateMemory(context->device, &alloc, NULL, &buffer.memory);
|
vkAllocateMemory(context->device, &alloc, NULL, &buffer.memory);
|
||||||
|
vulkan_debug_mark_memory(context->device, buffer.memory);
|
||||||
vkBindBufferMemory(context->device, buffer.buffer, buffer.memory, 0);
|
vkBindBufferMemory(context->device, buffer.buffer, buffer.memory, 0);
|
||||||
|
|
||||||
buffer.size = size;
|
buffer.size = size;
|
||||||
@ -1787,7 +1803,7 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
|
|||||||
(struct retro_hw_render_context_negotiation_interface_vulkan*)video_driver_get_context_negotiation_interface();
|
(struct retro_hw_render_context_negotiation_interface_vulkan*)video_driver_get_context_negotiation_interface();
|
||||||
#ifdef VULKAN_DEBUG
|
#ifdef VULKAN_DEBUG
|
||||||
static const char *instance_layers[] = { "VK_LAYER_KHRONOS_validation" };
|
static const char *instance_layers[] = { "VK_LAYER_KHRONOS_validation" };
|
||||||
instance_extensions[ext_count++] = "VK_EXT_debug_report";
|
instance_extensions[ext_count++] = "VK_EXT_debug_utils";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (iface && iface->interface_type != RETRO_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE_VULKAN)
|
if (iface && iface->interface_type != RETRO_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE_VULKAN)
|
||||||
@ -1923,24 +1939,29 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
|
|||||||
|
|
||||||
#ifdef VULKAN_DEBUG
|
#ifdef VULKAN_DEBUG
|
||||||
VULKAN_SYMBOL_WRAPPER_LOAD_INSTANCE_EXTENSION_SYMBOL(vk->context.instance,
|
VULKAN_SYMBOL_WRAPPER_LOAD_INSTANCE_EXTENSION_SYMBOL(vk->context.instance,
|
||||||
vkCreateDebugReportCallbackEXT);
|
vkCreateDebugUtilsMessengerEXT);
|
||||||
VULKAN_SYMBOL_WRAPPER_LOAD_INSTANCE_EXTENSION_SYMBOL(vk->context.instance,
|
VULKAN_SYMBOL_WRAPPER_LOAD_INSTANCE_EXTENSION_SYMBOL(vk->context.instance,
|
||||||
vkDebugReportMessageEXT);
|
vkDestroyDebugUtilsMessengerEXT);
|
||||||
VULKAN_SYMBOL_WRAPPER_LOAD_INSTANCE_EXTENSION_SYMBOL(vk->context.instance,
|
VULKAN_SYMBOL_WRAPPER_LOAD_INSTANCE_EXTENSION_SYMBOL(vk->context.instance,
|
||||||
vkDestroyDebugReportCallbackEXT);
|
vkSetDebugUtilsObjectNameEXT);
|
||||||
|
|
||||||
{
|
{
|
||||||
VkDebugReportCallbackCreateInfoEXT info =
|
VkDebugUtilsMessengerCreateInfoEXT info =
|
||||||
{ VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT };
|
{ VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT };
|
||||||
info.flags =
|
info.messageSeverity =
|
||||||
VK_DEBUG_REPORT_ERROR_BIT_EXT |
|
VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT |
|
||||||
VK_DEBUG_REPORT_WARNING_BIT_EXT |
|
VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT |
|
||||||
VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT;
|
VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT;
|
||||||
info.pfnCallback = vulkan_debug_cb;
|
info.messageType =
|
||||||
|
VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT |
|
||||||
|
VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
|
||||||
|
info.pfnUserCallback = vulkan_debug_cb;
|
||||||
|
|
||||||
if (vk->context.instance)
|
if (vk->context.instance)
|
||||||
vkCreateDebugReportCallbackEXT(vk->context.instance, &info, NULL,
|
{
|
||||||
|
vkCreateDebugUtilsMessengerEXT(vk->context.instance, &info, NULL,
|
||||||
&vk->context.debug_callback);
|
&vk->context.debug_callback);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
RARCH_LOG("[Vulkan]: Enabling Vulkan debug layers.\n");
|
RARCH_LOG("[Vulkan]: Enabling Vulkan debug layers.\n");
|
||||||
#endif
|
#endif
|
||||||
@ -1957,6 +1978,7 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
|
|||||||
if (res != VK_SUCCESS)
|
if (res != VK_SUCCESS)
|
||||||
{
|
{
|
||||||
RARCH_ERR("Failed to create Vulkan instance (%d).\n", res);
|
RARCH_ERR("Failed to create Vulkan instance (%d).\n", res);
|
||||||
|
RARCH_ERR("If VULKAN_DEBUG=1 is enabled, make sure Vulkan validation layers are installed.\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2521,7 +2543,7 @@ void vulkan_context_destroy(gfx_ctx_vulkan_data_t *vk,
|
|||||||
|
|
||||||
#ifdef VULKAN_DEBUG
|
#ifdef VULKAN_DEBUG
|
||||||
if (vk->context.debug_callback)
|
if (vk->context.debug_callback)
|
||||||
vkDestroyDebugReportCallbackEXT(vk->context.instance, vk->context.debug_callback, NULL);
|
vkDestroyDebugUtilsMessengerEXT(vk->context.instance, vk->context.debug_callback, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (video_driver_is_video_cache_context())
|
if (video_driver_is_video_cache_context())
|
||||||
|
@ -140,7 +140,7 @@ typedef struct vulkan_context
|
|||||||
VkSemaphore swapchain_wait_semaphores[VULKAN_MAX_SWAPCHAIN_IMAGES];
|
VkSemaphore swapchain_wait_semaphores[VULKAN_MAX_SWAPCHAIN_IMAGES];
|
||||||
|
|
||||||
#ifdef VULKAN_DEBUG
|
#ifdef VULKAN_DEBUG
|
||||||
VkDebugReportCallbackEXT debug_callback;
|
VkDebugUtilsMessengerEXT debug_callback;
|
||||||
#endif
|
#endif
|
||||||
uint32_t graphics_queue_index;
|
uint32_t graphics_queue_index;
|
||||||
uint32_t num_swapchain_images;
|
uint32_t num_swapchain_images;
|
||||||
@ -783,6 +783,10 @@ void vulkan_set_uniform_buffer(
|
|||||||
VkDeviceSize offset,
|
VkDeviceSize offset,
|
||||||
VkDeviceSize range);
|
VkDeviceSize range);
|
||||||
|
|
||||||
|
void vulkan_debug_mark_buffer(VkDevice device, VkBuffer buffer);
|
||||||
|
void vulkan_debug_mark_image(VkDevice device, VkImage image);
|
||||||
|
void vulkan_debug_mark_memory(VkDevice device, VkDeviceMemory memory);
|
||||||
|
|
||||||
RETRO_END_DECLS
|
RETRO_END_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1159,7 +1159,8 @@ static void vulkan_free(void *data)
|
|||||||
vulkan_filter_chain_free((vulkan_filter_chain_t*)vk->filter_chain);
|
vulkan_filter_chain_free((vulkan_filter_chain_t*)vk->filter_chain);
|
||||||
|
|
||||||
#ifdef VULKAN_HDR_SWAPCHAIN
|
#ifdef VULKAN_HDR_SWAPCHAIN
|
||||||
video_driver_unset_hdr_support();
|
vulkan_destroy_buffer(vk->context->device, &vk->hdr.ubo);
|
||||||
|
video_driver_unset_hdr_support();
|
||||||
#endif /* VULKAN_HDR_SWAPCHAIN */
|
#endif /* VULKAN_HDR_SWAPCHAIN */
|
||||||
|
|
||||||
if (vk->ctx_driver && vk->ctx_driver->destroy)
|
if (vk->ctx_driver && vk->ctx_driver->destroy)
|
||||||
@ -2460,8 +2461,8 @@ static bool vulkan_frame(void *data, const void *frame,
|
|||||||
|
|
||||||
VULKAN_IMAGE_LAYOUT_TRANSITION(vk->cmd, vk->main_buffer.image,
|
VULKAN_IMAGE_LAYOUT_TRANSITION(vk->cmd, vk->main_buffer.image,
|
||||||
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
||||||
VK_ACCESS_COLOR_ATTACHMENT_READ_BIT, VK_ACCESS_SHADER_READ_BIT,
|
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT,
|
||||||
VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
|
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
|
||||||
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
|
|
||||||
/* Begin render pass and set up viewport */
|
/* Begin render pass and set up viewport */
|
||||||
@ -2494,7 +2495,7 @@ static bool vulkan_frame(void *data, const void *frame,
|
|||||||
|
|
||||||
image_info.sampler = vk->samplers.nearest;
|
image_info.sampler = vk->samplers.nearest;
|
||||||
image_info.imageView = vk->main_buffer.view;
|
image_info.imageView = vk->main_buffer.view;
|
||||||
image_info.imageLayout = VK_IMAGE_LAYOUT_GENERAL;
|
image_info.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||||
|
|
||||||
write.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
write.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||||
write.pNext = NULL;
|
write.pNext = NULL;
|
||||||
@ -2813,9 +2814,10 @@ static bool vulkan_frame(void *data, const void *frame,
|
|||||||
image_info.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
image_info.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
||||||
image_info.queueFamilyIndexCount= 0;
|
image_info.queueFamilyIndexCount= 0;
|
||||||
image_info.pQueueFamilyIndices = NULL;
|
image_info.pQueueFamilyIndices = NULL;
|
||||||
image_info.initialLayout = VK_IMAGE_LAYOUT_GENERAL; /* VK_IMAGE_LAYOUT_UNDEFINED; */
|
image_info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||||
|
|
||||||
vkCreateImage(vk->context->device, &image_info, NULL, &vk->main_buffer.image);
|
vkCreateImage(vk->context->device, &image_info, NULL, &vk->main_buffer.image);
|
||||||
|
vulkan_debug_mark_image(vk->context->device, vk->main_buffer.image);
|
||||||
vkGetImageMemoryRequirements(vk->context->device, vk->main_buffer.image, &mem_reqs);
|
vkGetImageMemoryRequirements(vk->context->device, vk->main_buffer.image, &mem_reqs);
|
||||||
alloc.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
|
alloc.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
|
||||||
alloc.pNext = NULL;
|
alloc.pNext = NULL;
|
||||||
@ -2826,6 +2828,7 @@ static bool vulkan_frame(void *data, const void *frame,
|
|||||||
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
|
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
|
||||||
|
|
||||||
vkAllocateMemory(vk->context->device, &alloc, NULL, &vk->main_buffer.memory);
|
vkAllocateMemory(vk->context->device, &alloc, NULL, &vk->main_buffer.memory);
|
||||||
|
vulkan_debug_mark_memory(vk->context->device, vk->main_buffer.memory);
|
||||||
|
|
||||||
vkBindImageMemory(vk->context->device, vk->main_buffer.image, vk->main_buffer.memory, 0);
|
vkBindImageMemory(vk->context->device, vk->main_buffer.image, vk->main_buffer.memory, 0);
|
||||||
|
|
||||||
|
@ -845,6 +845,7 @@ static std::unique_ptr<StaticTexture> vulkan_filter_chain_load_lut(
|
|||||||
image_info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
image_info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||||
|
|
||||||
vkCreateImage(info->device, &image_info, nullptr, &tex);
|
vkCreateImage(info->device, &image_info, nullptr, &tex);
|
||||||
|
vulkan_debug_mark_image(info->device, tex);
|
||||||
vkGetImageMemoryRequirements(info->device, tex, &mem_reqs);
|
vkGetImageMemoryRequirements(info->device, tex, &mem_reqs);
|
||||||
|
|
||||||
alloc.allocationSize = mem_reqs.size;
|
alloc.allocationSize = mem_reqs.size;
|
||||||
@ -856,6 +857,7 @@ static std::unique_ptr<StaticTexture> vulkan_filter_chain_load_lut(
|
|||||||
if (vkAllocateMemory(info->device, &alloc, nullptr, &memory) != VK_SUCCESS)
|
if (vkAllocateMemory(info->device, &alloc, nullptr, &memory) != VK_SUCCESS)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
vulkan_debug_mark_memory(info->device, memory);
|
||||||
vkBindImageMemory(info->device, tex, memory, 0);
|
vkBindImageMemory(info->device, tex, memory, 0);
|
||||||
|
|
||||||
view_info.image = tex;
|
view_info.image = tex;
|
||||||
@ -1703,6 +1705,7 @@ Buffer::Buffer(VkDevice device,
|
|||||||
| VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
|
| VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
|
||||||
|
|
||||||
vkAllocateMemory(device, &alloc, NULL, &memory);
|
vkAllocateMemory(device, &alloc, NULL, &memory);
|
||||||
|
vulkan_debug_mark_memory(device, memory);
|
||||||
vkBindBufferMemory(device, buffer, memory, 0);
|
vkBindBufferMemory(device, buffer, memory, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2706,6 +2709,7 @@ void Framebuffer::init(DeferredDisposer *disposer)
|
|||||||
levels = info.mipLevels;
|
levels = info.mipLevels;
|
||||||
|
|
||||||
vkCreateImage(device, &info, nullptr, &image);
|
vkCreateImage(device, &info, nullptr, &image);
|
||||||
|
vulkan_debug_mark_image(device, image);
|
||||||
|
|
||||||
vkGetImageMemoryRequirements(device, image, &mem_reqs);
|
vkGetImageMemoryRequirements(device, image, &mem_reqs);
|
||||||
|
|
||||||
@ -2731,6 +2735,7 @@ void Framebuffer::init(DeferredDisposer *disposer)
|
|||||||
memory.size = mem_reqs.size;
|
memory.size = mem_reqs.size;
|
||||||
|
|
||||||
vkAllocateMemory(device, &alloc, nullptr, &memory.memory);
|
vkAllocateMemory(device, &alloc, nullptr, &memory.memory);
|
||||||
|
vulkan_debug_mark_memory(device, memory.memory);
|
||||||
}
|
}
|
||||||
|
|
||||||
vkBindImageMemory(device, image, memory.memory, 0);
|
vkBindImageMemory(device, image, memory.memory, 0);
|
||||||
|
@ -317,22 +317,13 @@ extern PFN_vkCreateDisplayPlaneSurfaceKHR vulkan_symbol_wrapper_vkCreateDisplayP
|
|||||||
#define vkCreateDisplayPlaneSurfaceKHR vulkan_symbol_wrapper_vkCreateDisplayPlaneSurfaceKHR
|
#define vkCreateDisplayPlaneSurfaceKHR vulkan_symbol_wrapper_vkCreateDisplayPlaneSurfaceKHR
|
||||||
extern PFN_vkCreateSharedSwapchainsKHR vulkan_symbol_wrapper_vkCreateSharedSwapchainsKHR;
|
extern PFN_vkCreateSharedSwapchainsKHR vulkan_symbol_wrapper_vkCreateSharedSwapchainsKHR;
|
||||||
#define vkCreateSharedSwapchainsKHR vulkan_symbol_wrapper_vkCreateSharedSwapchainsKHR
|
#define vkCreateSharedSwapchainsKHR vulkan_symbol_wrapper_vkCreateSharedSwapchainsKHR
|
||||||
extern PFN_vkCreateDebugReportCallbackEXT vulkan_symbol_wrapper_vkCreateDebugReportCallbackEXT;
|
|
||||||
#define vkCreateDebugReportCallbackEXT vulkan_symbol_wrapper_vkCreateDebugReportCallbackEXT
|
extern PFN_vkCreateDebugUtilsMessengerEXT vulkan_symbol_wrapper_vkCreateDebugUtilsMessengerEXT;
|
||||||
extern PFN_vkDestroyDebugReportCallbackEXT vulkan_symbol_wrapper_vkDestroyDebugReportCallbackEXT;
|
#define vkCreateDebugUtilsMessengerEXT vulkan_symbol_wrapper_vkCreateDebugUtilsMessengerEXT
|
||||||
#define vkDestroyDebugReportCallbackEXT vulkan_symbol_wrapper_vkDestroyDebugReportCallbackEXT
|
extern PFN_vkDestroyDebugUtilsMessengerEXT vulkan_symbol_wrapper_vkDestroyDebugUtilsMessengerEXT;
|
||||||
extern PFN_vkDebugReportMessageEXT vulkan_symbol_wrapper_vkDebugReportMessageEXT;
|
#define vkDestroyDebugUtilsMessengerEXT vulkan_symbol_wrapper_vkDestroyDebugUtilsMessengerEXT
|
||||||
#define vkDebugReportMessageEXT vulkan_symbol_wrapper_vkDebugReportMessageEXT
|
extern PFN_vkSetDebugUtilsObjectNameEXT vulkan_symbol_wrapper_vkSetDebugUtilsObjectNameEXT;
|
||||||
extern PFN_vkDebugMarkerSetObjectTagEXT vulkan_symbol_wrapper_vkDebugMarkerSetObjectTagEXT;
|
#define vkSetDebugUtilsObjectNameEXT vulkan_symbol_wrapper_vkSetDebugUtilsObjectNameEXT
|
||||||
#define vkDebugMarkerSetObjectTagEXT vulkan_symbol_wrapper_vkDebugMarkerSetObjectTagEXT
|
|
||||||
extern PFN_vkDebugMarkerSetObjectNameEXT vulkan_symbol_wrapper_vkDebugMarkerSetObjectNameEXT;
|
|
||||||
#define vkDebugMarkerSetObjectNameEXT vulkan_symbol_wrapper_vkDebugMarkerSetObjectNameEXT
|
|
||||||
extern PFN_vkCmdDebugMarkerBeginEXT vulkan_symbol_wrapper_vkCmdDebugMarkerBeginEXT;
|
|
||||||
#define vkCmdDebugMarkerBeginEXT vulkan_symbol_wrapper_vkCmdDebugMarkerBeginEXT
|
|
||||||
extern PFN_vkCmdDebugMarkerEndEXT vulkan_symbol_wrapper_vkCmdDebugMarkerEndEXT;
|
|
||||||
#define vkCmdDebugMarkerEndEXT vulkan_symbol_wrapper_vkCmdDebugMarkerEndEXT
|
|
||||||
extern PFN_vkCmdDebugMarkerInsertEXT vulkan_symbol_wrapper_vkCmdDebugMarkerInsertEXT;
|
|
||||||
#define vkCmdDebugMarkerInsertEXT vulkan_symbol_wrapper_vkCmdDebugMarkerInsertEXT
|
|
||||||
|
|
||||||
void vulkan_symbol_wrapper_init(PFN_vkGetInstanceProcAddr get_instance_proc_addr);
|
void vulkan_symbol_wrapper_init(PFN_vkGetInstanceProcAddr get_instance_proc_addr);
|
||||||
PFN_vkGetInstanceProcAddr vulkan_symbol_wrapper_instance_proc_addr(void);
|
PFN_vkGetInstanceProcAddr vulkan_symbol_wrapper_instance_proc_addr(void);
|
||||||
|
@ -156,14 +156,10 @@ PFN_vkCreateDisplayModeKHR vulkan_symbol_wrapper_vkCreateDisplayModeKHR;
|
|||||||
PFN_vkGetDisplayPlaneCapabilitiesKHR vulkan_symbol_wrapper_vkGetDisplayPlaneCapabilitiesKHR;
|
PFN_vkGetDisplayPlaneCapabilitiesKHR vulkan_symbol_wrapper_vkGetDisplayPlaneCapabilitiesKHR;
|
||||||
PFN_vkCreateDisplayPlaneSurfaceKHR vulkan_symbol_wrapper_vkCreateDisplayPlaneSurfaceKHR;
|
PFN_vkCreateDisplayPlaneSurfaceKHR vulkan_symbol_wrapper_vkCreateDisplayPlaneSurfaceKHR;
|
||||||
PFN_vkCreateSharedSwapchainsKHR vulkan_symbol_wrapper_vkCreateSharedSwapchainsKHR;
|
PFN_vkCreateSharedSwapchainsKHR vulkan_symbol_wrapper_vkCreateSharedSwapchainsKHR;
|
||||||
PFN_vkCreateDebugReportCallbackEXT vulkan_symbol_wrapper_vkCreateDebugReportCallbackEXT;
|
|
||||||
PFN_vkDestroyDebugReportCallbackEXT vulkan_symbol_wrapper_vkDestroyDebugReportCallbackEXT;
|
PFN_vkCreateDebugUtilsMessengerEXT vulkan_symbol_wrapper_vkCreateDebugUtilsMessengerEXT;
|
||||||
PFN_vkDebugReportMessageEXT vulkan_symbol_wrapper_vkDebugReportMessageEXT;
|
PFN_vkDestroyDebugUtilsMessengerEXT vulkan_symbol_wrapper_vkDestroyDebugUtilsMessengerEXT;
|
||||||
PFN_vkDebugMarkerSetObjectTagEXT vulkan_symbol_wrapper_vkDebugMarkerSetObjectTagEXT;
|
PFN_vkSetDebugUtilsObjectNameEXT vulkan_symbol_wrapper_vkSetDebugUtilsObjectNameEXT;
|
||||||
PFN_vkDebugMarkerSetObjectNameEXT vulkan_symbol_wrapper_vkDebugMarkerSetObjectNameEXT;
|
|
||||||
PFN_vkCmdDebugMarkerBeginEXT vulkan_symbol_wrapper_vkCmdDebugMarkerBeginEXT;
|
|
||||||
PFN_vkCmdDebugMarkerEndEXT vulkan_symbol_wrapper_vkCmdDebugMarkerEndEXT;
|
|
||||||
PFN_vkCmdDebugMarkerInsertEXT vulkan_symbol_wrapper_vkCmdDebugMarkerInsertEXT;
|
|
||||||
|
|
||||||
static PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
|
static PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
|
||||||
void vulkan_symbol_wrapper_init(PFN_vkGetInstanceProcAddr get_instance_proc_addr)
|
void vulkan_symbol_wrapper_init(PFN_vkGetInstanceProcAddr get_instance_proc_addr)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user