VULKAN_CreateRenderPass

pull/8/head
cosmonaut 2020-12-17 00:19:02 -08:00
parent fd731ac648
commit b10b9bfafd
2 changed files with 306 additions and 45 deletions

View File

@ -133,11 +133,24 @@ typedef enum REFRESH_SurfaceFormat
typedef enum REFRESH_DepthFormat typedef enum REFRESH_DepthFormat
{ {
REFRESH_DEPTHFORMAT_D16_UNORM,
REFRESH_DEPTHFORMAT_D32_SFLOAT,
REFRESH_DEPTHFORMAT_D16_UNORM_S8_UINT, REFRESH_DEPTHFORMAT_D16_UNORM_S8_UINT,
REFRESH_DEPTHFORMAT_D24_UNORM_S8_UINT, REFRESH_DEPTHFORMAT_D24_UNORM_S8_UINT,
REFRESH_DEPTHFORMAT_D32_SFLOAT_S8_UINT REFRESH_DEPTHFORMAT_D32_SFLOAT_S8_UINT
} REFRESH_DepthFormat; } REFRESH_DepthFormat;
typedef enum REFRESH_SampleCount
{
REFRESH_SAMPLECOUNT_1,
REFRESH_SAMPLECOUNT_2,
REFRESH_SAMPLECOUNT_4,
REFRESH_SAMPLECOUNT_8,
REFRESH_SAMPLECOUNT_16,
REFRESH_SAMPLECOUNT_32,
REFRESH_SAMPLECOUNT_64
} REFRESH_SampleCount;
typedef enum REFRESH_CubeMapFace typedef enum REFRESH_CubeMapFace
{ {
REFRESH_CUBEMAPFACE_POSITIVEX, REFRESH_CUBEMAPFACE_POSITIVEX,
@ -454,7 +467,7 @@ typedef struct REFRESH_PipelineLayoutCreateInfo
typedef struct REFRESH_ColorTargetDescription typedef struct REFRESH_ColorTargetDescription
{ {
REFRESH_SurfaceFormat format; REFRESH_SurfaceFormat format;
uint32_t multisampleCount; REFRESH_SampleCount multisampleCount;
REFRESH_LoadOp loadOp; REFRESH_LoadOp loadOp;
REFRESH_StoreOp storeOp; REFRESH_StoreOp storeOp;
} REFRESH_ColorTargetDescription; } REFRESH_ColorTargetDescription;

View File

@ -67,6 +67,10 @@ static const char* deviceExtensionNames[] =
}; };
static uint32_t deviceExtensionCount = SDL_arraysize(deviceExtensionNames); static uint32_t deviceExtensionCount = SDL_arraysize(deviceExtensionNames);
/* Defines */
#define NULL_RENDER_PASS (REFRESH_RenderPass*) 0
/* Enums */ /* Enums */
typedef enum VulkanResourceAccessType typedef enum VulkanResourceAccessType
@ -113,6 +117,64 @@ typedef enum CreateSwapchainResult
CREATE_SWAPCHAIN_SURFACE_ZERO, CREATE_SWAPCHAIN_SURFACE_ZERO,
} CreateSwapchainResult; } CreateSwapchainResult;
/* Conversions */
static VkFormat RefreshToVK_SurfaceFormat[] =
{
VK_FORMAT_R8G8B8A8_UNORM, /* R8G8B8A8 */
VK_FORMAT_R5G6B5_UNORM_PACK16, /* R5G6B5 */
VK_FORMAT_A1R5G5B5_UNORM_PACK16, /* A1R5G5B5 */
VK_FORMAT_B4G4R4A4_UNORM_PACK16, /* B4G4R4A4 */
VK_FORMAT_BC1_RGBA_UNORM_BLOCK, /* BC1 */
VK_FORMAT_BC2_UNORM_BLOCK, /* BC3 */
VK_FORMAT_BC3_UNORM_BLOCK, /* BC5 */
VK_FORMAT_R8G8_SNORM, /* R8G8_SNORM */
VK_FORMAT_R8G8B8A8_SNORM, /* R8G8B8A8_SNORM */
VK_FORMAT_A2R10G10B10_UNORM_PACK32, /* A2R10G10B10 */
VK_FORMAT_R16G16_UNORM, /* R16G16 */
VK_FORMAT_R16G16B16A16_UNORM, /* R16G16B16A16 */
VK_FORMAT_R8_UNORM, /* R8 */
VK_FORMAT_R32_SFLOAT, /* R32_SFLOAT */
VK_FORMAT_R32G32_SFLOAT, /* R32G32_SFLOAT */
VK_FORMAT_R32G32B32A32_SFLOAT, /* R32G32B32A32_SFLOAT */
VK_FORMAT_R16_SFLOAT, /* R16_SFLOAT */
VK_FORMAT_R16G16_SFLOAT, /* R16G16_SFLOAT */
VK_FORMAT_R16G16B16A16_SFLOAT /* R16G16B16A16_SFLOAT */
};
static VkFormat RefreshToVK_DepthFormat[] =
{
VK_FORMAT_D16_UNORM,
VK_FORMAT_D32_SFLOAT,
VK_FORMAT_D16_UNORM_S8_UINT,
VK_FORMAT_D24_UNORM_S8_UINT,
VK_FORMAT_D32_SFLOAT_S8_UINT
};
static VkAttachmentLoadOp RefreshToVK_LoadOp[] =
{
VK_ATTACHMENT_LOAD_OP_LOAD,
VK_ATTACHMENT_LOAD_OP_CLEAR,
VK_ATTACHMENT_LOAD_OP_DONT_CARE
};
static VkAttachmentStoreOp RefreshToVK_StoreOp[] =
{
VK_ATTACHMENT_STORE_OP_STORE,
VK_ATTACHMENT_STORE_OP_DONT_CARE
};
static VkSampleCountFlagBits RefreshToVK_SampleCount[] =
{
VK_SAMPLE_COUNT_1_BIT,
VK_SAMPLE_COUNT_2_BIT,
VK_SAMPLE_COUNT_4_BIT,
VK_SAMPLE_COUNT_8_BIT,
VK_SAMPLE_COUNT_16_BIT,
VK_SAMPLE_COUNT_32_BIT,
VK_SAMPLE_COUNT_64_BIT
};
/* Structures */ /* Structures */
typedef struct QueueFamilyIndices typedef struct QueueFamilyIndices
@ -307,7 +369,7 @@ static void VULKAN_DestroyDevice(
} }
static void VULKAN_Clear( static void VULKAN_Clear(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_ClearOptions options, REFRESH_ClearOptions options,
REFRESH_Vec4 **colors, REFRESH_Vec4 **colors,
uint32_t colorCount, uint32_t colorCount,
@ -318,7 +380,7 @@ static void VULKAN_Clear(
} }
static void VULKAN_DrawIndexedPrimitives( static void VULKAN_DrawIndexedPrimitives(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_PrimitiveType primitiveType, REFRESH_PrimitiveType primitiveType,
uint32_t baseVertex, uint32_t baseVertex,
uint32_t minVertexIndex, uint32_t minVertexIndex,
@ -332,7 +394,7 @@ static void VULKAN_DrawIndexedPrimitives(
} }
static void VULKAN_DrawInstancedPrimitives( static void VULKAN_DrawInstancedPrimitives(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_PrimitiveType primitiveType, REFRESH_PrimitiveType primitiveType,
uint32_t baseVertex, uint32_t baseVertex,
uint32_t minVertexIndex, uint32_t minVertexIndex,
@ -347,7 +409,7 @@ static void VULKAN_DrawInstancedPrimitives(
} }
static void VULKAN_DrawPrimitives( static void VULKAN_DrawPrimitives(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_PrimitiveType primitiveType, REFRESH_PrimitiveType primitiveType,
uint32_t vertexStart, uint32_t vertexStart,
uint32_t primitiveCount uint32_t primitiveCount
@ -356,42 +418,228 @@ static void VULKAN_DrawPrimitives(
} }
static REFRESH_RenderPass* VULKAN_CreateRenderPass( static REFRESH_RenderPass* VULKAN_CreateRenderPass(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_RenderPassCreateInfo *renderPassCreateInfo REFRESH_RenderPassCreateInfo *renderPassCreateInfo
) { ) {
SDL_assert(0); VulkanRenderer *renderer = (VulkanRenderer*) driverData;
VkResult vulkanResult;
VkAttachmentDescription attachmentDescriptions[2 * MAX_RENDERTARGET_BINDINGS + 1];
VkAttachmentReference colorAttachmentReferences[MAX_RENDERTARGET_BINDINGS];
VkAttachmentReference resolveReferences[MAX_RENDERTARGET_BINDINGS + 1];
VkAttachmentReference depthStencilAttachmentReference;
VkRenderPassCreateInfo vkRenderPassCreateInfo;
VkSubpassDescription subpass;
VkRenderPass renderPass;
uint32_t i;
uint32_t attachmentDescriptionCount = 0;
uint32_t colorAttachmentReferenceCount = 0;
uint32_t resolveReferenceCount = 0;
for (i = 0; i < renderPassCreateInfo->colorTargetCount; i += 1)
{
if (renderPassCreateInfo->colorTargetDescriptions[attachmentDescriptionCount].multisampleCount > REFRESH_SAMPLECOUNT_1)
{
/* Resolve attachment and multisample attachment */
attachmentDescriptions[attachmentDescriptionCount].flags = 0;
attachmentDescriptions[attachmentDescriptionCount].format = RefreshToVK_SurfaceFormat[
renderPassCreateInfo->colorTargetDescriptions[i].format
];
attachmentDescriptions[attachmentDescriptionCount].samples =
VK_SAMPLE_COUNT_1_BIT;
attachmentDescriptions[attachmentDescriptionCount].loadOp = RefreshToVK_LoadOp[
renderPassCreateInfo->colorTargetDescriptions[i].loadOp
];
attachmentDescriptions[attachmentDescriptionCount].storeOp = RefreshToVK_StoreOp[
renderPassCreateInfo->colorTargetDescriptions[i].storeOp
];
attachmentDescriptions[attachmentDescriptionCount].stencilLoadOp =
VK_ATTACHMENT_LOAD_OP_DONT_CARE;
attachmentDescriptions[attachmentDescriptionCount].stencilStoreOp =
VK_ATTACHMENT_STORE_OP_DONT_CARE;
attachmentDescriptions[attachmentDescriptionCount].initialLayout =
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
attachmentDescriptions[attachmentDescriptionCount].finalLayout =
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
resolveReferences[resolveReferenceCount].attachment =
attachmentDescriptionCount;
resolveReferences[resolveReferenceCount].layout =
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
attachmentDescriptionCount += 1;
resolveReferenceCount += 1;
attachmentDescriptions[attachmentDescriptionCount].flags = 0;
attachmentDescriptions[attachmentDescriptionCount].format = RefreshToVK_SurfaceFormat[
renderPassCreateInfo->colorTargetDescriptions[i].format
];
attachmentDescriptions[attachmentDescriptionCount].samples = RefreshToVK_SampleCount[
renderPassCreateInfo->colorTargetDescriptions[i].multisampleCount
];
attachmentDescriptions[attachmentDescriptionCount].loadOp = RefreshToVK_LoadOp[
renderPassCreateInfo->colorTargetDescriptions[i].loadOp
];
attachmentDescriptions[attachmentDescriptionCount].storeOp = RefreshToVK_StoreOp[
renderPassCreateInfo->colorTargetDescriptions[i].storeOp
];
attachmentDescriptions[attachmentDescriptionCount].stencilLoadOp =
VK_ATTACHMENT_LOAD_OP_DONT_CARE;
attachmentDescriptions[attachmentDescriptionCount].stencilStoreOp =
VK_ATTACHMENT_STORE_OP_DONT_CARE;
attachmentDescriptions[attachmentDescriptionCount].initialLayout =
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
attachmentDescriptions[attachmentDescriptionCount].finalLayout =
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
colorAttachmentReferences[colorAttachmentReferenceCount].attachment =
attachmentDescriptionCount;
colorAttachmentReferences[colorAttachmentReferenceCount].layout =
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
attachmentDescriptionCount += 1;
colorAttachmentReferenceCount += 1;
}
else
{
attachmentDescriptions[attachmentDescriptionCount].flags = 0;
attachmentDescriptions[attachmentDescriptionCount].format = RefreshToVK_SurfaceFormat[
renderPassCreateInfo->colorTargetDescriptions[i].format
];
attachmentDescriptions[attachmentDescriptionCount].samples =
VK_SAMPLE_COUNT_1_BIT;
attachmentDescriptions[attachmentDescriptionCount].loadOp = RefreshToVK_LoadOp[
renderPassCreateInfo->colorTargetDescriptions[i].loadOp
];
attachmentDescriptions[attachmentDescriptionCount].storeOp = RefreshToVK_StoreOp[
renderPassCreateInfo->colorTargetDescriptions[i].storeOp
];
attachmentDescriptions[attachmentDescriptionCount].stencilLoadOp =
VK_ATTACHMENT_LOAD_OP_DONT_CARE;
attachmentDescriptions[attachmentDescriptionCount].stencilStoreOp =
VK_ATTACHMENT_STORE_OP_DONT_CARE;
attachmentDescriptions[attachmentDescriptionCount].initialLayout =
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
attachmentDescriptions[attachmentDescriptionCount].finalLayout =
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
attachmentDescriptionCount += 1;
colorAttachmentReferences[colorAttachmentReferenceCount].attachment = i;
colorAttachmentReferences[colorAttachmentReferenceCount].layout =
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
colorAttachmentReferenceCount += 1;
}
}
subpass.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
subpass.flags = 0;
subpass.inputAttachmentCount = 0;
subpass.pInputAttachments = NULL;
subpass.colorAttachmentCount = renderPassCreateInfo->colorTargetCount;
subpass.pColorAttachments = colorAttachmentReferences;
subpass.preserveAttachmentCount = 0;
subpass.pPreserveAttachments = NULL;
if (renderPassCreateInfo->depthTargetDescription == NULL)
{
subpass.pDepthStencilAttachment = NULL;
}
else
{
attachmentDescriptions[attachmentDescriptionCount].flags = 0;
attachmentDescriptions[attachmentDescriptionCount].format = RefreshToVK_DepthFormat[
renderPassCreateInfo->depthTargetDescription->depthFormat
];
attachmentDescriptions[attachmentDescriptionCount].samples =
VK_SAMPLE_COUNT_1_BIT; /* FIXME: do these take multisamples? */
attachmentDescriptions[attachmentDescriptionCount].loadOp = RefreshToVK_LoadOp[
renderPassCreateInfo->depthTargetDescription->loadOp
];
attachmentDescriptions[attachmentDescriptionCount].storeOp = RefreshToVK_StoreOp[
renderPassCreateInfo->depthTargetDescription->storeOp
];
attachmentDescriptions[attachmentDescriptionCount].stencilLoadOp = RefreshToVK_LoadOp[
renderPassCreateInfo->depthTargetDescription->stencilLoadOp
];
attachmentDescriptions[attachmentDescriptionCount].stencilStoreOp = RefreshToVK_StoreOp[
renderPassCreateInfo->depthTargetDescription->stencilStoreOp
];
attachmentDescriptions[attachmentDescriptionCount].initialLayout =
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
attachmentDescriptions[attachmentDescriptionCount].finalLayout =
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
depthStencilAttachmentReference.attachment =
attachmentDescriptionCount;
depthStencilAttachmentReference.layout =
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
subpass.pDepthStencilAttachment =
&depthStencilAttachmentReference;
attachmentDescriptionCount += 1;
}
vkRenderPassCreateInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
vkRenderPassCreateInfo.pNext = NULL;
vkRenderPassCreateInfo.flags = 0;
vkRenderPassCreateInfo.pAttachments = attachmentDescriptions;
vkRenderPassCreateInfo.attachmentCount = attachmentDescriptionCount;
vkRenderPassCreateInfo.subpassCount = 1;
vkRenderPassCreateInfo.pSubpasses = &subpass;
vkRenderPassCreateInfo.dependencyCount = 0;
vkRenderPassCreateInfo.pDependencies = NULL;
vulkanResult = renderer->vkCreateRenderPass(
renderer->logicalDevice,
&vkRenderPassCreateInfo,
NULL,
&renderPass
);
if (vulkanResult != VK_SUCCESS)
{
LogVulkanResult("vkCreateRenderPass", vulkanResult);
return NULL_RENDER_PASS;
}
return (REFRESH_RenderPass*) renderPass;
} }
static REFRESH_GraphicsPipeline* VULKAN_CreateGraphicsPipeline( static REFRESH_GraphicsPipeline* VULKAN_CreateGraphicsPipeline(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_GraphicsPipelineCreateInfo *pipelineCreateInfo REFRESH_GraphicsPipelineCreateInfo *pipelineCreateInfo
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static REFRESH_Sampler* VULKAN_CreateSampler( static REFRESH_Sampler* VULKAN_CreateSampler(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_SamplerStateCreateInfo *samplerStateCreateInfo REFRESH_SamplerStateCreateInfo *samplerStateCreateInfo
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static REFRESH_Framebuffer* VULKAN_CreateFramebuffer( static REFRESH_Framebuffer* VULKAN_CreateFramebuffer(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_FramebufferCreateInfo *framebufferCreateInfo REFRESH_FramebufferCreateInfo *framebufferCreateInfo
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static REFRESH_ShaderModule* VULKAN_CreateShaderModule( static REFRESH_ShaderModule* VULKAN_CreateShaderModule(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_ShaderModuleCreateInfo *shaderModuleCreateInfo REFRESH_ShaderModuleCreateInfo *shaderModuleCreateInfo
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static REFRESH_Texture* VULKAN_CreateTexture2D( static REFRESH_Texture* VULKAN_CreateTexture2D(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_SurfaceFormat format, REFRESH_SurfaceFormat format,
uint32_t width, uint32_t width,
uint32_t height, uint32_t height,
@ -401,7 +649,7 @@ static REFRESH_Texture* VULKAN_CreateTexture2D(
} }
static REFRESH_Texture* VULKAN_CreateTexture3D( static REFRESH_Texture* VULKAN_CreateTexture3D(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_SurfaceFormat format, REFRESH_SurfaceFormat format,
uint32_t width, uint32_t width,
uint32_t height, uint32_t height,
@ -412,7 +660,7 @@ static REFRESH_Texture* VULKAN_CreateTexture3D(
} }
static REFRESH_Texture* VULKAN_CreateTextureCube( static REFRESH_Texture* VULKAN_CreateTextureCube(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_SurfaceFormat format, REFRESH_SurfaceFormat format,
uint32_t size, uint32_t size,
uint32_t levelCount uint32_t levelCount
@ -421,7 +669,7 @@ static REFRESH_Texture* VULKAN_CreateTextureCube(
} }
static REFRESH_ColorTarget* VULKAN_GenColorTarget( static REFRESH_ColorTarget* VULKAN_GenColorTarget(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
uint32_t width, uint32_t width,
uint32_t height, uint32_t height,
REFRESH_SurfaceFormat format, REFRESH_SurfaceFormat format,
@ -432,7 +680,7 @@ static REFRESH_ColorTarget* VULKAN_GenColorTarget(
} }
static REFRESH_DepthStencilTarget* VULKAN_GenDepthStencilTarget( static REFRESH_DepthStencilTarget* VULKAN_GenDepthStencilTarget(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
uint32_t width, uint32_t width,
uint32_t height, uint32_t height,
REFRESH_DepthFormat format, REFRESH_DepthFormat format,
@ -442,28 +690,28 @@ static REFRESH_DepthStencilTarget* VULKAN_GenDepthStencilTarget(
} }
static REFRESH_Buffer* VULKAN_GenVertexBuffer( static REFRESH_Buffer* VULKAN_GenVertexBuffer(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
uint32_t sizeInBytes uint32_t sizeInBytes
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static REFRESH_Buffer* VULKAN_GenIndexBuffer( static REFRESH_Buffer* VULKAN_GenIndexBuffer(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
uint32_t sizeInBytes uint32_t sizeInBytes
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static REFRESH_Buffer* VULKAN_GenShaderParamBuffer( static REFRESH_Buffer* VULKAN_GenShaderParamBuffer(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
uint32_t sizeInBytes uint32_t sizeInBytes
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_SetTextureData2D( static void VULKAN_SetTextureData2D(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Texture *texture, REFRESH_Texture *texture,
uint32_t x, uint32_t x,
uint32_t y, uint32_t y,
@ -477,7 +725,7 @@ static void VULKAN_SetTextureData2D(
} }
static void VULKAN_SetTextureData3D( static void VULKAN_SetTextureData3D(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Texture *texture, REFRESH_Texture *texture,
uint32_t x, uint32_t x,
uint32_t y, uint32_t y,
@ -493,7 +741,7 @@ static void VULKAN_SetTextureData3D(
} }
static void VULKAN_SetTextureDataCube( static void VULKAN_SetTextureDataCube(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Texture *texture, REFRESH_Texture *texture,
uint32_t x, uint32_t x,
uint32_t y, uint32_t y,
@ -508,7 +756,7 @@ static void VULKAN_SetTextureDataCube(
} }
static void VULKAN_SetTextureDataYUV( static void VULKAN_SetTextureDataYUV(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Texture *y, REFRESH_Texture *y,
REFRESH_Texture *u, REFRESH_Texture *u,
REFRESH_Texture *v, REFRESH_Texture *v,
@ -523,7 +771,7 @@ static void VULKAN_SetTextureDataYUV(
} }
static void VULKAN_SetVertexBufferData( static void VULKAN_SetVertexBufferData(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Buffer *buffer, REFRESH_Buffer *buffer,
uint32_t offsetInBytes, uint32_t offsetInBytes,
void* data, void* data,
@ -534,7 +782,7 @@ static void VULKAN_SetVertexBufferData(
} }
static void VULKAN_SetIndexBufferData( static void VULKAN_SetIndexBufferData(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Buffer *buffer, REFRESH_Buffer *buffer,
uint32_t offsetInBytes, uint32_t offsetInBytes,
void* data, void* data,
@ -544,7 +792,7 @@ static void VULKAN_SetIndexBufferData(
} }
static void VULKAN_SetShaderParamData( static void VULKAN_SetShaderParamData(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Buffer *shaderParamBuffer, REFRESH_Buffer *shaderParamBuffer,
uint32_t offsetInBytes, uint32_t offsetInBytes,
void *data, void *data,
@ -555,7 +803,7 @@ static void VULKAN_SetShaderParamData(
} }
static void VULKAN_SetVertexSamplers( static void VULKAN_SetVertexSamplers(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
uint32_t startIndex, uint32_t startIndex,
REFRESH_Texture *pTextures, REFRESH_Texture *pTextures,
REFRESH_Sampler *pSamplers, REFRESH_Sampler *pSamplers,
@ -565,7 +813,7 @@ static void VULKAN_SetVertexSamplers(
} }
static void VULKAN_SetFragmentSamplers( static void VULKAN_SetFragmentSamplers(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
uint32_t startIndex, uint32_t startIndex,
REFRESH_Texture *pTextures, REFRESH_Texture *pTextures,
REFRESH_Sampler *pSamplers, REFRESH_Sampler *pSamplers,
@ -575,7 +823,7 @@ static void VULKAN_SetFragmentSamplers(
} }
static void VULKAN_GetTextureData2D( static void VULKAN_GetTextureData2D(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Texture *texture, REFRESH_Texture *texture,
uint32_t x, uint32_t x,
uint32_t y, uint32_t y,
@ -589,7 +837,7 @@ static void VULKAN_GetTextureData2D(
} }
static void VULKAN_GetTextureDataCube( static void VULKAN_GetTextureDataCube(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Texture *texture, REFRESH_Texture *texture,
uint32_t x, uint32_t x,
uint32_t y, uint32_t y,
@ -604,84 +852,84 @@ static void VULKAN_GetTextureDataCube(
} }
static void VULKAN_AddDisposeTexture( static void VULKAN_AddDisposeTexture(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Texture *texture REFRESH_Texture *texture
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_AddDisposeSampler( static void VULKAN_AddDisposeSampler(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Sampler *sampler REFRESH_Sampler *sampler
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_AddDisposeVertexBuffer( static void VULKAN_AddDisposeVertexBuffer(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Buffer *buffer REFRESH_Buffer *buffer
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_AddDisposeIndexBuffer( static void VULKAN_AddDisposeIndexBuffer(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Buffer *buffer REFRESH_Buffer *buffer
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_AddDisposeShaderParamBuffer( static void VULKAN_AddDisposeShaderParamBuffer(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Buffer *buffer REFRESH_Buffer *buffer
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_AddDisposeColorTarget( static void VULKAN_AddDisposeColorTarget(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_ColorTarget *colorTarget REFRESH_ColorTarget *colorTarget
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_AddDisposeDepthStencilTarget( static void VULKAN_AddDisposeDepthStencilTarget(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_DepthStencilTarget *depthStencilTarget REFRESH_DepthStencilTarget *depthStencilTarget
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_AddDisposeFramebuffer( static void VULKAN_AddDisposeFramebuffer(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Framebuffer *frameBuffer REFRESH_Framebuffer *frameBuffer
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_AddDisposeShaderModule( static void VULKAN_AddDisposeShaderModule(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_ShaderModule *shaderModule REFRESH_ShaderModule *shaderModule
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_AddDisposeRenderPass( static void VULKAN_AddDisposeRenderPass(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_RenderPass *renderPass REFRESH_RenderPass *renderPass
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_AddDisposeGraphicsPipeline( static void VULKAN_AddDisposeGraphicsPipeline(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_GraphicsPipeline *graphicsPipeline REFRESH_GraphicsPipeline *graphicsPipeline
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_BeginRenderPass( static void VULKAN_BeginRenderPass(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_RenderPass *renderPass, REFRESH_RenderPass *renderPass,
REFRESH_Framebuffer *framebuffer, REFRESH_Framebuffer *framebuffer,
REFRESH_Rect renderArea, REFRESH_Rect renderArea,
@ -692,20 +940,20 @@ static void VULKAN_BeginRenderPass(
} }
static void VULKAN_EndRenderPass( static void VULKAN_EndRenderPass(
REFRESH_Renderer *renderer REFRESH_Renderer *driverData
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_BindGraphicsPipeline( static void VULKAN_BindGraphicsPipeline(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_GraphicsPipeline *graphicsPipeline REFRESH_GraphicsPipeline *graphicsPipeline
) { ) {
SDL_assert(0); SDL_assert(0);
} }
static void VULKAN_Present( static void VULKAN_Present(
REFRESH_Renderer *renderer, REFRESH_Renderer *driverData,
REFRESH_Rect *sourceRectangle, REFRESH_Rect *sourceRectangle,
REFRESH_Rect *destinationRectangle REFRESH_Rect *destinationRectangle
) { ) {