Update Driver Template + Window Crash Fix (#46)
	
		
			
	
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
					Details
				
			
		
	
				
					
				
			
				
	
				continuous-integration/drone/push Build is passing
				
					Details
				
			
		
	Some minor stuff that's cropped up from the D3D11 work so far. This PR updates the Driver_Template with the latest API, and also fixes a crash in the Vulkan driver -- if you acquired a swapchain texture from a window that had been destroyed, there was no null check before de-referencing the WindowData. Co-authored-by: Caleb Cornett <caleb.cornett@outlook.com> Reviewed-on: #46 Co-authored-by: TheSpydog <thespydog@noreply.example.org> Co-committed-by: TheSpydog <thespydog@noreply.example.org>pull/48/head
							parent
							
								
									172fa83417
								
							
						
					
					
						commit
						a15e26b124
					
				|  | @ -268,6 +268,19 @@ static void TEMPLATE_DrawPrimitives( | |||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| static void TEMPLATE_DrawPrimitivesIndirect( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_Buffer *buffer, | ||||
| 	uint32_t offsetInBytes, | ||||
| 	uint32_t drawCount, | ||||
| 	uint32_t stride, | ||||
| 	uint32_t vertexParamOffset, | ||||
| 	uint32_t fragmentParamOffset | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| static void TEMPLATE_DispatchCompute( | ||||
| 	Refresh_Renderer *device, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
|  | @ -347,8 +360,13 @@ static void TEMPLATE_SetTextureDataYUV( | |||
| 	uint32_t yHeight, | ||||
| 	uint32_t uvWidth, | ||||
| 	uint32_t uvHeight, | ||||
| 	void* data, | ||||
| 	uint32_t dataLength | ||||
| 	void *yDataPtr, | ||||
| 	void *uDataPtr, | ||||
| 	void *vDataPtr, | ||||
| 	uint32_t yDataLength, | ||||
| 	uint32_t uvDataLength, | ||||
| 	uint32_t yStride, | ||||
| 	uint32_t uvStride | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
|  | @ -485,10 +503,15 @@ static void TEMPLATE_QueueDestroyGraphicsPipeline( | |||
| 
 | ||||
| /* Graphics State */ | ||||
| 
 | ||||
| static Refresh_CommandBuffer* TEMPLATE_AcquireCommandBuffer( | ||||
| 	Refresh_Renderer *driverData | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| static void TEMPLATE_BeginRenderPass( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	Refresh_Rect *renderArea, | ||||
| 	Refresh_ColorAttachmentInfo *colorAttachmentInfos, | ||||
| 	uint32_t colorAttachmentCount, | ||||
| 	Refresh_DepthStencilAttachmentInfo *depthStencilAttachmentInfo | ||||
|  | @ -548,6 +571,8 @@ static void TEMPLATE_BindIndexBuffer( | |||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| /* Compute State */ | ||||
| 
 | ||||
| static void TEMPLATE_BindComputePipeline( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
|  | @ -572,14 +597,24 @@ static void TEMPLATE_BindComputeTextures( | |||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| static Refresh_CommandBuffer* TEMPLATE_AcquireCommandBuffer( | ||||
| /* Window and Swapchain Management */ | ||||
| 
 | ||||
| static uint8_t TEMPLATE_ClaimWindow( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	uint8_t fixed | ||||
| 	void *windowHandle, | ||||
| 	Refresh_PresentMode presentMode | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| Refresh_Texture* TEMPLATE_AcquireSwapchainTexture( | ||||
| static void TEMPLATE_UnclaimWindow( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	void *windowHandle | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| static Refresh_Texture* TEMPLATE_AcquireSwapchainTexture( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	Refresh_CommandBuffer *commandBuffer, | ||||
| 	void *windowHandle, | ||||
|  | @ -589,17 +624,33 @@ Refresh_Texture* TEMPLATE_AcquireSwapchainTexture( | |||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| Refresh_TextureFormat TEMPLATE_GetSwapchainFormat( | ||||
| static Refresh_TextureFormat TEMPLATE_GetSwapchainFormat( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	void *windowHandle | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| static void TEMPLATE_SetSwapchainPresentMode( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	void *windowHandle, | ||||
| 	Refresh_PresentMode presentMode | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| /* Submission and Fences */ | ||||
| 
 | ||||
| static void TEMPLATE_Submit( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	uint32_t commandBufferCount, | ||||
| 	Refresh_CommandBuffer **pCommandBuffers | ||||
| 	Refresh_CommandBuffer *commandBuffer | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| static Refresh_Fence* TEMPLATE_SubmitAndAcquireFence( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	Refresh_CommandBuffer *commandBuffer | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
|  | @ -610,8 +661,38 @@ static void TEMPLATE_Wait( | |||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| static void TEMPLATE_WaitForFences( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	uint8_t waitAll, | ||||
| 	uint32_t fenceCount, | ||||
| 	Refresh_Fence **pFences | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| static int TEMPLATE_QueryFence( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	Refresh_Fence *fence | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| static void TEMPLATE_ReleaseFence( | ||||
| 	Refresh_Renderer *driverData, | ||||
| 	Refresh_Fence *fence | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| /* Device Creation */ | ||||
| 
 | ||||
| static uint8_t TEMPLATE_PrepareDriver( | ||||
| 	uint32_t *flags | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
| } | ||||
| 
 | ||||
| static Refresh_Device* TEMPLATE_CreateDevice( | ||||
| 	Refresh_PresentationParameters *presentationParameters, | ||||
| 	uint8_t debugMode | ||||
| ) { | ||||
| 	NOT_IMPLEMENTED | ||||
|  | @ -619,6 +700,7 @@ static Refresh_Device* TEMPLATE_CreateDevice( | |||
| 
 | ||||
| Refresh_Driver TEMPLATEDriver = { | ||||
| 	"TEMPLATE", | ||||
| 	TEMPLATE_PrepareDriver, | ||||
| 	TEMPLATE_CreateDevice | ||||
| }; | ||||
| 
 | ||||
|  |  | |||
|  | @ -9756,6 +9756,11 @@ static Refresh_Texture* VULKAN_AcquireSwapchainTexture( | |||
| 	VulkanPresentData *presentData; | ||||
| 
 | ||||
| 	windowData = VULKAN_INTERNAL_FetchWindowData(windowHandle); | ||||
| 	if (windowData == NULL) | ||||
| 	{ | ||||
| 		return NULL; | ||||
| 	} | ||||
| 
 | ||||
| 	swapchainData = windowData->swapchainData; | ||||
| 
 | ||||
| 	/* Window is claimed but swapchain is invalid! */ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue