aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2015-11-27 15:23:23 -0700
committerJon Ashburn <jon@lunarg.com>2015-12-01 10:33:36 -0700
commit930aacbbe56c75cc8593347fdee81f06db13b680 (patch)
treecfd7e2f20ea06c361fd76a9d0a8913833f35607c
parentc2ba5ca193e9f903d158231ea703ed2ce4481278 (diff)
downloadusermoji-930aacbbe56c75cc8593347fdee81f06db13b680.tar.xz
layers: Fix swapchain layer errors
Part of bringing WSI to header version 210
-rw-r--r--layers/swapchain.cpp74
1 files changed, 25 insertions, 49 deletions
diff --git a/layers/swapchain.cpp b/layers/swapchain.cpp
index 9348f7f7..b0675151 100644
--- a/layers/swapchain.cpp
+++ b/layers/swapchain.cpp
@@ -29,6 +29,7 @@
#include <vk_loader_platform.h>
#include "swapchain.h"
#include "vk_layer_extension_utils.h"
+#include "vk_enum_string_helper.h"
// FIXME/TODO: Make sure this layer is thread-safe!
@@ -44,27 +45,29 @@ template layer_data *get_my_data_ptr<layer_data>(
static void createDeviceRegisterExtensions(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice device)
{
uint32_t i;
- layer_data *my_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map);
- VkLayerDispatchTable *pDisp = my_data->device_dispatch_table;
- PFN_vkGetDeviceProcAddr gpa = pDisp->GetDeviceProcAddr;
- pDisp->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) gpa(device, "vkCreateSwapchainKHR");
- pDisp->DestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) gpa(device, "vkDestroySwapchainKHR");
+ layer_data *my_device_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map);
+ layer_data *my_instance_data = get_my_data_ptr(get_dispatch_key(physicalDevice), layer_data_map);
+
+ VkLayerDispatchTable *pDisp = my_device_data->device_dispatch_table;
+ PFN_vkGetDeviceProcAddr gpa = pDisp->GetDeviceProcAddr;
+
+ pDisp->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) gpa(device, "vkCreateSwapchainKHR");
+ pDisp->DestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) gpa(device, "vkDestroySwapchainKHR");
pDisp->GetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR) gpa(device, "vkGetSwapchainImagesKHR");
- pDisp->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) gpa(device, "vkAcquireNextImageKHR");
- pDisp->QueuePresentKHR = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR");
+ pDisp->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) gpa(device, "vkAcquireNextImageKHR");
+ pDisp->QueuePresentKHR = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR");
- SwpPhysicalDevice *pPhysicalDevice = &my_data->physicalDeviceMap[physicalDevice];
+ SwpPhysicalDevice *pPhysicalDevice = &my_instance_data->physicalDeviceMap[physicalDevice];
if (pPhysicalDevice) {
- my_data->deviceMap[device].pPhysicalDevice = pPhysicalDevice;
- pPhysicalDevice->pDevice = &my_data->deviceMap[device];
+ my_device_data->deviceMap[device].pPhysicalDevice = pPhysicalDevice;
+ pPhysicalDevice->pDevice = &my_device_data->deviceMap[device];
} else {
- layer_data *my_data = get_my_data_ptr(get_dispatch_key(physicalDevice), layer_data_map);
- LOG_ERROR_NON_VALID_OBJ(VK_OBJECT_TYPE_PHYSICAL_DEVICE,
- physicalDevice,
- "VkPhysicalDevice");
+ log_msg(my_instance_data->report_data, VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_PHYSICAL_DEVICE,
+ (uint64_t)physicalDevice , 0, SWAPCHAIN_INVALID_HANDLE, "Swapchain",
+ "vkCreateDevice() called with a non-valid VkPhysicalDevice.");
}
- my_data->deviceMap[device].device = device;
- my_data->deviceMap[device].deviceSwapchainExtensionEnabled = false;
+ my_device_data->deviceMap[device].device = device;
+ my_device_data->deviceMap[device].deviceSwapchainExtensionEnabled = false;
// Record whether the WSI device extension was enabled for this VkDevice.
// No need to check if the extension was advertised by
@@ -72,7 +75,7 @@ static void createDeviceRegisterExtensions(VkPhysicalDevice physicalDevice, cons
for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) {
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) {
- my_data->deviceMap[device].deviceSwapchainExtensionEnabled = true;
+ my_device_data->deviceMap[device].deviceSwapchainExtensionEnabled = true;
}
}
}
@@ -136,36 +139,10 @@ static void initSwapchain(layer_data *my_data)
static const char *surfaceTransformStr(VkSurfaceTransformFlagBitsKHR value)
{
- static std::string surfaceTransformStrings[] = {
- "VK_SURFACE_TRANSFORM_NONE_BIT_KHR",
- "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR",
- "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR",
- "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR",
- "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR",
- "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR",
- "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR",
- "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR",
- "Out-of-Range Value"};
-
- // Deal with a out-of-range value:
- switch (value) {
- case VK_SURFACE_TRANSFORM_NONE_BIT_KHR:
- case VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR:
- case VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR:
- case VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR:
- case VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR:
- case VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR:
- case VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR:
- case VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR:
- break;
- default:
- value =
- (VkSurfaceTransformFlagBitsKHR) (VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR + 1);
- break;
- }
+ // TODO: parse flags and print out one at a time
// Return a string corresponding to the value:
- return surfaceTransformStrings[value].c_str();
+ return string_VkSurfaceTransformFlagBitsKHR(value);
}
static const char *presentModeStr(VkPresentModeKHR value)
@@ -659,7 +636,7 @@ static VkBool32 validateCreateSwapchainKHR(VkDevice device, const VkSwapchainCre
}
// Validate pCreateInfo->preTransform against
// VkSurfaceCapabilitiesKHR::supportedTransforms:
- if (!((1 << pCreateInfo->preTransform) & pCapabilities->supportedTransforms)) {
+ if (!((pCreateInfo->preTransform) & pCapabilities->supportedTransforms)) {
// This is an error situation; one for which we'd like to give
// the developer a helpful, multi-line error message. Build it
// up a little at a time, and then log it:
@@ -672,8 +649,7 @@ static VkBool32 validateCreateSwapchainKHR(VkDevice device, const VkSwapchainCre
fn,
surfaceTransformStr(pCreateInfo->preTransform));
errorString += str;
- for (int i = VK_SURFACE_TRANSFORM_NONE_BIT_KHR ;
- i < VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR ; i++) {
+ for (int i = 0; i < 32; i++) {
// Build up the rest of the message:
if ((1 << i) & pCapabilities->supportedTransforms) {
const char *newStr =
@@ -686,7 +662,7 @@ static VkBool32 validateCreateSwapchainKHR(VkDevice device, const VkSwapchainCre
skipCall |= debug_report_log_msg(my_data->report_data,
VK_DBG_REPORT_ERROR_BIT,
VK_OBJECT_TYPE_DEVICE,
- (uint64_t) device, 0,
+ (uint64_t) device, 0,
SWAPCHAIN_CREATE_SWAP_BAD_PRE_TRANSFORM,
LAYER_NAME,
errorString.c_str());