Adding interface for renderpass layout transitions

This commit is contained in:
Dynamitos
2024-01-31 09:49:53 +01:00
parent 1bf08f696b
commit 5678021c9e
34 changed files with 616 additions and 184 deletions
+241
View File
@@ -1552,4 +1552,245 @@ Gfx::SeSamplerMipmapMode Seele::Vulkan::cast(const VkSamplerMipmapMode &filter)
default:
return SE_SAMPLER_MIPMAP_MODE_MAX_ENUM;
}
}
VkAccessFlagBits Seele::Vulkan::cast(const Gfx::SeAccessFlagBits &flags)
{
switch(flags)
{
case SE_ACCESS_INDIRECT_COMMAND_READ_BIT:
return VK_ACCESS_INDIRECT_COMMAND_READ_BIT;
case SE_ACCESS_INDEX_READ_BIT:
return VK_ACCESS_INDEX_READ_BIT;
case SE_ACCESS_VERTEX_ATTRIBUTE_READ_BIT:
return VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT;
case SE_ACCESS_UNIFORM_READ_BIT:
return VK_ACCESS_UNIFORM_READ_BIT;
case SE_ACCESS_INPUT_ATTACHMENT_READ_BIT:
return VK_ACCESS_INPUT_ATTACHMENT_READ_BIT;
case SE_ACCESS_SHADER_READ_BIT:
return VK_ACCESS_SHADER_READ_BIT;
case SE_ACCESS_SHADER_WRITE_BIT:
return VK_ACCESS_SHADER_WRITE_BIT;
case SE_ACCESS_COLOR_ATTACHMENT_READ_BIT:
return VK_ACCESS_COLOR_ATTACHMENT_READ_BIT;
case SE_ACCESS_COLOR_ATTACHMENT_WRITE_BIT:
return VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
case SE_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT:
return VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT;
case SE_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT:
return VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
case SE_ACCESS_TRANSFER_READ_BIT:
return VK_ACCESS_TRANSFER_READ_BIT;
case SE_ACCESS_TRANSFER_WRITE_BIT:
return VK_ACCESS_TRANSFER_WRITE_BIT;
case SE_ACCESS_HOST_READ_BIT:
return VK_ACCESS_HOST_READ_BIT;
case SE_ACCESS_HOST_WRITE_BIT:
return VK_ACCESS_HOST_WRITE_BIT;
case SE_ACCESS_MEMORY_READ_BIT:
return VK_ACCESS_MEMORY_READ_BIT;
case SE_ACCESS_MEMORY_WRITE_BIT:
return VK_ACCESS_MEMORY_WRITE_BIT;
case SE_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT:
return VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT;
case SE_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT:
return VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT;
case SE_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT:
return VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT;
case SE_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT:
return VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT;
case SE_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT:
return VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT;
case SE_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT:
return VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT;
case SE_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV:
return VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV;
case SE_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV:
return VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV;
default:
return VK_ACCESS_FLAG_BITS_MAX_ENUM;
}
}
Gfx::SeAccessFlagBits Seele::Vulkan::cast(const VkAccessFlagBits &flags)
{
switch(flags)
{
case VK_ACCESS_INDIRECT_COMMAND_READ_BIT:
return SE_ACCESS_INDIRECT_COMMAND_READ_BIT;
case VK_ACCESS_INDEX_READ_BIT:
return SE_ACCESS_INDEX_READ_BIT;
case VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT:
return SE_ACCESS_VERTEX_ATTRIBUTE_READ_BIT;
case VK_ACCESS_UNIFORM_READ_BIT:
return SE_ACCESS_UNIFORM_READ_BIT;
case VK_ACCESS_INPUT_ATTACHMENT_READ_BIT:
return SE_ACCESS_INPUT_ATTACHMENT_READ_BIT;
case VK_ACCESS_SHADER_READ_BIT:
return SE_ACCESS_SHADER_READ_BIT;
case VK_ACCESS_SHADER_WRITE_BIT:
return SE_ACCESS_SHADER_WRITE_BIT;
case VK_ACCESS_COLOR_ATTACHMENT_READ_BIT:
return SE_ACCESS_COLOR_ATTACHMENT_READ_BIT;
case VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT:
return SE_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT:
return SE_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT;
case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT:
return SE_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
case VK_ACCESS_TRANSFER_READ_BIT:
return SE_ACCESS_TRANSFER_READ_BIT;
case VK_ACCESS_TRANSFER_WRITE_BIT:
return SE_ACCESS_TRANSFER_WRITE_BIT;
case VK_ACCESS_HOST_READ_BIT:
return SE_ACCESS_HOST_READ_BIT;
case VK_ACCESS_HOST_WRITE_BIT:
return SE_ACCESS_HOST_WRITE_BIT;
case VK_ACCESS_MEMORY_READ_BIT:
return SE_ACCESS_MEMORY_READ_BIT;
case VK_ACCESS_MEMORY_WRITE_BIT:
return SE_ACCESS_MEMORY_WRITE_BIT;
case VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT:
return SE_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT;
case VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT:
return SE_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT;
case VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT:
return SE_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT;
case VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT:
return SE_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT;
case VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT:
return SE_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT;
case VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT:
return SE_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT;
case VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV:
return SE_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV;
case VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV:
return SE_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV;
default:
return SE_ACCESS_FLAG_BITS_MAX_ENUM;
}
}
VkPipelineStageFlagBits Seele::Vulkan::cast(const Gfx::SePipelineStageFlagBits &flags)
{
switch(flags)
{
case SE_PIPELINE_STAGE_TOP_OF_PIPE_BIT:
return VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
case SE_PIPELINE_STAGE_DRAW_INDIRECT_BIT:
return VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT;
case SE_PIPELINE_STAGE_VERTEX_INPUT_BIT:
return VK_PIPELINE_STAGE_VERTEX_INPUT_BIT;
case SE_PIPELINE_STAGE_VERTEX_SHADER_BIT:
return VK_PIPELINE_STAGE_VERTEX_SHADER_BIT;
case SE_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT:
return VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT;
case SE_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT:
return VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT;
case SE_PIPELINE_STAGE_GEOMETRY_SHADER_BIT:
return VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT;
case SE_PIPELINE_STAGE_FRAGMENT_SHADER_BIT:
return VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
case SE_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT:
return VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT;
case SE_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT:
return VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT;
case SE_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT:
return VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
case SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT:
return VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT;
case SE_PIPELINE_STAGE_TRANSFER_BIT:
return VK_PIPELINE_STAGE_TRANSFER_BIT;
case SE_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT:
return VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
case SE_PIPELINE_STAGE_HOST_BIT:
return VK_PIPELINE_STAGE_HOST_BIT;
case SE_PIPELINE_STAGE_ALL_GRAPHICS_BIT:
return VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT;
case SE_PIPELINE_STAGE_ALL_COMMANDS_BIT:
return VK_PIPELINE_STAGE_ALL_COMMANDS_BIT;
case SE_PIPELINE_STAGE_NONE:
return VK_PIPELINE_STAGE_NONE;
case SE_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT:
return VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT;
case SE_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT:
return VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT;
case SE_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR:
return VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR;
case SE_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR:
return VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR;
case SE_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT:
return VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT;
case SE_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR:
return VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR;
case SE_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV:
return VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV;
case SE_PIPELINE_STAGE_TASK_SHADER_BIT_EXT:
return VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT;
case SE_PIPELINE_STAGE_MESH_SHADER_BIT_EXT:
return VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT;
default:
return VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM;
}
}
Gfx::SePipelineStageFlagBits Seele::Vulkan::cast(const VkPipelineStageFlagBits &flags)
{
switch(flags)
{
case VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT:
return SE_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
case VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT:
return SE_PIPELINE_STAGE_DRAW_INDIRECT_BIT;
case VK_PIPELINE_STAGE_VERTEX_INPUT_BIT:
return SE_PIPELINE_STAGE_VERTEX_INPUT_BIT;
case VK_PIPELINE_STAGE_VERTEX_SHADER_BIT:
return SE_PIPELINE_STAGE_VERTEX_SHADER_BIT;
case VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT:
return SE_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT;
case VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT:
return SE_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT;
case VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT:
return SE_PIPELINE_STAGE_GEOMETRY_SHADER_BIT;
case VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT:
return SE_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
case VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT:
return SE_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT;
case VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT:
return SE_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT;
case VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT:
return SE_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
case VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT:
return SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT;
case VK_PIPELINE_STAGE_TRANSFER_BIT:
return SE_PIPELINE_STAGE_TRANSFER_BIT;
case VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT:
return SE_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
case VK_PIPELINE_STAGE_HOST_BIT:
return SE_PIPELINE_STAGE_HOST_BIT;
case VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT:
return SE_PIPELINE_STAGE_ALL_GRAPHICS_BIT;
case VK_PIPELINE_STAGE_ALL_COMMANDS_BIT:
return SE_PIPELINE_STAGE_ALL_COMMANDS_BIT;
case VK_PIPELINE_STAGE_NONE:
return SE_PIPELINE_STAGE_NONE;
case VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT:
return SE_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT;
case VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT:
return SE_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT;
case VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR:
return SE_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR;
case VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR:
return SE_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR;
case VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT:
return SE_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT;
case VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR:
return SE_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR;
case VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV:
return SE_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV;
case VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT:
return SE_PIPELINE_STAGE_TASK_SHADER_BIT_EXT;
case VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT:
return SE_PIPELINE_STAGE_MESH_SHADER_BIT_EXT;
default:
return SE_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM;
}
}