"args": [],
"cwd": "${workspaceFolder}/build/Debug/netcoreapp3.1/",
"stopAtEntry": false,
- "console": "internalConsole"
+ "console": "internalConsole",
+ "env": {
+ "VK_INSTANCE_LAYERS": "VK_LAYER_KHRONOS_validation"
+ }
},
{
"name": ".NET Core Launch (Triangle)",
/// This class is a helper class for VkPipelineShaderStageCreateInfo creation.
/// </summary>
public class ShaderInfo : IDisposable {
- readonly FixedUtf8String EntryPoint;
-
protected VkPipelineShaderStageCreateInfo info = VkPipelineShaderStageCreateInfo.New ();
protected Device dev;
protected virtual void Dispose (bool disposing) {
if (!disposedValue) {
- if (disposing)
- EntryPoint.Dispose ();
- else
+ if (!disposing)
System.Diagnostics.Debug.WriteLine ("VKE ShaderInfo disposed by finalizer");
dev?.DestroyShaderModule (info.module);
using System.Runtime.InteropServices;
using Vulkan;
using static Vulkan.Vk;
+using System.Linq;
namespace vke {
/// <summary>
VkWriteDescriptorSet wds = WriteDescriptorSets[wdsPtr];
if (dstSetOverride != null)
wds.dstSet = dstSetOverride.Value.Handle;
- IntPtr pDescriptors = IntPtr.Zero;
- if (wds.descriptorCount > 1) {
- List<IntPtr> descPtrArray = new List<IntPtr> ();
- for (int d = 0; d < wds.descriptorCount; d++) {
- descPtrArray.Add (descriptors[i].Pin (pinCtx));
- i++;
- }
- } else {
- pDescriptors = descriptors[i].Pin (pinCtx);
- i++;
- }
- /*if (descriptors[firstDescriptor] is VkDescriptorBufferInfo)
- wds.pBufferInfo = pDescriptors;
+ if (descriptors[i] is VkDescriptorBufferInfo)
+ wds.pBufferInfo = descriptors.SubArray (i,(int)wds.descriptorCount).Cast<VkDescriptorBufferInfo>().ToArray();
else if (descriptors[firstDescriptor] is VkDescriptorImageInfo)
- wds.pImageInfo = pDescriptors;*/
-
+ wds.pImageInfo = descriptors.SubArray (i,(int)wds.descriptorCount).Cast<VkDescriptorImageInfo>().ToArray();
+ i+=(int)wds.descriptorCount;
WriteDescriptorSets[wdsPtr] = wds;
wdsPtr++;
}
vkUpdateDescriptorSets (dev.Handle, (uint)WriteDescriptorSets.Count, WriteDescriptorSets.Pin (pinCtx), 0, IntPtr.Zero);
}
+ foreach (VkWriteDescriptorSet wds in WriteDescriptorSets)
+ wds.Dispose();
}
/// <summary>
/// execute the descriptors writes targeting descriptorSets setted on AddWriteInfo call
VkApplicationInfo appInfo = new VkApplicationInfo () {
sType = VkStructureType.ApplicationInfo,
apiVersion = new Vulkan.Version (VK_MAJOR, VK_MINOR, 0),
- pApplicationName = ENGINE_NAME.Pin (pctx),
- pEngineName = APPLICATION_NAME.Pin (pctx),
+ pApplicationName = ENGINE_NAME,
+ pEngineName = APPLICATION_NAME,
};
VkInstanceCreateInfo instanceCreateInfo = VkInstanceCreateInfo.New ();
uint idx = swapChain.currentImageIndex;
VkSwapchainKHR sc = swapChain.Handle;
present.pSwapchains = sc;
+ present.pImageIndices = idx.Pin();
present.pWaitSemaphores = wait;
vkQueuePresentKHR (handle, ref present);