From 6f85a369f611f87a80c9b27d4e1d3330a7307043 Mon Sep 17 00:00:00 2001
From: Caleb Cornett <caleb.cornett@outlook.com>
Date: Wed, 28 Dec 2022 21:10:39 -0500
Subject: [PATCH] add validation for BindVertexBuffers and
 AcquireSwapchainTexture

---
 src/Graphics/CommandBuffer.cs | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/src/Graphics/CommandBuffer.cs b/src/Graphics/CommandBuffer.cs
index 84e794b..6cce472 100644
--- a/src/Graphics/CommandBuffer.cs
+++ b/src/Graphics/CommandBuffer.cs
@@ -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,