Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Side by Side Diff: src/gpu/vk/GrVkBackendContext.cpp

Issue 1999213002: Add Xlib support to viewer (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Remove viewer hack Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « include/gpu/vk/GrVkDefines.h ('k') | tools/viewer/sk_app/VulkanWindowContext.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "vk/GrVkBackendContext.h" 8 #include "vk/GrVkBackendContext.h"
9 #include "vk/GrVkExtensions.h" 9 #include "vk/GrVkExtensions.h"
10 #include "vk/GrVkInterface.h" 10 #include "vk/GrVkInterface.h"
(...skipping 22 matching lines...) Expand all
33 33
34 // the minimum version of Vulkan supported 34 // the minimum version of Vulkan supported
35 #ifdef SK_BUILD_FOR_ANDROID 35 #ifdef SK_BUILD_FOR_ANDROID
36 const uint32_t kGrVkMinimumVersion = VK_MAKE_VERSION(1, 0, 3); 36 const uint32_t kGrVkMinimumVersion = VK_MAKE_VERSION(1, 0, 3);
37 #else 37 #else
38 const uint32_t kGrVkMinimumVersion = VK_MAKE_VERSION(1, 0, 8); 38 const uint32_t kGrVkMinimumVersion = VK_MAKE_VERSION(1, 0, 8);
39 #endif 39 #endif
40 40
41 // Create the base Vulkan objects needed by the GrVkGpu object 41 // Create the base Vulkan objects needed by the GrVkGpu object
42 const GrVkBackendContext* GrVkBackendContext::Create(uint32_t* presentQueueIndex Ptr, 42 const GrVkBackendContext* GrVkBackendContext::Create(uint32_t* presentQueueIndex Ptr,
43 bool(*canPresent)(VkInstance, VkPhysicalDevice, uin t32_t queueIndex)) { 43 bool(*canPresent)(VkInstance, VkPhysicalDevice, uin t32_t queueIndex,
44 void* platformData),
45 void* platformData) {
44 VkPhysicalDevice physDev; 46 VkPhysicalDevice physDev;
45 VkDevice device; 47 VkDevice device;
46 VkInstance inst; 48 VkInstance inst;
47 VkResult err; 49 VkResult err;
48 50
49 const VkApplicationInfo app_info = { 51 const VkApplicationInfo app_info = {
50 VK_STRUCTURE_TYPE_APPLICATION_INFO, // sType 52 VK_STRUCTURE_TYPE_APPLICATION_INFO, // sType
51 nullptr, // pNext 53 nullptr, // pNext
52 "vktest", // pApplicationName 54 "vktest", // pApplicationName
53 0, // applicationVersion 55 0, // applicationVersion
(...skipping 30 matching lines...) Expand all
84 } 86 }
85 #ifdef SK_BUILD_FOR_WIN 87 #ifdef SK_BUILD_FOR_WIN
86 if (extensions.hasInstanceExtension(VK_KHR_WIN32_SURFACE_EXTENSION_NAME)) { 88 if (extensions.hasInstanceExtension(VK_KHR_WIN32_SURFACE_EXTENSION_NAME)) {
87 instanceExtensionNames.push_back(VK_KHR_WIN32_SURFACE_EXTENSION_NAME); 89 instanceExtensionNames.push_back(VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
88 extensionFlags |= kKHR_win32_surface_GrVkExtensionFlag; 90 extensionFlags |= kKHR_win32_surface_GrVkExtensionFlag;
89 } 91 }
90 #elif SK_BUILD_FOR_ANDROID 92 #elif SK_BUILD_FOR_ANDROID
91 if (extensions.hasInstanceExtension(VK_KHR_ANDROID_SURFACE_EXTENSION_NAME)) { 93 if (extensions.hasInstanceExtension(VK_KHR_ANDROID_SURFACE_EXTENSION_NAME)) {
92 instanceExtensionNames.push_back(VK_KHR_ANDROID_SURFACE_EXTENSION_NAME); 94 instanceExtensionNames.push_back(VK_KHR_ANDROID_SURFACE_EXTENSION_NAME);
93 extensionFlags |= kKHR_android_surface_GrVkExtensionFlag; 95 extensionFlags |= kKHR_android_surface_GrVkExtensionFlag;
94 } 96 }
95 #elif SK_BUILD_FOR_UNIX 97 #elif SK_BUILD_FOR_UNIX
96 if (extensions.hasInstanceExtension(VK_KHR_XLIB_SURFACE_EXTENSION_NAME)) { 98 if (extensions.hasInstanceExtension(VK_KHR_XCB_SURFACE_EXTENSION_NAME)) {
97 instanceExtensionNames.push_back(VK_KHR_XLIB_SURFACE_EXTENSION_NAME); 99 instanceExtensionNames.push_back(VK_KHR_XCB_SURFACE_EXTENSION_NAME);
98 extensionFlags |= kKHR_xlib_surface_GrVkExtensionFlag; 100 extensionFlags |= kKHR_xcb_surface_GrVkExtensionFlag;
99 } 101 }
100 #endif 102 #endif
101 103
102 const VkInstanceCreateInfo instance_create = { 104 const VkInstanceCreateInfo instance_create = {
103 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, // sType 105 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, // sType
104 nullptr, // pNext 106 nullptr, // pNext
105 0, // flags 107 0, // flags
106 &app_info, // pApplicationInfo 108 &app_info, // pApplicationInfo
107 (uint32_t) instanceLayerNames.count(), // enabledLayerNameCount 109 (uint32_t) instanceLayerNames.count(), // enabledLayerNameCount
108 instanceLayerNames.begin(), // ppEnabledLayerNames 110 instanceLayerNames.begin(), // ppEnabledLayerNames
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 graphicsQueueIndex = i; 154 graphicsQueueIndex = i;
153 break; 155 break;
154 } 156 }
155 } 157 }
156 SkASSERT(graphicsQueueIndex < queueCount); 158 SkASSERT(graphicsQueueIndex < queueCount);
157 159
158 // iterate to find the present queue, if needed 160 // iterate to find the present queue, if needed
159 uint32_t presentQueueIndex = graphicsQueueIndex; 161 uint32_t presentQueueIndex = graphicsQueueIndex;
160 if (presentQueueIndexPtr && canPresent) { 162 if (presentQueueIndexPtr && canPresent) {
161 for (uint32_t i = 0; i < queueCount; i++) { 163 for (uint32_t i = 0; i < queueCount; i++) {
162 if (canPresent(inst, physDev, i)) { 164 if (canPresent(inst, physDev, i, platformData)) {
163 presentQueueIndex = i; 165 presentQueueIndex = i;
164 break; 166 break;
165 } 167 }
166 } 168 }
167 SkASSERT(presentQueueIndex < queueCount); 169 SkASSERT(presentQueueIndex < queueCount);
168 *presentQueueIndexPtr = presentQueueIndex; 170 *presentQueueIndexPtr = presentQueueIndex;
169 } 171 }
170 172
171 extensions.initDevice(kGrVkMinimumVersion, inst, physDev); 173 extensions.initDevice(kGrVkMinimumVersion, inst, physDev);
172 174
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 return ctx; 268 return ctx;
267 } 269 }
268 270
269 GrVkBackendContext::~GrVkBackendContext() { 271 GrVkBackendContext::~GrVkBackendContext() {
270 vkDeviceWaitIdle(fDevice); 272 vkDeviceWaitIdle(fDevice);
271 vkDestroyDevice(fDevice, nullptr); 273 vkDestroyDevice(fDevice, nullptr);
272 fDevice = VK_NULL_HANDLE; 274 fDevice = VK_NULL_HANDLE;
273 vkDestroyInstance(fInstance, nullptr); 275 vkDestroyInstance(fInstance, nullptr);
274 fInstance = VK_NULL_HANDLE; 276 fInstance = VK_NULL_HANDLE;
275 } 277 }
OLDNEW
« no previous file with comments | « include/gpu/vk/GrVkDefines.h ('k') | tools/viewer/sk_app/VulkanWindowContext.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698