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