mirror of
https://github.com/libretro/RetroArch
synced 2025-04-10 06:44:27 +00:00
Add Command Function pointers
This commit is contained in:
parent
67ea4e1d6b
commit
0e60d20705
@ -41,7 +41,7 @@ static VkDevice cached_device;
|
|||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
#define VK_GET_INSTANCE_PROC_ADDR(vk, inst, entrypoint) do { \
|
#define VK_GET_INSTANCE_PROC_ADDR(vk, inst, entrypoint) do { \
|
||||||
vk->context.fp.vk##entrypoint = (PFN_vk##entrypoint) vkGetInstanceProcAddr(inst, "vk"#entrypoint); \
|
vk->context.fp.vk##entrypoint = (PFN_vk##entrypoint) vk->context.fp.vkGetInstanceProcAddr(inst, "vk"#entrypoint); \
|
||||||
if (vk->context.fp.vk##entrypoint == NULL) { \
|
if (vk->context.fp.vk##entrypoint == NULL) { \
|
||||||
RARCH_ERR("vkGetInstanceProcAddr failed to find vk%s\n", #entrypoint); \
|
RARCH_ERR("vkGetInstanceProcAddr failed to find vk%s\n", #entrypoint); \
|
||||||
return false; \
|
return false; \
|
||||||
@ -49,7 +49,7 @@ static VkDevice cached_device;
|
|||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
#define VK_GET_DEVICE_PROC_ADDR(vk, dev, entrypoint) do { \
|
#define VK_GET_DEVICE_PROC_ADDR(vk, dev, entrypoint) do { \
|
||||||
vk->context.fp.vk##entrypoint = (PFN_vk##entrypoint) vkGetDeviceProcAddr(dev, "vk" #entrypoint); \
|
vk->context.fp.vk##entrypoint = (PFN_vk##entrypoint) vk->context.fp.vkGetDeviceProcAddr(dev, "vk" #entrypoint); \
|
||||||
if (vk->context.fp.vk##entrypoint == NULL) { \
|
if (vk->context.fp.vk##entrypoint == NULL) { \
|
||||||
RARCH_ERR("vkGetDeviceProcAddr failed to find vk%s\n", #entrypoint); \
|
RARCH_ERR("vkGetDeviceProcAddr failed to find vk%s\n", #entrypoint); \
|
||||||
return false; \
|
return false; \
|
||||||
@ -284,7 +284,7 @@ struct vk_texture vulkan_create_texture(vk_t *vk,
|
|||||||
#if 0
|
#if 0
|
||||||
vulkan_track_alloc(tex.image);
|
vulkan_track_alloc(tex.image);
|
||||||
#endif
|
#endif
|
||||||
vkGetImageMemoryRequirements(device, tex.image, &mem_reqs);
|
VKFUNC(vkGetImageMemoryRequirements)(device, tex.image, &mem_reqs);
|
||||||
alloc.allocationSize = mem_reqs.size;
|
alloc.allocationSize = mem_reqs.size;
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
@ -323,7 +323,7 @@ struct vk_texture vulkan_create_texture(vk_t *vk,
|
|||||||
info.usage = VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
|
info.usage = VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
|
||||||
VKFUNC(vkCreateImage)(device, &info, NULL, &tex.image);
|
VKFUNC(vkCreateImage)(device, &info, NULL, &tex.image);
|
||||||
|
|
||||||
vkGetImageMemoryRequirements(device, tex.image, &mem_reqs);
|
VKFUNC(vkGetImageMemoryRequirements)(device, tex.image, &mem_reqs);
|
||||||
|
|
||||||
alloc.allocationSize = mem_reqs.size;
|
alloc.allocationSize = mem_reqs.size;
|
||||||
alloc.memoryTypeIndex = vulkan_find_memory_type_fallback(&vk->context->memory_properties,
|
alloc.memoryTypeIndex = vulkan_find_memory_type_fallback(&vk->context->memory_properties,
|
||||||
@ -1093,6 +1093,8 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
|
|||||||
VKSYM(vk, DestroyInstance);
|
VKSYM(vk, DestroyInstance);
|
||||||
VKSYM(vk, AllocateMemory);
|
VKSYM(vk, AllocateMemory);
|
||||||
VKSYM(vk, FreeMemory);
|
VKSYM(vk, FreeMemory);
|
||||||
|
VKSYM(vk, GetInstanceProcAddr);
|
||||||
|
VKSYM(vk, GetDeviceProcAddr);
|
||||||
|
|
||||||
app.pApplicationName = "RetroArch";
|
app.pApplicationName = "RetroArch";
|
||||||
app.applicationVersion = 0;
|
app.applicationVersion = 0;
|
||||||
@ -1152,6 +1154,9 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
|
|||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateImageView);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateImageView);
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyImageView);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyImageView);
|
||||||
|
|
||||||
|
/* Resource Memory Associations */
|
||||||
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, GetImageMemoryRequirements);
|
||||||
|
|
||||||
/* Descriptor pools */
|
/* Descriptor pools */
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateDescriptorPool);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateDescriptorPool);
|
||||||
|
|
||||||
|
@ -145,6 +145,10 @@ typedef struct vulkan_context
|
|||||||
PFN_vkAllocateMemory vkAllocateMemory;
|
PFN_vkAllocateMemory vkAllocateMemory;
|
||||||
PFN_vkFreeMemory vkFreeMemory;
|
PFN_vkFreeMemory vkFreeMemory;
|
||||||
|
|
||||||
|
/* Command Function Pointers */
|
||||||
|
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
|
||||||
|
PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
|
||||||
|
|
||||||
/* Buffers */
|
/* Buffers */
|
||||||
PFN_vkCreateBuffer vkCreateBuffer;
|
PFN_vkCreateBuffer vkCreateBuffer;
|
||||||
PFN_vkDestroyBuffer vkDestroyBuffer;
|
PFN_vkDestroyBuffer vkDestroyBuffer;
|
||||||
@ -168,6 +172,9 @@ typedef struct vulkan_context
|
|||||||
PFN_vkCreateImageView vkCreateImageView;
|
PFN_vkCreateImageView vkCreateImageView;
|
||||||
PFN_vkDestroyImageView vkDestroyImageView;
|
PFN_vkDestroyImageView vkDestroyImageView;
|
||||||
|
|
||||||
|
/* Resource Memory Association */
|
||||||
|
PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
|
||||||
|
|
||||||
/* Queues */
|
/* Queues */
|
||||||
PFN_vkGetDeviceQueue vkGetDeviceQueue;
|
PFN_vkGetDeviceQueue vkGetDeviceQueue;
|
||||||
PFN_vkQueueWaitIdle vkQueueWaitIdle;
|
PFN_vkQueueWaitIdle vkQueueWaitIdle;
|
||||||
|
@ -502,13 +502,11 @@ static void vulkan_init_textures(vk_t *vk)
|
|||||||
&vk->swapchain[i].texture);
|
&vk->swapchain[i].texture);
|
||||||
|
|
||||||
if (vk->swapchain[i].texture.type == VULKAN_TEXTURE_STAGING)
|
if (vk->swapchain[i].texture.type == VULKAN_TEXTURE_STAGING)
|
||||||
{
|
|
||||||
vk->swapchain[i].texture_optimal = vulkan_create_texture(vk, NULL,
|
vk->swapchain[i].texture_optimal = vulkan_create_texture(vk, NULL,
|
||||||
vk->tex_w, vk->tex_h, vk->tex_fmt,
|
vk->tex_w, vk->tex_h, vk->tex_fmt,
|
||||||
NULL, NULL, VULKAN_TEXTURE_DYNAMIC);
|
NULL, NULL, VULKAN_TEXTURE_DYNAMIC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vulkan_deinit_textures(vk_t *vk)
|
static void vulkan_deinit_textures(vk_t *vk)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user