mirror of
https://github.com/libretro/RetroArch
synced 2025-02-25 21:41:03 +00:00
(Vulkan) Add pipeline barrier function pointer
This commit is contained in:
parent
bd96ab3585
commit
a53e7a5437
@ -743,7 +743,10 @@ void vulkan_image_layout_transition(
|
|||||||
VkPipelineStageFlags srcStages,
|
VkPipelineStageFlags srcStages,
|
||||||
VkPipelineStageFlags dstStages)
|
VkPipelineStageFlags dstStages)
|
||||||
{
|
{
|
||||||
VkImageMemoryBarrier barrier = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER };
|
struct vulkan_context_fp *vkcfp =
|
||||||
|
(struct vulkan_context_fp*)&vk->context->fp;
|
||||||
|
VkImageMemoryBarrier barrier =
|
||||||
|
{ VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER };
|
||||||
|
|
||||||
barrier.srcAccessMask = srcAccess;
|
barrier.srcAccessMask = srcAccess;
|
||||||
barrier.dstAccessMask = dstAccess;
|
barrier.dstAccessMask = dstAccess;
|
||||||
@ -756,7 +759,7 @@ void vulkan_image_layout_transition(
|
|||||||
barrier.subresourceRange.levelCount = 1;
|
barrier.subresourceRange.levelCount = 1;
|
||||||
barrier.subresourceRange.layerCount = 1;
|
barrier.subresourceRange.layerCount = 1;
|
||||||
|
|
||||||
vkCmdPipelineBarrier(cmd,
|
VKFUNC(vkCmdPipelineBarrier)(cmd,
|
||||||
srcStages,
|
srcStages,
|
||||||
dstStages,
|
dstStages,
|
||||||
0,
|
0,
|
||||||
@ -1136,7 +1139,6 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
|
|||||||
/* Images */
|
/* Images */
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateImage);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateImage);
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyImage);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyImage);
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdCopyImage);
|
|
||||||
|
|
||||||
/* Image Views */
|
/* Image Views */
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateImageView);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateImageView);
|
||||||
@ -1146,7 +1148,6 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
|
|||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateDescriptorPool);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateDescriptorPool);
|
||||||
|
|
||||||
/* Descriptor sets */
|
/* Descriptor sets */
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdBindDescriptorSets);
|
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, UpdateDescriptorSets);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, UpdateDescriptorSets);
|
||||||
|
|
||||||
/* Descriptor Set Layout */
|
/* Descriptor Set Layout */
|
||||||
@ -1168,19 +1169,15 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
|
|||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyRenderPass);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyRenderPass);
|
||||||
|
|
||||||
|
|
||||||
/* Fragment operations */
|
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdSetScissor);
|
|
||||||
|
|
||||||
/* Fixed-function vertex postprocessing */
|
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdSetViewport);
|
|
||||||
|
|
||||||
/* Pipelines */
|
/* Pipelines */
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreatePipelineLayout);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreatePipelineLayout);
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyPipelineLayout);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyPipelineLayout);
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreatePipelineCache);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreatePipelineCache);
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdBindPipeline);
|
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyPipeline);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyPipeline);
|
||||||
|
|
||||||
|
|
||||||
/* Command buffers */
|
/* Command buffers */
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateCommandPool);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateCommandPool);
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyCommandPool);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyCommandPool);
|
||||||
@ -1264,6 +1261,15 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
|
|||||||
NULL, &vk->context.device) != VK_SUCCESS)
|
NULL, &vk->context.device) != VK_SUCCESS)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* Image commands */
|
||||||
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdCopyImage);
|
||||||
|
|
||||||
|
/* Descriptor Set commands */
|
||||||
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdBindDescriptorSets);
|
||||||
|
|
||||||
|
/* Fragment operations */
|
||||||
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdSetScissor);
|
||||||
|
|
||||||
/* Render Pass commands */
|
/* Render Pass commands */
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdBeginRenderPass);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdBeginRenderPass);
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdEndRenderPass);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdEndRenderPass);
|
||||||
@ -1272,9 +1278,18 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
|
|||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateSampler);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateSampler);
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroySampler);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroySampler);
|
||||||
|
|
||||||
|
/* Fixed-function vertex postprocessing */
|
||||||
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdSetViewport);
|
||||||
|
|
||||||
/* Clear commands */
|
/* Clear commands */
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdClearAttachments);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdClearAttachments);
|
||||||
|
|
||||||
|
/* Pipeline */
|
||||||
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdBindPipeline);
|
||||||
|
|
||||||
|
/* Pipeline Barriers */
|
||||||
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdPipelineBarrier);
|
||||||
|
|
||||||
/* Drawing commands */
|
/* Drawing commands */
|
||||||
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdDraw);
|
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CmdDraw);
|
||||||
|
|
||||||
|
@ -170,6 +170,9 @@ typedef struct vulkan_context
|
|||||||
|
|
||||||
/* Pipeline Cache */
|
/* Pipeline Cache */
|
||||||
PFN_vkCreatePipelineCache vkCreatePipelineCache;
|
PFN_vkCreatePipelineCache vkCreatePipelineCache;
|
||||||
|
|
||||||
|
/* Pipeline Barriers */
|
||||||
|
PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
|
||||||
|
|
||||||
/* Descriptor pools */
|
/* Descriptor pools */
|
||||||
PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
|
PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user