forked from MoonsideGames/Refresh
separate shader types
parent
61e83cfba8
commit
057a48e96f
|
@ -460,13 +460,22 @@ typedef struct Refresh_TextureCreateInfo
|
||||||
|
|
||||||
/* Pipeline state structures */
|
/* Pipeline state structures */
|
||||||
|
|
||||||
typedef struct Refresh_ShaderStageState
|
typedef struct Refresh_GraphicsShaderInfo
|
||||||
{
|
{
|
||||||
Refresh_ShaderModule *shaderModule;
|
Refresh_ShaderModule *shaderModule;
|
||||||
const char* entryPointName;
|
const char* entryPointName;
|
||||||
uint64_t uniformBufferSize;
|
uint64_t uniformBufferSize;
|
||||||
uint32_t samplerBindingCount;
|
uint32_t samplerBindingCount;
|
||||||
} Refresh_ShaderStageState;
|
} Refresh_GraphicsShaderInfo;
|
||||||
|
|
||||||
|
typedef struct Refresh_ComputeShaderInfo
|
||||||
|
{
|
||||||
|
Refresh_ShaderModule* shaderModule;
|
||||||
|
const char* entryPointName;
|
||||||
|
uint64_t uniformBufferSize;
|
||||||
|
uint32_t bufferBindingCount;
|
||||||
|
uint32_t imageBindingCount;
|
||||||
|
} Refresh_ComputeShaderInfo;
|
||||||
|
|
||||||
typedef struct Refresh_ViewportState
|
typedef struct Refresh_ViewportState
|
||||||
{
|
{
|
||||||
|
@ -508,12 +517,6 @@ typedef struct Refresh_DepthStencilState
|
||||||
float maxDepthBounds;
|
float maxDepthBounds;
|
||||||
} Refresh_DepthStencilState;
|
} Refresh_DepthStencilState;
|
||||||
|
|
||||||
typedef struct Refresh_ComputePipelineCreateInfo
|
|
||||||
{
|
|
||||||
Refresh_ShaderStageState computeShaderState;
|
|
||||||
Refresh_ComputePipelineLayoutCreateInfo pipelineLayoutCreateInfo;
|
|
||||||
} Refresh_ComputePipelineCreateInfo;
|
|
||||||
|
|
||||||
typedef struct Refresh_ColorAttachmentDescription
|
typedef struct Refresh_ColorAttachmentDescription
|
||||||
{
|
{
|
||||||
Refresh_TextureFormat format;
|
Refresh_TextureFormat format;
|
||||||
|
@ -531,8 +534,8 @@ typedef struct Refresh_GraphicsPipelineAttachmentInfo
|
||||||
|
|
||||||
typedef struct Refresh_GraphicsPipelineCreateInfo
|
typedef struct Refresh_GraphicsPipelineCreateInfo
|
||||||
{
|
{
|
||||||
Refresh_ShaderStageState vertexShaderState;
|
Refresh_GraphicsShaderInfo vertexShaderInfo;
|
||||||
Refresh_ShaderStageState fragmentShaderState;
|
Refresh_GraphicsShaderInfo fragmentShaderInfo;
|
||||||
Refresh_VertexInputState vertexInputState;
|
Refresh_VertexInputState vertexInputState;
|
||||||
Refresh_PrimitiveType primitiveType;
|
Refresh_PrimitiveType primitiveType;
|
||||||
Refresh_ViewportState viewportState;
|
Refresh_ViewportState viewportState;
|
||||||
|
@ -771,7 +774,7 @@ REFRESHAPI void Refresh_DispatchCompute(
|
||||||
/* Returns an allocated ComputePipeline* object. */
|
/* Returns an allocated ComputePipeline* object. */
|
||||||
REFRESHAPI Refresh_ComputePipeline* Refresh_CreateComputePipeline(
|
REFRESHAPI Refresh_ComputePipeline* Refresh_CreateComputePipeline(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
Refresh_ComputePipelineCreateInfo *pipelineCreateInfo
|
Refresh_ComputeShaderInfo *computeShaderInfo
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Returns an allocated GraphicsPipeline* object. */
|
/* Returns an allocated GraphicsPipeline* object. */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Refresh - XNA-inspired 3D Graphics Library with modern capabilities
|
/* Refresh - XNA-inspired 3D Graphics Library with modern capabilities
|
||||||
*
|
*
|
||||||
* Copyright (c) 2020 Evan Hemsley
|
* Copyright (c) 2020 Evan Hemsley
|
||||||
*
|
*
|
||||||
|
@ -252,12 +252,12 @@ void Refresh_DispatchCompute(
|
||||||
|
|
||||||
Refresh_ComputePipeline* Refresh_CreateComputePipeline(
|
Refresh_ComputePipeline* Refresh_CreateComputePipeline(
|
||||||
Refresh_Device *device,
|
Refresh_Device *device,
|
||||||
Refresh_ComputePipelineCreateInfo *pipelineCreateInfo
|
Refresh_ComputeShaderInfo *computeShaderInfo
|
||||||
) {
|
) {
|
||||||
NULL_RETURN_NULL(device);
|
NULL_RETURN_NULL(device);
|
||||||
return device->CreateComputePipeline(
|
return device->CreateComputePipeline(
|
||||||
device->driverData,
|
device->driverData,
|
||||||
pipelineCreateInfo
|
computeShaderInfo
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Refresh - XNA-inspired 3D Graphics Library with modern capabilities
|
/* Refresh - XNA-inspired 3D Graphics Library with modern capabilities
|
||||||
*
|
*
|
||||||
* Copyright (c) 2020 Evan Hemsley
|
* Copyright (c) 2020 Evan Hemsley
|
||||||
*
|
*
|
||||||
|
@ -221,7 +221,7 @@ struct Refresh_Device
|
||||||
|
|
||||||
Refresh_ComputePipeline* (*CreateComputePipeline)(
|
Refresh_ComputePipeline* (*CreateComputePipeline)(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
Refresh_ComputePipelineCreateInfo *pipelineCreateInfo
|
Refresh_ComputeShaderInfo *computeShaderInfo
|
||||||
);
|
);
|
||||||
|
|
||||||
Refresh_GraphicsPipeline* (*CreateGraphicsPipeline)(
|
Refresh_GraphicsPipeline* (*CreateGraphicsPipeline)(
|
||||||
|
|
|
@ -5664,13 +5664,13 @@ static Refresh_GraphicsPipeline* VULKAN_CreateGraphicsPipeline(
|
||||||
shaderStageCreateInfos[0].pNext = NULL;
|
shaderStageCreateInfos[0].pNext = NULL;
|
||||||
shaderStageCreateInfos[0].flags = 0;
|
shaderStageCreateInfos[0].flags = 0;
|
||||||
shaderStageCreateInfos[0].stage = VK_SHADER_STAGE_VERTEX_BIT;
|
shaderStageCreateInfos[0].stage = VK_SHADER_STAGE_VERTEX_BIT;
|
||||||
shaderStageCreateInfos[0].module = (VkShaderModule) pipelineCreateInfo->vertexShaderState.shaderModule;
|
shaderStageCreateInfos[0].module = (VkShaderModule) pipelineCreateInfo->vertexShaderInfo.shaderModule;
|
||||||
shaderStageCreateInfos[0].pName = pipelineCreateInfo->vertexShaderState.entryPointName;
|
shaderStageCreateInfos[0].pName = pipelineCreateInfo->vertexShaderInfo.entryPointName;
|
||||||
shaderStageCreateInfos[0].pSpecializationInfo = NULL;
|
shaderStageCreateInfos[0].pSpecializationInfo = NULL;
|
||||||
|
|
||||||
graphicsPipeline->vertexUniformBlockSize =
|
graphicsPipeline->vertexUniformBlockSize =
|
||||||
VULKAN_INTERNAL_NextHighestAlignment(
|
VULKAN_INTERNAL_NextHighestAlignment(
|
||||||
pipelineCreateInfo->vertexShaderState.uniformBufferSize,
|
pipelineCreateInfo->vertexShaderInfo.uniformBufferSize,
|
||||||
renderer->minUBOAlignment
|
renderer->minUBOAlignment
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -5678,13 +5678,13 @@ static Refresh_GraphicsPipeline* VULKAN_CreateGraphicsPipeline(
|
||||||
shaderStageCreateInfos[1].pNext = NULL;
|
shaderStageCreateInfos[1].pNext = NULL;
|
||||||
shaderStageCreateInfos[1].flags = 0;
|
shaderStageCreateInfos[1].flags = 0;
|
||||||
shaderStageCreateInfos[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT;
|
shaderStageCreateInfos[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||||
shaderStageCreateInfos[1].module = (VkShaderModule) pipelineCreateInfo->fragmentShaderState.shaderModule;
|
shaderStageCreateInfos[1].module = (VkShaderModule) pipelineCreateInfo->fragmentShaderInfo.shaderModule;
|
||||||
shaderStageCreateInfos[1].pName = pipelineCreateInfo->fragmentShaderState.entryPointName;
|
shaderStageCreateInfos[1].pName = pipelineCreateInfo->fragmentShaderInfo.entryPointName;
|
||||||
shaderStageCreateInfos[1].pSpecializationInfo = NULL;
|
shaderStageCreateInfos[1].pSpecializationInfo = NULL;
|
||||||
|
|
||||||
graphicsPipeline->fragmentUniformBlockSize =
|
graphicsPipeline->fragmentUniformBlockSize =
|
||||||
VULKAN_INTERNAL_NextHighestAlignment(
|
VULKAN_INTERNAL_NextHighestAlignment(
|
||||||
pipelineCreateInfo->fragmentShaderState.uniformBufferSize,
|
pipelineCreateInfo->fragmentShaderInfo.uniformBufferSize,
|
||||||
renderer->minUBOAlignment
|
renderer->minUBOAlignment
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -5915,8 +5915,8 @@ static Refresh_GraphicsPipeline* VULKAN_CreateGraphicsPipeline(
|
||||||
|
|
||||||
graphicsPipeline->pipelineLayout = VULKAN_INTERNAL_FetchGraphicsPipelineLayout(
|
graphicsPipeline->pipelineLayout = VULKAN_INTERNAL_FetchGraphicsPipelineLayout(
|
||||||
renderer,
|
renderer,
|
||||||
pipelineCreateInfo->vertexShaderState.samplerBindingCount,
|
pipelineCreateInfo->vertexShaderInfo.samplerBindingCount,
|
||||||
pipelineCreateInfo->fragmentShaderState.samplerBindingCount
|
pipelineCreateInfo->fragmentShaderInfo.samplerBindingCount
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Pipeline */
|
/* Pipeline */
|
||||||
|
@ -6083,7 +6083,7 @@ static VulkanComputePipelineLayout* VULKAN_INTERNAL_FetchComputePipelineLayout(
|
||||||
|
|
||||||
static Refresh_ComputePipeline* VULKAN_CreateComputePipeline(
|
static Refresh_ComputePipeline* VULKAN_CreateComputePipeline(
|
||||||
Refresh_Renderer *driverData,
|
Refresh_Renderer *driverData,
|
||||||
Refresh_ComputePipelineCreateInfo *pipelineCreateInfo
|
Refresh_ComputeShaderInfo *computeShaderInfo
|
||||||
) {
|
) {
|
||||||
VkComputePipelineCreateInfo computePipelineCreateInfo;
|
VkComputePipelineCreateInfo computePipelineCreateInfo;
|
||||||
VkPipelineShaderStageCreateInfo pipelineShaderStageCreateInfo;
|
VkPipelineShaderStageCreateInfo pipelineShaderStageCreateInfo;
|
||||||
|
@ -6095,14 +6095,14 @@ static Refresh_ComputePipeline* VULKAN_CreateComputePipeline(
|
||||||
pipelineShaderStageCreateInfo.pNext = NULL;
|
pipelineShaderStageCreateInfo.pNext = NULL;
|
||||||
pipelineShaderStageCreateInfo.flags = 0;
|
pipelineShaderStageCreateInfo.flags = 0;
|
||||||
pipelineShaderStageCreateInfo.stage = VK_SHADER_STAGE_COMPUTE_BIT;
|
pipelineShaderStageCreateInfo.stage = VK_SHADER_STAGE_COMPUTE_BIT;
|
||||||
pipelineShaderStageCreateInfo.module = (VkShaderModule) pipelineCreateInfo->computeShaderState.shaderModule;
|
pipelineShaderStageCreateInfo.module = (VkShaderModule)computeShaderInfo->shaderModule;
|
||||||
pipelineShaderStageCreateInfo.pName = pipelineCreateInfo->computeShaderState.entryPointName;
|
pipelineShaderStageCreateInfo.pName = computeShaderInfo->entryPointName;
|
||||||
pipelineShaderStageCreateInfo.pSpecializationInfo = NULL;
|
pipelineShaderStageCreateInfo.pSpecializationInfo = NULL;
|
||||||
|
|
||||||
vulkanComputePipeline->pipelineLayout = VULKAN_INTERNAL_FetchComputePipelineLayout(
|
vulkanComputePipeline->pipelineLayout = VULKAN_INTERNAL_FetchComputePipelineLayout(
|
||||||
renderer,
|
renderer,
|
||||||
pipelineCreateInfo->pipelineLayoutCreateInfo.bufferBindingCount,
|
computeShaderInfo->bufferBindingCount,
|
||||||
pipelineCreateInfo->pipelineLayoutCreateInfo.imageBindingCount
|
computeShaderInfo->imageBindingCount
|
||||||
);
|
);
|
||||||
|
|
||||||
computePipelineCreateInfo.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
|
computePipelineCreateInfo.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
|
||||||
|
@ -6125,7 +6125,7 @@ static Refresh_ComputePipeline* VULKAN_CreateComputePipeline(
|
||||||
|
|
||||||
vulkanComputePipeline->uniformBlockSize =
|
vulkanComputePipeline->uniformBlockSize =
|
||||||
VULKAN_INTERNAL_NextHighestAlignment(
|
VULKAN_INTERNAL_NextHighestAlignment(
|
||||||
pipelineCreateInfo->computeShaderState.uniformBufferSize,
|
computeShaderInfo->uniformBufferSize,
|
||||||
renderer->minUBOAlignment
|
renderer->minUBOAlignment
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue