aboutsummaryrefslogtreecommitdiff
path: root/cube/cube.c
diff options
context:
space:
mode:
Diffstat (limited to 'cube/cube.c')
-rw-r--r--cube/cube.c104
1 files changed, 19 insertions, 85 deletions
diff --git a/cube/cube.c b/cube/cube.c
index 18e390c0..d54dfe94 100644
--- a/cube/cube.c
+++ b/cube/cube.c
@@ -133,25 +133,6 @@ void DbgMsg(char *fmt, ...) {
}
#endif
-#define GET_INSTANCE_PROC_ADDR(inst, entrypoint) \
- { \
- demo->fp##entrypoint = (PFN_vk##entrypoint)vkGetInstanceProcAddr(inst, "vk" #entrypoint); \
- if (demo->fp##entrypoint == NULL) { \
- ERR_EXIT("vkGetInstanceProcAddr failed to find vk" #entrypoint, "vkGetInstanceProcAddr Failure"); \
- } \
- }
-
-static PFN_vkGetDeviceProcAddr g_gdpa = NULL;
-
-#define GET_DEVICE_PROC_ADDR(dev, entrypoint) \
- { \
- if (!g_gdpa) g_gdpa = (PFN_vkGetDeviceProcAddr)vkGetInstanceProcAddr(demo->inst, "vkGetDeviceProcAddr"); \
- demo->fp##entrypoint = (PFN_vk##entrypoint)g_gdpa(dev, "vk" #entrypoint); \
- if (demo->fp##entrypoint == NULL) { \
- ERR_EXIT("vkGetDeviceProcAddr failed to find vk" #entrypoint, "vkGetDeviceProcAddr Failure"); \
- } \
- }
-
/*
* structure to track all objects related to a texture.
*/
@@ -407,17 +388,6 @@ struct demo {
VkFormat format;
VkColorSpaceKHR color_space;
- PFN_vkGetPhysicalDeviceSurfaceSupportKHR fpGetPhysicalDeviceSurfaceSupportKHR;
- PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR fpGetPhysicalDeviceSurfaceCapabilitiesKHR;
- PFN_vkGetPhysicalDeviceSurfaceFormatsKHR fpGetPhysicalDeviceSurfaceFormatsKHR;
- PFN_vkGetPhysicalDeviceSurfacePresentModesKHR fpGetPhysicalDeviceSurfacePresentModesKHR;
- PFN_vkCreateSwapchainKHR fpCreateSwapchainKHR;
- PFN_vkDestroySwapchainKHR fpDestroySwapchainKHR;
- PFN_vkGetSwapchainImagesKHR fpGetSwapchainImagesKHR;
- PFN_vkAcquireNextImageKHR fpAcquireNextImageKHR;
- PFN_vkQueuePresentKHR fpQueuePresentKHR;
- PFN_vkGetRefreshCycleDurationGOOGLE fpGetRefreshCycleDurationGOOGLE;
- PFN_vkGetPastPresentationTimingGOOGLE fpGetPastPresentationTimingGOOGLE;
uint32_t swapchainImageCount;
VkSwapchainKHR swapchain;
SwapchainImageResources *swapchain_image_resources;
@@ -958,12 +928,12 @@ void DemoUpdateTargetIPD(struct demo *demo) {
VkPastPresentationTimingGOOGLE *past = NULL;
uint32_t count = 0;
- err = demo->fpGetPastPresentationTimingGOOGLE(demo->device, demo->swapchain, &count, NULL);
+ err = vkGetPastPresentationTimingGOOGLE(demo->device, demo->swapchain, &count, NULL);
assert(!err);
if (count) {
past = (VkPastPresentationTimingGOOGLE *)malloc(sizeof(VkPastPresentationTimingGOOGLE) * count);
assert(past);
- err = demo->fpGetPastPresentationTimingGOOGLE(demo->device, demo->swapchain, &count, past);
+ err = vkGetPastPresentationTimingGOOGLE(demo->device, demo->swapchain, &count, past);
assert(!err);
bool early = false;
@@ -1076,9 +1046,8 @@ static void demo_draw(struct demo *demo) {
do {
// Get the index of the next available swapchain image:
- err =
- demo->fpAcquireNextImageKHR(demo->device, demo->swapchain, UINT64_MAX,
- demo->image_acquired_semaphores[demo->frame_index], VK_NULL_HANDLE, &demo->current_buffer);
+ err = vkAcquireNextImageKHR(demo->device, demo->swapchain, UINT64_MAX, demo->image_acquired_semaphores[demo->frame_index],
+ VK_NULL_HANDLE, &demo->current_buffer);
if (err == VK_ERROR_OUT_OF_DATE_KHR) {
// demo->swapchain is out of date (e.g. the window was resized) and
@@ -1223,7 +1192,7 @@ static void demo_draw(struct demo *demo) {
}
}
- err = demo->fpQueuePresentKHR(demo->present_queue, &present);
+ err = vkQueuePresentKHR(demo->present_queue, &present);
demo->frame_index += 1;
demo->frame_index %= FRAME_LAG;
@@ -1234,7 +1203,7 @@ static void demo_draw(struct demo *demo) {
} else if (err == VK_SUBOPTIMAL_KHR) {
// SUBOPTIMAL could be due to a resize
VkSurfaceCapabilitiesKHR surfCapabilities;
- err = demo->fpGetPhysicalDeviceSurfaceCapabilitiesKHR(demo->gpu, demo->surface, &surfCapabilities);
+ err = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(demo->gpu, demo->surface, &surfCapabilities);
assert(!err);
if (surfCapabilities.currentExtent.width != (uint32_t)demo->width ||
surfCapabilities.currentExtent.height != (uint32_t)demo->height) {
@@ -1255,15 +1224,15 @@ static void demo_prepare_buffers(struct demo *demo) {
// Check the surface capabilities and formats
VkSurfaceCapabilitiesKHR surfCapabilities;
- err = demo->fpGetPhysicalDeviceSurfaceCapabilitiesKHR(demo->gpu, demo->surface, &surfCapabilities);
+ err = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(demo->gpu, demo->surface, &surfCapabilities);
assert(!err);
uint32_t presentModeCount;
- err = demo->fpGetPhysicalDeviceSurfacePresentModesKHR(demo->gpu, demo->surface, &presentModeCount, NULL);
+ err = vkGetPhysicalDeviceSurfacePresentModesKHR(demo->gpu, demo->surface, &presentModeCount, NULL);
assert(!err);
VkPresentModeKHR *presentModes = (VkPresentModeKHR *)malloc(presentModeCount * sizeof(VkPresentModeKHR));
assert(presentModes);
- err = demo->fpGetPhysicalDeviceSurfacePresentModesKHR(demo->gpu, demo->surface, &presentModeCount, presentModes);
+ err = vkGetPhysicalDeviceSurfacePresentModesKHR(demo->gpu, demo->surface, &presentModeCount, presentModes);
assert(!err);
VkExtent2D swapchainExtent;
@@ -1403,7 +1372,7 @@ static void demo_prepare_buffers(struct demo *demo) {
.clipped = true,
};
uint32_t i;
- err = demo->fpCreateSwapchainKHR(demo->device, &swapchain_ci, NULL, &demo->swapchain);
+ err = vkCreateSwapchainKHR(demo->device, &swapchain_ci, NULL, &demo->swapchain);
assert(!err);
// If we just re-created an existing swapchain, we should destroy the old
@@ -1411,15 +1380,15 @@ static void demo_prepare_buffers(struct demo *demo) {
// Note: destroying the swapchain also cleans up all its associated
// presentable images once the platform is done with them.
if (oldSwapchain != VK_NULL_HANDLE) {
- demo->fpDestroySwapchainKHR(demo->device, oldSwapchain, NULL);
+ vkDestroySwapchainKHR(demo->device, oldSwapchain, NULL);
}
- err = demo->fpGetSwapchainImagesKHR(demo->device, demo->swapchain, &demo->swapchainImageCount, NULL);
+ err = vkGetSwapchainImagesKHR(demo->device, demo->swapchain, &demo->swapchainImageCount, NULL);
assert(!err);
VkImage *swapchainImages = (VkImage *)malloc(demo->swapchainImageCount * sizeof(VkImage));
assert(swapchainImages);
- err = demo->fpGetSwapchainImagesKHR(demo->device, demo->swapchain, &demo->swapchainImageCount, swapchainImages);
+ err = vkGetSwapchainImagesKHR(demo->device, demo->swapchain, &demo->swapchainImageCount, swapchainImages);
assert(!err);
demo->swapchain_image_resources =
@@ -1459,7 +1428,7 @@ static void demo_prepare_buffers(struct demo *demo) {
if (demo->VK_GOOGLE_display_timing_enabled) {
VkRefreshCycleDurationGOOGLE rc_dur;
- err = demo->fpGetRefreshCycleDurationGOOGLE(demo->device, demo->swapchain, &rc_dur);
+ err = vkGetRefreshCycleDurationGOOGLE(demo->device, demo->swapchain, &rc_dur);
assert(!err);
demo->refresh_duration = rc_dur.refreshDuration;
@@ -2435,7 +2404,7 @@ static void demo_cleanup(struct demo *demo) {
vkFreeMemory(demo->device, demo->textures[i].mem, NULL);
vkDestroySampler(demo->device, demo->textures[i].sampler, NULL);
}
- demo->fpDestroySwapchainKHR(demo->device, demo->swapchain, NULL);
+ vkDestroySwapchainKHR(demo->device, demo->swapchain, NULL);
vkDestroyImageView(demo->device, demo->depth.view, NULL);
vkDestroyImage(demo->device, demo->depth.image, NULL);
@@ -3777,26 +3746,7 @@ static void demo_init_vk(struct demo *demo) {
}
if (demo->validate) {
- // Setup VK_EXT_debug_utils function pointers always (we use them for
- // debug labels and names).
- demo->CreateDebugUtilsMessengerEXT =
- (PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(demo->inst, "vkCreateDebugUtilsMessengerEXT");
- demo->DestroyDebugUtilsMessengerEXT =
- (PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(demo->inst, "vkDestroyDebugUtilsMessengerEXT");
- demo->SubmitDebugUtilsMessageEXT =
- (PFN_vkSubmitDebugUtilsMessageEXT)vkGetInstanceProcAddr(demo->inst, "vkSubmitDebugUtilsMessageEXT");
- demo->CmdBeginDebugUtilsLabelEXT =
- (PFN_vkCmdBeginDebugUtilsLabelEXT)vkGetInstanceProcAddr(demo->inst, "vkCmdBeginDebugUtilsLabelEXT");
- demo->CmdEndDebugUtilsLabelEXT =
- (PFN_vkCmdEndDebugUtilsLabelEXT)vkGetInstanceProcAddr(demo->inst, "vkCmdEndDebugUtilsLabelEXT");
- demo->CmdInsertDebugUtilsLabelEXT =
- (PFN_vkCmdInsertDebugUtilsLabelEXT)vkGetInstanceProcAddr(demo->inst, "vkCmdInsertDebugUtilsLabelEXT");
- demo->SetDebugUtilsObjectNameEXT =
- (PFN_vkSetDebugUtilsObjectNameEXT)vkGetInstanceProcAddr(demo->inst, "vkSetDebugUtilsObjectNameEXT");
- if (NULL == demo->CreateDebugUtilsMessengerEXT || NULL == demo->DestroyDebugUtilsMessengerEXT ||
- NULL == demo->SubmitDebugUtilsMessageEXT || NULL == demo->CmdBeginDebugUtilsLabelEXT ||
- NULL == demo->CmdEndDebugUtilsLabelEXT || NULL == demo->CmdInsertDebugUtilsLabelEXT ||
- NULL == demo->SetDebugUtilsObjectNameEXT) {
+ if (NULL == demo->CreateDebugUtilsMessengerEXT) {
ERR_EXIT("GetProcAddr: Failed to init VK_EXT_debug_utils\n", "GetProcAddr: Failure");
}
@@ -3826,12 +3776,6 @@ static void demo_init_vk(struct demo *demo) {
// features based on this query
VkPhysicalDeviceFeatures physDevFeatures;
vkGetPhysicalDeviceFeatures(demo->gpu, &physDevFeatures);
-
- GET_INSTANCE_PROC_ADDR(demo->inst, GetPhysicalDeviceSurfaceSupportKHR);
- GET_INSTANCE_PROC_ADDR(demo->inst, GetPhysicalDeviceSurfaceCapabilitiesKHR);
- GET_INSTANCE_PROC_ADDR(demo->inst, GetPhysicalDeviceSurfaceFormatsKHR);
- GET_INSTANCE_PROC_ADDR(demo->inst, GetPhysicalDeviceSurfacePresentModesKHR);
- GET_INSTANCE_PROC_ADDR(demo->inst, GetSwapchainImagesKHR);
}
static void demo_create_device(struct demo *demo) {
@@ -3978,7 +3922,7 @@ static void demo_init_vk_swapchain(struct demo *demo) {
// Iterate over each queue to learn whether it supports presenting:
VkBool32 *supportsPresent = (VkBool32 *)malloc(demo->queue_family_count * sizeof(VkBool32));
for (uint32_t i = 0; i < demo->queue_family_count; i++) {
- demo->fpGetPhysicalDeviceSurfaceSupportKHR(demo->gpu, i, demo->surface, &supportsPresent[i]);
+ vkGetPhysicalDeviceSurfaceSupportKHR(demo->gpu, i, demo->surface, &supportsPresent[i]);
}
// Search for a graphics and a present queue in the array of queue
@@ -4022,16 +3966,6 @@ static void demo_init_vk_swapchain(struct demo *demo) {
demo_create_device(demo);
- GET_DEVICE_PROC_ADDR(demo->device, CreateSwapchainKHR);
- GET_DEVICE_PROC_ADDR(demo->device, DestroySwapchainKHR);
- GET_DEVICE_PROC_ADDR(demo->device, GetSwapchainImagesKHR);
- GET_DEVICE_PROC_ADDR(demo->device, AcquireNextImageKHR);
- GET_DEVICE_PROC_ADDR(demo->device, QueuePresentKHR);
- if (demo->VK_GOOGLE_display_timing_enabled) {
- GET_DEVICE_PROC_ADDR(demo->device, GetRefreshCycleDurationGOOGLE);
- GET_DEVICE_PROC_ADDR(demo->device, GetPastPresentationTimingGOOGLE);
- }
-
vkGetDeviceQueue(demo->device, demo->graphics_queue_family_index, 0, &demo->graphics_queue);
if (!demo->separate_present_queue) {
@@ -4042,10 +3976,10 @@ static void demo_init_vk_swapchain(struct demo *demo) {
// Get the list of VkFormat's that are supported:
uint32_t formatCount;
- err = demo->fpGetPhysicalDeviceSurfaceFormatsKHR(demo->gpu, demo->surface, &formatCount, NULL);
+ err = vkGetPhysicalDeviceSurfaceFormatsKHR(demo->gpu, demo->surface, &formatCount, NULL);
assert(!err);
VkSurfaceFormatKHR *surfFormats = (VkSurfaceFormatKHR *)malloc(formatCount * sizeof(VkSurfaceFormatKHR));
- err = demo->fpGetPhysicalDeviceSurfaceFormatsKHR(demo->gpu, demo->surface, &formatCount, surfFormats);
+ err = vkGetPhysicalDeviceSurfaceFormatsKHR(demo->gpu, demo->surface, &formatCount, surfFormats);
assert(!err);
VkSurfaceFormatKHR surfaceFormat = pick_surface_format(surfFormats, formatCount);
demo->format = surfaceFormat.format;