forked from mirror/vulkan-zig
Make duck-typing easier
* Use flag struct based on command enum to enable commands * Include cmds argument as public declaration inside Wrapper structs * Include Dispatch type as public declaration inside Wrapper structs
This commit is contained in:
@@ -5,77 +5,81 @@ const Allocator = std.mem.Allocator;
|
||||
|
||||
const required_device_extensions = [_][]const u8{vk.extension_info.khr_swapchain.name};
|
||||
|
||||
const BaseDispatch = vk.BaseWrapper(&.{
|
||||
.createInstance,
|
||||
const BaseDispatch = vk.BaseWrapper(.{
|
||||
.createInstance = true,
|
||||
});
|
||||
|
||||
const InstanceDispatch = vk.InstanceWrapper(&.{
|
||||
.destroyInstance,
|
||||
.createDevice,
|
||||
.destroySurfaceKHR,
|
||||
.enumeratePhysicalDevices,
|
||||
.getPhysicalDeviceProperties,
|
||||
.enumerateDeviceExtensionProperties,
|
||||
.getPhysicalDeviceSurfaceFormatsKHR,
|
||||
.getPhysicalDeviceSurfacePresentModesKHR,
|
||||
.getPhysicalDeviceSurfaceCapabilitiesKHR,
|
||||
.getPhysicalDeviceQueueFamilyProperties,
|
||||
.getPhysicalDeviceSurfaceSupportKHR,
|
||||
.getPhysicalDeviceMemoryProperties,
|
||||
.getDeviceProcAddr,
|
||||
comptime {
|
||||
std.debug.assert(vk.BaseWrapper(vk.BaseCommandFlags{}) == vk.BaseWrapper(.{}));
|
||||
}
|
||||
|
||||
const InstanceDispatch = vk.InstanceWrapper(.{
|
||||
.destroyInstance = true,
|
||||
.createDevice = true,
|
||||
.destroySurfaceKHR = true,
|
||||
.enumeratePhysicalDevices = true,
|
||||
.getPhysicalDeviceProperties = true,
|
||||
.enumerateDeviceExtensionProperties = true,
|
||||
.getPhysicalDeviceSurfaceFormatsKHR = true,
|
||||
.getPhysicalDeviceSurfacePresentModesKHR = true,
|
||||
.getPhysicalDeviceSurfaceCapabilitiesKHR = true,
|
||||
.getPhysicalDeviceQueueFamilyProperties = true,
|
||||
.getPhysicalDeviceSurfaceSupportKHR = true,
|
||||
.getPhysicalDeviceMemoryProperties = true,
|
||||
.getDeviceProcAddr = true,
|
||||
});
|
||||
|
||||
const DeviceDispatch = vk.DeviceWrapper(&.{
|
||||
.destroyDevice,
|
||||
.getDeviceQueue,
|
||||
.createSemaphore,
|
||||
.createFence,
|
||||
.createImageView,
|
||||
.destroyImageView,
|
||||
.destroySemaphore,
|
||||
.destroyFence,
|
||||
.getSwapchainImagesKHR,
|
||||
.createSwapchainKHR,
|
||||
.destroySwapchainKHR,
|
||||
.acquireNextImageKHR,
|
||||
.deviceWaitIdle,
|
||||
.waitForFences,
|
||||
.resetFences,
|
||||
.queueSubmit,
|
||||
.queuePresentKHR,
|
||||
.createCommandPool,
|
||||
.destroyCommandPool,
|
||||
.allocateCommandBuffers,
|
||||
.freeCommandBuffers,
|
||||
.queueWaitIdle,
|
||||
.createShaderModule,
|
||||
.destroyShaderModule,
|
||||
.createPipelineLayout,
|
||||
.destroyPipelineLayout,
|
||||
.createRenderPass,
|
||||
.destroyRenderPass,
|
||||
.createGraphicsPipelines,
|
||||
.destroyPipeline,
|
||||
.createFramebuffer,
|
||||
.destroyFramebuffer,
|
||||
.beginCommandBuffer,
|
||||
.endCommandBuffer,
|
||||
.allocateMemory,
|
||||
.freeMemory,
|
||||
.createBuffer,
|
||||
.destroyBuffer,
|
||||
.getBufferMemoryRequirements,
|
||||
.mapMemory,
|
||||
.unmapMemory,
|
||||
.bindBufferMemory,
|
||||
.cmdBeginRenderPass,
|
||||
.cmdEndRenderPass,
|
||||
.cmdBindPipeline,
|
||||
.cmdDraw,
|
||||
.cmdSetViewport,
|
||||
.cmdSetScissor,
|
||||
.cmdBindVertexBuffers,
|
||||
.cmdCopyBuffer,
|
||||
const DeviceDispatch = vk.DeviceWrapper(.{
|
||||
.destroyDevice = true,
|
||||
.getDeviceQueue = true,
|
||||
.createSemaphore = true,
|
||||
.createFence = true,
|
||||
.createImageView = true,
|
||||
.destroyImageView = true,
|
||||
.destroySemaphore = true,
|
||||
.destroyFence = true,
|
||||
.getSwapchainImagesKHR = true,
|
||||
.createSwapchainKHR = true,
|
||||
.destroySwapchainKHR = true,
|
||||
.acquireNextImageKHR = true,
|
||||
.deviceWaitIdle = true,
|
||||
.waitForFences = true,
|
||||
.resetFences = true,
|
||||
.queueSubmit = true,
|
||||
.queuePresentKHR = true,
|
||||
.createCommandPool = true,
|
||||
.destroyCommandPool = true,
|
||||
.allocateCommandBuffers = true,
|
||||
.freeCommandBuffers = true,
|
||||
.queueWaitIdle = true,
|
||||
.createShaderModule = true,
|
||||
.destroyShaderModule = true,
|
||||
.createPipelineLayout = true,
|
||||
.destroyPipelineLayout = true,
|
||||
.createRenderPass = true,
|
||||
.destroyRenderPass = true,
|
||||
.createGraphicsPipelines = true,
|
||||
.destroyPipeline = true,
|
||||
.createFramebuffer = true,
|
||||
.destroyFramebuffer = true,
|
||||
.beginCommandBuffer = true,
|
||||
.endCommandBuffer = true,
|
||||
.allocateMemory = true,
|
||||
.freeMemory = true,
|
||||
.createBuffer = true,
|
||||
.destroyBuffer = true,
|
||||
.getBufferMemoryRequirements = true,
|
||||
.mapMemory = true,
|
||||
.unmapMemory = true,
|
||||
.bindBufferMemory = true,
|
||||
.cmdBeginRenderPass = true,
|
||||
.cmdEndRenderPass = true,
|
||||
.cmdBindPipeline = true,
|
||||
.cmdDraw = true,
|
||||
.cmdSetViewport = true,
|
||||
.cmdSetScissor = true,
|
||||
.cmdBindVertexBuffers = true,
|
||||
.cmdCopyBuffer = true,
|
||||
});
|
||||
|
||||
pub const GraphicsContext = struct {
|
||||
|
||||
Reference in New Issue
Block a user