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

Side by Side Diff: include/gpu/vk/GrVkInterface.h

Issue 1832613003: Revise layer, extension and feature setup for Vulkan (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Remove extra def of ENABLE_VK_LAYERS Created 4 years, 9 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/GrVkBackendContext.h ('k') | src/gpu/vk/GrVkBackendContext.cpp » ('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 #ifndef GrRadInterface_DEFINED 8 #ifndef GrRadInterface_DEFINED
9 #define GrRadInterface_DEFINED 9 #define GrRadInterface_DEFINED
10 10
11 #include "SkRefCnt.h" 11 #include "SkRefCnt.h"
12 12
13 #include "GrVkExtensions.h"
14
15 #include "vulkan/vulkan.h" 13 #include "vulkan/vulkan.h"
16 14
17 //////////////////////////////////////////////////////////////////////////////// 15 ////////////////////////////////////////////////////////////////////////////////
18 16
19 /** 17 /**
20 * The default interface is returned by GrVkDefaultInterface. This function's 18 * The default interface is returned by GrVkDefaultInterface. This function's
21 * implementation is platform-specific. 19 * implementation is platform-specific.
22 */ 20 */
23 21
24 struct GrVkInterface; 22 struct GrVkInterface;
25 23
26 /** 24 /**
27 * Creates a GrVkInterface. 25 * Creates a GrVkInterface.
28 */ 26 */
29 const GrVkInterface* GrVkCreateInterface(VkInstance instance, VkPhysicalDevice p hysDev, 27 const GrVkInterface* GrVkCreateInterface(VkInstance instance, VkDevice device,
30 VkDevice device); 28 uint32_t extensionFlags);
31 29
32 30
33 /** 31 /**
34 * GrContext uses the following interface to make all calls into Vulkan. When a 32 * GrContext uses the following interface to make all calls into Vulkan. When a
35 * GrContext is created it is given a GrVkInterface. All functions that should b e 33 * GrContext is created it is given a GrVkInterface. All functions that should b e
36 * available based on the Vulkan's version must be non-NULL or GrContext creatio n 34 * available based on the Vulkan's version must be non-NULL or GrContext creatio n
37 * will fail. This can be tested with the validate() method. 35 * will fail. This can be tested with the validate() method.
38 */ 36 */
39 struct SK_API GrVkInterface : public SkRefCnt { 37 struct SK_API GrVkInterface : public SkRefCnt {
40 private: 38 private:
41 // simple wrapper class that exists only to initialize a pointer to NULL 39 // simple wrapper class that exists only to initialize a pointer to NULL
42 template <typename FNPTR_TYPE> class VkPtr { 40 template <typename FNPTR_TYPE> class VkPtr {
43 public: 41 public:
44 VkPtr() : fPtr(NULL) {} 42 VkPtr() : fPtr(NULL) {}
45 VkPtr operator=(FNPTR_TYPE ptr) { fPtr = ptr; return *this; } 43 VkPtr operator=(FNPTR_TYPE ptr) { fPtr = ptr; return *this; }
46 operator FNPTR_TYPE() const { return fPtr; } 44 operator FNPTR_TYPE() const { return fPtr; }
47 private: 45 private:
48 FNPTR_TYPE fPtr; 46 FNPTR_TYPE fPtr;
49 }; 47 };
50 48
51 typedef SkRefCnt INHERITED; 49 typedef SkRefCnt INHERITED;
52 50
53 public: 51 public:
54 GrVkInterface(); 52 GrVkInterface();
55 53
56 // Validates that the GrVkInterface supports its advertised standard. This m eans the necessary 54 // Validates that the GrVkInterface supports its advertised standard. This m eans the necessary
57 // function pointers have been initialized for Vulkan version. 55 // function pointers have been initialized for Vulkan version.
58 bool validate() const; 56 bool validate() const;
59 57
60 GrVkExtensions fExtensions;
61
62 bool hasInstanceExtension(const char ext[]) const {
63 return fExtensions.hasInstanceExtension(ext);
64 }
65 bool hasDeviceExtension(const char ext[]) const {
66 return fExtensions.hasDeviceExtension(ext);
67 }
68 bool hasInstanceLayer(const char ext[]) const {
69 return fExtensions.hasInstanceLayer(ext);
70 }
71 bool hasDeviceLayer(const char ext[]) const {
72 return fExtensions.hasDeviceLayer(ext);
73 }
74
75 /** 58 /**
76 * The function pointers are in a struct so that we can have a compiler gene rated assignment 59 * The function pointers are in a struct so that we can have a compiler gene rated assignment
77 * operator. 60 * operator.
78 */ 61 */
79 struct Functions { 62 struct Functions {
80 VkPtr<PFN_vkCreateInstance> fCreateInstance; 63 VkPtr<PFN_vkCreateInstance> fCreateInstance;
81 VkPtr<PFN_vkDestroyInstance> fDestroyInstance; 64 VkPtr<PFN_vkDestroyInstance> fDestroyInstance;
82 VkPtr<PFN_vkEnumeratePhysicalDevices> fEnumeratePhysicalDevices; 65 VkPtr<PFN_vkEnumeratePhysicalDevices> fEnumeratePhysicalDevices;
83 VkPtr<PFN_vkGetPhysicalDeviceFeatures> fGetPhysicalDeviceFeatures; 66 VkPtr<PFN_vkGetPhysicalDeviceFeatures> fGetPhysicalDeviceFeatures;
84 VkPtr<PFN_vkGetPhysicalDeviceFormatProperties> fGetPhysicalDeviceFormatP roperties; 67 VkPtr<PFN_vkGetPhysicalDeviceFormatProperties> fGetPhysicalDeviceFormatP roperties;
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 VkPtr<PFN_vkCreateDisplayPlaneSurfaceKHR> fCreateDisplayPlaneSurfaceKHR; 214 VkPtr<PFN_vkCreateDisplayPlaneSurfaceKHR> fCreateDisplayPlaneSurfaceKHR;
232 VkPtr<PFN_vkCreateSharedSwapchainsKHR> fCreateSharedSwapchainsKHR; 215 VkPtr<PFN_vkCreateSharedSwapchainsKHR> fCreateSharedSwapchainsKHR;
233 VkPtr<PFN_vkCreateDebugReportCallbackEXT> fCreateDebugReportCallbackEXT; 216 VkPtr<PFN_vkCreateDebugReportCallbackEXT> fCreateDebugReportCallbackEXT;
234 VkPtr<PFN_vkDebugReportMessageEXT> fDebugReportMessageEXT; 217 VkPtr<PFN_vkDebugReportMessageEXT> fDebugReportMessageEXT;
235 VkPtr<PFN_vkDestroyDebugReportCallbackEXT> fDestroyDebugReportCallbackEX T; 218 VkPtr<PFN_vkDestroyDebugReportCallbackEXT> fDestroyDebugReportCallbackEX T;
236 } fFunctions; 219 } fFunctions;
237 220
238 }; 221 };
239 222
240 #endif 223 #endif
OLDNEW
« no previous file with comments | « include/gpu/vk/GrVkBackendContext.h ('k') | src/gpu/vk/GrVkBackendContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698