mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-01-31 13:10:34 +00:00
[vulkan] Use indexed initializers for barriers
This will make maintaining the arrays much easier: no worries about getting things out of sync.
This commit is contained in:
parent
6a7f78485a
commit
0d4ece875d
2 changed files with 14 additions and 25 deletions
|
@ -13,7 +13,7 @@ typedef struct {
|
||||||
VkBufferMemoryBarrier barrier;
|
VkBufferMemoryBarrier barrier;
|
||||||
} qfv_bufferbarrier_t;
|
} qfv_bufferbarrier_t;
|
||||||
|
|
||||||
//XXX Note: imageBarriers and the enum must be kept in sync
|
// image layout transitions
|
||||||
enum {
|
enum {
|
||||||
qfv_LT_Undefined_to_TransferDst,
|
qfv_LT_Undefined_to_TransferDst,
|
||||||
qfv_LT_TransferDst_to_TransferSrc,
|
qfv_LT_TransferDst_to_TransferSrc,
|
||||||
|
@ -24,7 +24,7 @@ enum {
|
||||||
qfv_LT_Undefined_to_Color,
|
qfv_LT_Undefined_to_Color,
|
||||||
};
|
};
|
||||||
|
|
||||||
//XXX Note: bufferBarriers and the enum must be kept in sync
|
// buffer barriers
|
||||||
enum {
|
enum {
|
||||||
qfv_BB_Unknown_to_TransferWrite,
|
qfv_BB_Unknown_to_TransferWrite,
|
||||||
qfv_BB_TransferWrite_to_VertexAttrRead,
|
qfv_BB_TransferWrite_to_VertexAttrRead,
|
||||||
|
|
|
@ -32,8 +32,7 @@
|
||||||
#include "QF/Vulkan/barrier.h"
|
#include "QF/Vulkan/barrier.h"
|
||||||
|
|
||||||
const qfv_imagebarrier_t imageBarriers[] = {
|
const qfv_imagebarrier_t imageBarriers[] = {
|
||||||
// undefined -> transfer dst optimal
|
[qfv_LT_Undefined_to_TransferDst] = {
|
||||||
{
|
|
||||||
.srcStages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
|
.srcStages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
|
||||||
.dstStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
.dstStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
.barrier = {
|
.barrier = {
|
||||||
|
@ -46,8 +45,7 @@ const qfv_imagebarrier_t imageBarriers[] = {
|
||||||
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }
|
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// transfer dst optimal -> transfer src optimal
|
[qfv_LT_TransferDst_to_TransferSrc] = {
|
||||||
{
|
|
||||||
.srcStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
.srcStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
.dstStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
.dstStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
.barrier = {
|
.barrier = {
|
||||||
|
@ -60,8 +58,7 @@ const qfv_imagebarrier_t imageBarriers[] = {
|
||||||
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }
|
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// transfer dst optimal -> shader read only optimal
|
[qfv_LT_TransferDst_to_ShaderReadOnly] = {
|
||||||
{
|
|
||||||
.srcStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
.srcStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
.dstStages = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
.dstStages = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
||||||
.barrier = {
|
.barrier = {
|
||||||
|
@ -74,8 +71,7 @@ const qfv_imagebarrier_t imageBarriers[] = {
|
||||||
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }
|
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// transfer src optimal -> shader read only optimal
|
[qfv_LT_TransferSrc_to_ShaderReadOnly] = {
|
||||||
{
|
|
||||||
.srcStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
.srcStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
.dstStages = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
.dstStages = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
||||||
.barrier = {
|
.barrier = {
|
||||||
|
@ -88,8 +84,7 @@ const qfv_imagebarrier_t imageBarriers[] = {
|
||||||
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }
|
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// shader read only optimal -> transfer dst optimal
|
[qfv_LT_ShaderReadOnly_to_TransferDst] = {
|
||||||
{
|
|
||||||
.srcStages = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
.srcStages = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
||||||
.dstStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
.dstStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
.barrier = {
|
.barrier = {
|
||||||
|
@ -102,8 +97,7 @@ const qfv_imagebarrier_t imageBarriers[] = {
|
||||||
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }
|
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// undefined -> depth stencil attachment optimal
|
[qfv_LT_Undefined_to_DepthStencil] = {
|
||||||
{
|
|
||||||
.srcStages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
|
.srcStages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
|
||||||
.dstStages = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
|
.dstStages = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
|
||||||
.barrier = {
|
.barrier = {
|
||||||
|
@ -117,8 +111,7 @@ const qfv_imagebarrier_t imageBarriers[] = {
|
||||||
{ VK_IMAGE_ASPECT_DEPTH_BIT, 0, 1, 0, 1 }
|
{ VK_IMAGE_ASPECT_DEPTH_BIT, 0, 1, 0, 1 }
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// undefined -> color attachment optimal
|
[qfv_LT_Undefined_to_Color] = {
|
||||||
{
|
|
||||||
.srcStages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
|
.srcStages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
|
||||||
.dstStages = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
|
.dstStages = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
|
||||||
.barrier = {
|
.barrier = {
|
||||||
|
@ -135,8 +128,7 @@ const qfv_imagebarrier_t imageBarriers[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
const qfv_bufferbarrier_t bufferBarriers[] = {
|
const qfv_bufferbarrier_t bufferBarriers[] = {
|
||||||
// unknown to transfer write
|
[qfv_BB_Unknown_to_TransferWrite] = {
|
||||||
{
|
|
||||||
.srcStages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
|
.srcStages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
|
||||||
.dstStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
.dstStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
.barrier = {
|
.barrier = {
|
||||||
|
@ -145,8 +137,7 @@ const qfv_bufferbarrier_t bufferBarriers[] = {
|
||||||
VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED,
|
VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// transfer write to vertex attribute read
|
[qfv_BB_TransferWrite_to_VertexAttrRead] = {
|
||||||
{
|
|
||||||
.srcStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
.srcStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
.dstStages = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
|
.dstStages = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
|
||||||
.barrier = {
|
.barrier = {
|
||||||
|
@ -155,8 +146,7 @@ const qfv_bufferbarrier_t bufferBarriers[] = {
|
||||||
VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED,
|
VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// transfer write to index read
|
[qfv_BB_TransferWrite_to_IndexRead] = {
|
||||||
{
|
|
||||||
.srcStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
.srcStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
.dstStages = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
|
.dstStages = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
|
||||||
.barrier = {
|
.barrier = {
|
||||||
|
@ -165,9 +155,8 @@ const qfv_bufferbarrier_t bufferBarriers[] = {
|
||||||
VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED,
|
VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// transfer write to uniform read
|
[qfv_BB_TransferWrite_to_UniformRead] = {
|
||||||
// note: not necessarily optimal as it uses vertex shader for dst
|
// note: not necessarily optimal as it uses vertex shader for dst
|
||||||
{
|
|
||||||
.srcStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
.srcStages = VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||||
.dstStages = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
|
.dstStages = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
|
||||||
.barrier = {
|
.barrier = {
|
||||||
|
|
Loading…
Reference in a new issue