Add validation checks for AcquireSwapchainTexture and BindVertexBuffers (#37)
This replaces the Refresh-side check for window claim status in AcquireSwapchainTexture, and adds validation to ensure that BindVertexBuffers is not called before BindGraphicsPipeline. Co-authored-by: Caleb Cornett <caleb.cornett@outlook.com> Reviewed-on: #37 Co-authored-by: TheSpydog <thespydog@noreply.example.org> Co-committed-by: TheSpydog <thespydog@noreply.example.org>pull/39/head
							parent
							
								
									d76633bdfc
								
							
						
					
					
						commit
						f96298f991
					
				| 
						 | 
				
			
			@ -847,6 +847,10 @@ namespace MoonWorks.Graphics
 | 
			
		|||
			in BufferBinding bufferBinding,
 | 
			
		||||
			uint firstBinding = 0
 | 
			
		||||
		) {
 | 
			
		||||
#if DEBUG
 | 
			
		||||
			AssertGraphicsPipelineBound();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
			var bufferPtrs = stackalloc IntPtr[1];
 | 
			
		||||
			var offsets = stackalloc ulong[1];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -874,6 +878,10 @@ namespace MoonWorks.Graphics
 | 
			
		|||
			in BufferBinding bufferBindingTwo,
 | 
			
		||||
			uint firstBinding = 0
 | 
			
		||||
		) {
 | 
			
		||||
#if DEBUG
 | 
			
		||||
			AssertGraphicsPipelineBound();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
			var bufferPtrs = stackalloc IntPtr[2];
 | 
			
		||||
			var offsets = stackalloc ulong[2];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -906,6 +914,10 @@ namespace MoonWorks.Graphics
 | 
			
		|||
			in BufferBinding bufferBindingThree,
 | 
			
		||||
			uint firstBinding = 0
 | 
			
		||||
		) {
 | 
			
		||||
#if DEBUG
 | 
			
		||||
			AssertGraphicsPipelineBound();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
			var bufferPtrs = stackalloc IntPtr[3];
 | 
			
		||||
			var offsets = stackalloc ulong[3];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -942,6 +954,10 @@ namespace MoonWorks.Graphics
 | 
			
		|||
			in BufferBinding bufferBindingFour,
 | 
			
		||||
			uint firstBinding = 0
 | 
			
		||||
		) {
 | 
			
		||||
#if DEBUG
 | 
			
		||||
			AssertGraphicsPipelineBound();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
			var bufferPtrs = stackalloc IntPtr[4];
 | 
			
		||||
			var offsets = stackalloc ulong[4];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -974,6 +990,10 @@ namespace MoonWorks.Graphics
 | 
			
		|||
			in Span<BufferBinding> bufferBindings,
 | 
			
		||||
			uint firstBinding = 0
 | 
			
		||||
		) {
 | 
			
		||||
#if DEBUG
 | 
			
		||||
			AssertGraphicsPipelineBound();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
			var bufferPtrs = stackalloc IntPtr[bufferBindings.Length];
 | 
			
		||||
			var offsets = stackalloc ulong[bufferBindings.Length];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1623,6 +1643,13 @@ namespace MoonWorks.Graphics
 | 
			
		|||
		public Texture AcquireSwapchainTexture(
 | 
			
		||||
			Window window
 | 
			
		||||
		) {
 | 
			
		||||
#if DEBUG
 | 
			
		||||
			if (!window.Claimed)
 | 
			
		||||
			{
 | 
			
		||||
				throw new System.InvalidOperationException("Cannot acquire swapchain texture, window has not been claimed!");
 | 
			
		||||
			}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
			var texturePtr = Refresh.Refresh_AcquireSwapchainTexture(
 | 
			
		||||
				Device.Handle,
 | 
			
		||||
				Handle,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue