Chromium Code Reviews| Index: tools/vulkan/win/VulkanTestContext_win.cpp |
| diff --git a/tools/vulkan/win/VulkanTestContext_win.cpp b/tools/vulkan/win/VulkanTestContext_win.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a4f49e3a209617ee6ea17906708a7feb2a5c2db8 |
| --- /dev/null |
| +++ b/tools/vulkan/win/VulkanTestContext_win.cpp |
| @@ -0,0 +1,47 @@ |
| + |
| +/* |
| + * Copyright 2015 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#include "VulkanTestContext_win.h" |
| + |
| +#include "vk/GrVkInterface.h" |
| +#include "../../src/gpu/vk/GrVkUtil.h" |
| + |
| +// Platform dependant call |
| +VkSurfaceKHR VulkanTestContext::createVkSurface(void* platformData) { |
| + // need better error handling here |
| + SkASSERT(platformData); |
| + ContextPlatformData_win* winPlatformData = |
| + reinterpret_cast<ContextPlatformData_win*>(platformData); |
| + VkSurfaceKHR surface; |
| + |
| + VkWin32SurfaceCreateInfoKHR surfaceCreateInfo; |
| + memset(&surfaceCreateInfo, 0, sizeof(VkWin32SurfaceCreateInfoKHR)); |
| + surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR; |
| + surfaceCreateInfo.pNext = nullptr; |
| + surfaceCreateInfo.flags = 0; |
| + surfaceCreateInfo.hinstance = winPlatformData->fHInstance; |
| + surfaceCreateInfo.hwnd = winPlatformData->fHWnd; |
| + |
| + VkResult res = GR_VK_CALL(fBackendContext->fInterface, |
| + CreateWin32SurfaceKHR(fBackendContext->fInstance, &surfaceCreateInfo, |
| + nullptr, &surface)); |
|
egdaniel
2016/04/05 16:50:28
align this last line with fBackendContext?
|
| + if (VK_SUCCESS != res) { |
| + return VK_NULL_HANDLE; |
| + } |
| + |
| + return surface; |
| +} |
| + |
| +// Platform dependant call |
| +bool VulkanTestContext::canPresent(uint32_t queueFamilyIndex) { |
| + VkBool32 check = GR_VK_CALL(fBackendContext->fInterface, |
| + GetPhysicalDeviceWin32PresentationSupportKHR( |
| + fBackendContext->fPhysicalDevice, |
| + queueFamilyIndex)); |
| + return (VK_FALSE != check); |
| +} |