Symbolic links while things are moving
diff --git a/include/vkLayer.h b/include/vkLayer.h
new file mode 100644
index 0000000..c3679a0
--- /dev/null
+++ b/include/vkLayer.h
@@ -0,0 +1,187 @@
+/* Need to define dispatch table
+ * Core struct can then have ptr to dispatch table at the top
+ * Along with object ptrs for current and next OBJ
+ */
+#pragma once
+
+#include "vulkan.h"
+#include "vkDbg.h"
+#if defined(__linux__) || defined(XCB_NVIDIA)
+#include "vkWsiX11Ext.h"
+#endif
+#if defined(__GNUC__) && __GNUC__ >= 4
+# define VK_LAYER_EXPORT __attribute__((visibility("default")))
+#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
+# define VK_LAYER_EXPORT __attribute__((visibility("default")))
+#else
+# define VK_LAYER_EXPORT
+#endif
+
+
+typedef struct _VK_BASE_LAYER_OBJECT
+{
+ vkGetProcAddrType pGPA;
+ VK_BASE_OBJECT nextObject;
+ VK_BASE_OBJECT baseObject;
+} VK_BASE_LAYER_OBJECT;
+
+typedef struct _VK_LAYER_DISPATCH_TABLE
+{
+ vkGetProcAddrType GetProcAddr;
+ vkCreateInstanceType CreateInstance;
+ vkDestroyInstanceType DestroyInstance;
+ vkEnumerateGpusType EnumerateGpus;
+ vkGetGpuInfoType GetGpuInfo;
+ vkCreateDeviceType CreateDevice;
+ vkDestroyDeviceType DestroyDevice;
+ vkGetExtensionSupportType GetExtensionSupport;
+ vkEnumerateLayersType EnumerateLayers;
+ vkGetDeviceQueueType GetDeviceQueue;
+ vkQueueSubmitType QueueSubmit;
+ vkQueueAddMemReferenceType QueueAddMemReference;
+ vkQueueRemoveMemReferenceType QueueRemoveMemReference;
+ vkQueueWaitIdleType QueueWaitIdle;
+ vkDeviceWaitIdleType DeviceWaitIdle;
+ vkAllocMemoryType AllocMemory;
+ vkFreeMemoryType FreeMemory;
+ vkSetMemoryPriorityType SetMemoryPriority;
+ vkMapMemoryType MapMemory;
+ vkUnmapMemoryType UnmapMemory;
+ vkPinSystemMemoryType PinSystemMemory;
+ vkGetMultiGpuCompatibilityType GetMultiGpuCompatibility;
+ vkOpenSharedMemoryType OpenSharedMemory;
+ vkOpenSharedSemaphoreType OpenSharedSemaphore;
+ vkOpenPeerMemoryType OpenPeerMemory;
+ vkOpenPeerImageType OpenPeerImage;
+ vkDestroyObjectType DestroyObject;
+ vkGetObjectInfoType GetObjectInfo;
+ vkBindObjectMemoryType BindObjectMemory;
+ vkBindObjectMemoryRangeType BindObjectMemoryRange;
+ vkBindImageMemoryRangeType BindImageMemoryRange;
+ vkCreateFenceType CreateFence;
+ vkGetFenceStatusType GetFenceStatus;
+ vkResetFencesType ResetFences;
+ vkWaitForFencesType WaitForFences;
+ vkCreateSemaphoreType CreateSemaphore;
+ vkQueueSignalSemaphoreType QueueSignalSemaphore;
+ vkQueueWaitSemaphoreType QueueWaitSemaphore;
+ vkCreateEventType CreateEvent;
+ vkGetEventStatusType GetEventStatus;
+ vkSetEventType SetEvent;
+ vkResetEventType ResetEvent;
+ vkCreateQueryPoolType CreateQueryPool;
+ vkGetQueryPoolResultsType GetQueryPoolResults;
+ vkGetFormatInfoType GetFormatInfo;
+ vkCreateBufferType CreateBuffer;
+ vkCreateBufferViewType CreateBufferView;
+ vkCreateImageType CreateImage;
+ vkGetImageSubresourceInfoType GetImageSubresourceInfo;
+ vkCreateImageViewType CreateImageView;
+ vkCreateColorAttachmentViewType CreateColorAttachmentView;
+ vkCreateDepthStencilViewType CreateDepthStencilView;
+ vkCreateShaderType CreateShader;
+ vkCreateGraphicsPipelineType CreateGraphicsPipeline;
+ vkCreateGraphicsPipelineDerivativeType CreateGraphicsPipelineDerivative;
+ vkCreateComputePipelineType CreateComputePipeline;
+ vkStorePipelineType StorePipeline;
+ vkLoadPipelineType LoadPipeline;
+ vkLoadPipelineDerivativeType LoadPipelineDerivative;
+ vkCreateSamplerType CreateSampler;
+ vkCreateDescriptorSetLayoutType CreateDescriptorSetLayout;
+ vkCreateDescriptorSetLayoutChainType CreateDescriptorSetLayoutChain;
+ vkBeginDescriptorPoolUpdateType BeginDescriptorPoolUpdate;
+ vkEndDescriptorPoolUpdateType EndDescriptorPoolUpdate;
+ vkCreateDescriptorPoolType CreateDescriptorPool;
+ vkResetDescriptorPoolType ResetDescriptorPool;
+ vkAllocDescriptorSetsType AllocDescriptorSets;
+ vkClearDescriptorSetsType ClearDescriptorSets;
+ vkUpdateDescriptorsType UpdateDescriptors;
+ vkCreateDynamicViewportStateType CreateDynamicViewportState;
+ vkCreateDynamicRasterStateType CreateDynamicRasterState;
+ vkCreateDynamicColorBlendStateType CreateDynamicColorBlendState;
+ vkCreateDynamicDepthStencilStateType CreateDynamicDepthStencilState;
+ vkCreateCommandBufferType CreateCommandBuffer;
+ vkBeginCommandBufferType BeginCommandBuffer;
+ vkEndCommandBufferType EndCommandBuffer;
+ vkResetCommandBufferType ResetCommandBuffer;
+ vkCmdBindPipelineType CmdBindPipeline;
+ vkCmdBindDynamicStateObjectType CmdBindDynamicStateObject;
+ vkCmdBindDescriptorSetsType CmdBindDescriptorSets;
+ vkCmdBindVertexBufferType CmdBindVertexBuffer;
+ vkCmdBindIndexBufferType CmdBindIndexBuffer;
+ vkCmdDrawType CmdDraw;
+ vkCmdDrawIndexedType CmdDrawIndexed;
+ vkCmdDrawIndirectType CmdDrawIndirect;
+ vkCmdDrawIndexedIndirectType CmdDrawIndexedIndirect;
+ vkCmdDispatchType CmdDispatch;
+ vkCmdDispatchIndirectType CmdDispatchIndirect;
+ vkCmdCopyBufferType CmdCopyBuffer;
+ vkCmdCopyImageType CmdCopyImage;
+ vkCmdBlitImageType CmdBlitImage;
+ vkCmdCopyBufferToImageType CmdCopyBufferToImage;
+ vkCmdCopyImageToBufferType CmdCopyImageToBuffer;
+ vkCmdCloneImageDataType CmdCloneImageData;
+ vkCmdUpdateBufferType CmdUpdateBuffer;
+ vkCmdFillBufferType CmdFillBuffer;
+ vkCmdClearColorImageType CmdClearColorImage;
+ vkCmdClearDepthStencilType CmdClearDepthStencil;
+ vkCmdResolveImageType CmdResolveImage;
+ vkCmdSetEventType CmdSetEvent;
+ vkCmdResetEventType CmdResetEvent;
+ vkCmdWaitEventsType CmdWaitEvents;
+ vkCmdPipelineBarrierType CmdPipelineBarrier;
+ vkCmdBeginQueryType CmdBeginQuery;
+ vkCmdEndQueryType CmdEndQuery;
+ vkCmdResetQueryPoolType CmdResetQueryPool;
+ vkCmdWriteTimestampType CmdWriteTimestamp;
+ vkCmdInitAtomicCountersType CmdInitAtomicCounters;
+ vkCmdLoadAtomicCountersType CmdLoadAtomicCounters;
+ vkCmdSaveAtomicCountersType CmdSaveAtomicCounters;
+ vkCreateFramebufferType CreateFramebuffer;
+ vkCreateRenderPassType CreateRenderPass;
+ vkCmdBeginRenderPassType CmdBeginRenderPass;
+ vkCmdEndRenderPassType CmdEndRenderPass;
+ vkDbgSetValidationLevelType DbgSetValidationLevel;
+ vkDbgRegisterMsgCallbackType DbgRegisterMsgCallback;
+ vkDbgUnregisterMsgCallbackType DbgUnregisterMsgCallback;
+ vkDbgSetMessageFilterType DbgSetMessageFilter;
+ vkDbgSetObjectTagType DbgSetObjectTag;
+ vkDbgSetGlobalOptionType DbgSetGlobalOption;
+ vkDbgSetDeviceOptionType DbgSetDeviceOption;
+ vkCmdDbgMarkerBeginType CmdDbgMarkerBegin;
+ vkCmdDbgMarkerEndType CmdDbgMarkerEnd;
+#if defined(__linux__) || defined(XCB_NVIDIA)
+ vkWsiX11AssociateConnectionType WsiX11AssociateConnection;
+ vkWsiX11GetMSCType WsiX11GetMSC;
+ vkWsiX11CreatePresentableImageType WsiX11CreatePresentableImage;
+ vkWsiX11QueuePresentType WsiX11QueuePresent;
+#endif // WIN32
+} VK_LAYER_DISPATCH_TABLE;
+
+// LL node for tree of dbg callback functions
+typedef struct _VK_LAYER_DBG_FUNCTION_NODE
+{
+ VK_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback;
+ void *pUserData;
+ struct _VK_LAYER_DBG_FUNCTION_NODE *pNext;
+} VK_LAYER_DBG_FUNCTION_NODE;
+
+typedef enum _VK_LAYER_DBG_ACTION
+{
+ VK_DBG_LAYER_ACTION_IGNORE = 0x0,
+ VK_DBG_LAYER_ACTION_CALLBACK = 0x1,
+ VK_DBG_LAYER_ACTION_LOG_MSG = 0x2,
+ VK_DBG_LAYER_ACTION_BREAK = 0x4
+} VK_LAYER_DBG_ACTION;
+
+typedef enum _VK_LAYER_DBG_REPORT_LEVEL
+{
+
+ VK_DBG_LAYER_LEVEL_INFO = 0,
+ VK_DBG_LAYER_LEVEL_WARN,
+ VK_DBG_LAYER_LEVEL_PERF_WARN,
+ VK_DBG_LAYER_LEVEL_ERROR,
+ VK_DBG_LAYER_LEVEL_NONE,
+} VK_LAYER_DBG_REPORT_LEVEL;
+// ------------------------------------------------------------------------------------------------
+// API functions