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
{
REFRESH_DEPTHFORMAT_D16_UNORM,
REFRESH_DEPTHFORMAT_D32_SFLOAT,
REFRESH_DEPTHFORMAT_D16_UNORM_S8_UINT,
REFRESH_DEPTHFORMAT_D24_UNORM_S8_UINT,
REFRESH_DEPTHFORMAT_D32_SFLOAT_S8_UINT
} 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
{
REFRESH_CUBEMAPFACE_POSITIVEX,
@ -454,7 +467,7 @@ typedef struct REFRESH_PipelineLayoutCreateInfo
typedef struct REFRESH_ColorTargetDescription
{
REFRESH_SurfaceFormat format;
uint32_t multisampleCount;
REFRESH_SampleCount multisampleCount;
REFRESH_LoadOp loadOp;
REFRESH_StoreOp storeOp;
} REFRESH_ColorTargetDescription;

View File

@ -67,6 +67,10 @@ static const char* deviceExtensionNames[] =
};
static uint32_t deviceExtensionCount = SDL_arraysize(deviceExtensionNames);
/* Defines */
#define NULL_RENDER_PASS (REFRESH_RenderPass*) 0
/* Enums */
typedef enum VulkanResourceAccessType
@ -113,6 +117,64 @@ typedef enum CreateSwapchainResult
CREATE_SWAPCHAIN_SURFACE_ZERO,
} 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 */
typedef struct QueueFamilyIndices
@ -307,7 +369,7 @@ static void VULKAN_DestroyDevice(
}
static void VULKAN_Clear(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_ClearOptions options,
REFRESH_Vec4 **colors,
uint32_t colorCount,
@ -318,7 +380,7 @@ static void VULKAN_Clear(
}
static void VULKAN_DrawIndexedPrimitives(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_PrimitiveType primitiveType,
uint32_t baseVertex,
uint32_t minVertexIndex,
@ -332,7 +394,7 @@ static void VULKAN_DrawIndexedPrimitives(
}
static void VULKAN_DrawInstancedPrimitives(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_PrimitiveType primitiveType,
uint32_t baseVertex,
uint32_t minVertexIndex,
@ -347,7 +409,7 @@ static void VULKAN_DrawInstancedPrimitives(
}
static void VULKAN_DrawPrimitives(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_PrimitiveType primitiveType,
uint32_t vertexStart,
uint32_t primitiveCount
@ -356,42 +418,228 @@ static void VULKAN_DrawPrimitives(
}
static REFRESH_RenderPass* VULKAN_CreateRenderPass(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
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(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_GraphicsPipelineCreateInfo *pipelineCreateInfo
) {
SDL_assert(0);
}
static REFRESH_Sampler* VULKAN_CreateSampler(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_SamplerStateCreateInfo *samplerStateCreateInfo
) {
SDL_assert(0);
}
static REFRESH_Framebuffer* VULKAN_CreateFramebuffer(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_FramebufferCreateInfo *framebufferCreateInfo
) {
SDL_assert(0);
}
static REFRESH_ShaderModule* VULKAN_CreateShaderModule(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_ShaderModuleCreateInfo *shaderModuleCreateInfo
) {
SDL_assert(0);
}
static REFRESH_Texture* VULKAN_CreateTexture2D(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_SurfaceFormat format,
uint32_t width,
uint32_t height,
@ -401,7 +649,7 @@ static REFRESH_Texture* VULKAN_CreateTexture2D(
}
static REFRESH_Texture* VULKAN_CreateTexture3D(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_SurfaceFormat format,
uint32_t width,
uint32_t height,
@ -412,7 +660,7 @@ static REFRESH_Texture* VULKAN_CreateTexture3D(
}
static REFRESH_Texture* VULKAN_CreateTextureCube(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_SurfaceFormat format,
uint32_t size,
uint32_t levelCount
@ -421,7 +669,7 @@ static REFRESH_Texture* VULKAN_CreateTextureCube(
}
static REFRESH_ColorTarget* VULKAN_GenColorTarget(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
uint32_t width,
uint32_t height,
REFRESH_SurfaceFormat format,
@ -432,7 +680,7 @@ static REFRESH_ColorTarget* VULKAN_GenColorTarget(
}
static REFRESH_DepthStencilTarget* VULKAN_GenDepthStencilTarget(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
uint32_t width,
uint32_t height,
REFRESH_DepthFormat format,
@ -442,28 +690,28 @@ static REFRESH_DepthStencilTarget* VULKAN_GenDepthStencilTarget(
}
static REFRESH_Buffer* VULKAN_GenVertexBuffer(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
uint32_t sizeInBytes
) {
SDL_assert(0);
}
static REFRESH_Buffer* VULKAN_GenIndexBuffer(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
uint32_t sizeInBytes
) {
SDL_assert(0);
}
static REFRESH_Buffer* VULKAN_GenShaderParamBuffer(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
uint32_t sizeInBytes
) {
SDL_assert(0);
}
static void VULKAN_SetTextureData2D(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Texture *texture,
uint32_t x,
uint32_t y,
@ -477,7 +725,7 @@ static void VULKAN_SetTextureData2D(
}
static void VULKAN_SetTextureData3D(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Texture *texture,
uint32_t x,
uint32_t y,
@ -493,7 +741,7 @@ static void VULKAN_SetTextureData3D(
}
static void VULKAN_SetTextureDataCube(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Texture *texture,
uint32_t x,
uint32_t y,
@ -508,7 +756,7 @@ static void VULKAN_SetTextureDataCube(
}
static void VULKAN_SetTextureDataYUV(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Texture *y,
REFRESH_Texture *u,
REFRESH_Texture *v,
@ -523,7 +771,7 @@ static void VULKAN_SetTextureDataYUV(
}
static void VULKAN_SetVertexBufferData(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Buffer *buffer,
uint32_t offsetInBytes,
void* data,
@ -534,7 +782,7 @@ static void VULKAN_SetVertexBufferData(
}
static void VULKAN_SetIndexBufferData(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Buffer *buffer,
uint32_t offsetInBytes,
void* data,
@ -544,7 +792,7 @@ static void VULKAN_SetIndexBufferData(
}
static void VULKAN_SetShaderParamData(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Buffer *shaderParamBuffer,
uint32_t offsetInBytes,
void *data,
@ -555,7 +803,7 @@ static void VULKAN_SetShaderParamData(
}
static void VULKAN_SetVertexSamplers(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
uint32_t startIndex,
REFRESH_Texture *pTextures,
REFRESH_Sampler *pSamplers,
@ -565,7 +813,7 @@ static void VULKAN_SetVertexSamplers(
}
static void VULKAN_SetFragmentSamplers(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
uint32_t startIndex,
REFRESH_Texture *pTextures,
REFRESH_Sampler *pSamplers,
@ -575,7 +823,7 @@ static void VULKAN_SetFragmentSamplers(
}
static void VULKAN_GetTextureData2D(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Texture *texture,
uint32_t x,
uint32_t y,
@ -589,7 +837,7 @@ static void VULKAN_GetTextureData2D(
}
static void VULKAN_GetTextureDataCube(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Texture *texture,
uint32_t x,
uint32_t y,
@ -604,84 +852,84 @@ static void VULKAN_GetTextureDataCube(
}
static void VULKAN_AddDisposeTexture(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Texture *texture
) {
SDL_assert(0);
}
static void VULKAN_AddDisposeSampler(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Sampler *sampler
) {
SDL_assert(0);
}
static void VULKAN_AddDisposeVertexBuffer(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Buffer *buffer
) {
SDL_assert(0);
}
static void VULKAN_AddDisposeIndexBuffer(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Buffer *buffer
) {
SDL_assert(0);
}
static void VULKAN_AddDisposeShaderParamBuffer(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Buffer *buffer
) {
SDL_assert(0);
}
static void VULKAN_AddDisposeColorTarget(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_ColorTarget *colorTarget
) {
SDL_assert(0);
}
static void VULKAN_AddDisposeDepthStencilTarget(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_DepthStencilTarget *depthStencilTarget
) {
SDL_assert(0);
}
static void VULKAN_AddDisposeFramebuffer(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Framebuffer *frameBuffer
) {
SDL_assert(0);
}
static void VULKAN_AddDisposeShaderModule(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_ShaderModule *shaderModule
) {
SDL_assert(0);
}
static void VULKAN_AddDisposeRenderPass(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_RenderPass *renderPass
) {
SDL_assert(0);
}
static void VULKAN_AddDisposeGraphicsPipeline(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_GraphicsPipeline *graphicsPipeline
) {
SDL_assert(0);
}
static void VULKAN_BeginRenderPass(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_RenderPass *renderPass,
REFRESH_Framebuffer *framebuffer,
REFRESH_Rect renderArea,
@ -692,20 +940,20 @@ static void VULKAN_BeginRenderPass(
}
static void VULKAN_EndRenderPass(
REFRESH_Renderer *renderer
REFRESH_Renderer *driverData
) {
SDL_assert(0);
}
static void VULKAN_BindGraphicsPipeline(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_GraphicsPipeline *graphicsPipeline
) {
SDL_assert(0);
}
static void VULKAN_Present(
REFRESH_Renderer *renderer,
REFRESH_Renderer *driverData,
REFRESH_Rect *sourceRectangle,
REFRESH_Rect *destinationRectangle
) {