87 lines
2.7 KiB
C++
87 lines
2.7 KiB
C++
#include "materialsystem/imaterialsystem.h"
|
|
#include "vulkan_state.h"
|
|
|
|
IRenderingObject *VulkanGetObject( VkFrameObject_t stObject, int iIndex )
|
|
{
|
|
switch (stObject.m_eObjectType)
|
|
{
|
|
case FRAME_OBJECT_TYPE_SINGLE:
|
|
return stObject.m_pSingle;
|
|
case FRAME_OBJECT_TYPE_SWAPPED:
|
|
return stObject.m_ppSwapped[iIndex];
|
|
default:
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
VkAccessFlags2 VulkanGetAccessFlags( EDependencyMode eMode )
|
|
{
|
|
switch (eMode)
|
|
{
|
|
case DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE: return VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR;
|
|
case DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION: return VK_ACCESS_2_TRANSFER_WRITE_BIT;
|
|
case DEPENDENCY_MODE_IMAGE_PRESENT: return VK_ACCESS_2_NONE;
|
|
default:
|
|
return VK_ACCESS_2_MEMORY_READ_BIT | VK_ACCESS_2_MEMORY_WRITE_BIT;
|
|
}
|
|
}
|
|
|
|
VkPipelineStageFlags2 VulkanGetStageFlags( EDependencyMode eMode )
|
|
{
|
|
switch (eMode)
|
|
{
|
|
case DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE: return VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT;
|
|
case DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION: return VK_PIPELINE_STAGE_2_TRANSFER_BIT;
|
|
case DEPENDENCY_MODE_IMAGE_PRESENT: return VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT;
|
|
default:
|
|
return VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT;
|
|
}
|
|
}
|
|
|
|
VkImageLayout VulkanGetImageLayout( EDependencyMode eMode )
|
|
{
|
|
switch (eMode)
|
|
{
|
|
case DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE: return VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
|
case DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION: return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
|
|
case DEPENDENCY_MODE_IMAGE_PRESENT: return VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
|
|
default:
|
|
return VK_IMAGE_LAYOUT_UNDEFINED;
|
|
}
|
|
}
|
|
VkFormat VulkanGetVertexFormat( EVertexFormat eFormat )
|
|
{
|
|
switch (eFormat)
|
|
{
|
|
case VERTEX_FORMAT_X32_SFLOAT: return VK_FORMAT_R32_SFLOAT;
|
|
case VERTEX_FORMAT_XY32_SFLOAT: return VK_FORMAT_R32G32_SFLOAT;
|
|
case VERTEX_FORMAT_XYZ32_SFLOAT: return VK_FORMAT_R32G32B32_SFLOAT;
|
|
case VERTEX_FORMAT_XYZW32_SFLOAT: return VK_FORMAT_R32G32B32A32_SFLOAT;
|
|
default:
|
|
return VK_FORMAT_UNDEFINED;
|
|
}
|
|
}
|
|
|
|
VkPrimitiveTopology VulkanGetTopology( ETopologyMode eMode )
|
|
{
|
|
switch ( eMode )
|
|
{
|
|
case TOPOLOGY_MODE_POINT_LIST: return VK_PRIMITIVE_TOPOLOGY_POINT_LIST;
|
|
case TOPOLOGY_MODE_LINE_LIST: return VK_PRIMITIVE_TOPOLOGY_LINE_LIST;
|
|
case TOPOLOGY_MODE_LINE_STRIP: return VK_PRIMITIVE_TOPOLOGY_LINE_STRIP;
|
|
case TOPOLOGY_MODE_TRIANGLE_LIST: return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
|
|
case TOPOLOGY_MODE_TRIANGLE_STRIP: return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP;
|
|
}
|
|
}
|
|
VkShaderStageFlagBits VulkanGetShaderStage( EShaderStage eStage )
|
|
{
|
|
switch (eStage)
|
|
{
|
|
case SHADER_STAGE_VERTEX: return VK_SHADER_STAGE_VERTEX_BIT;
|
|
case SHADER_STAGE_PIXEL: return VK_SHADER_STAGE_FRAGMENT_BIT;
|
|
default:
|
|
break;
|
|
}
|
|
return VK_SHADER_STAGE_VERTEX_BIT;
|
|
}
|