1*03ce13f7SAndroid Build Coastguard Worker // Copyright 2018 The SwiftShader Authors. All Rights Reserved.
2*03ce13f7SAndroid Build Coastguard Worker //
3*03ce13f7SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
4*03ce13f7SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
5*03ce13f7SAndroid Build Coastguard Worker // You may obtain a copy of the License at
6*03ce13f7SAndroid Build Coastguard Worker //
7*03ce13f7SAndroid Build Coastguard Worker // http://www.apache.org/licenses/LICENSE-2.0
8*03ce13f7SAndroid Build Coastguard Worker //
9*03ce13f7SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*03ce13f7SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
11*03ce13f7SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*03ce13f7SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
13*03ce13f7SAndroid Build Coastguard Worker // limitations under the License.
14*03ce13f7SAndroid Build Coastguard Worker
15*03ce13f7SAndroid Build Coastguard Worker #include "VkInstance.hpp"
16*03ce13f7SAndroid Build Coastguard Worker #include "VkDebugUtilsMessenger.hpp"
17*03ce13f7SAndroid Build Coastguard Worker #include "VkDestroy.hpp"
18*03ce13f7SAndroid Build Coastguard Worker
19*03ce13f7SAndroid Build Coastguard Worker namespace vk {
20*03ce13f7SAndroid Build Coastguard Worker
Instance(const VkInstanceCreateInfo * pCreateInfo,void * mem,VkPhysicalDevice physicalDevice,DebugUtilsMessenger * messenger)21*03ce13f7SAndroid Build Coastguard Worker Instance::Instance(const VkInstanceCreateInfo *pCreateInfo, void *mem, VkPhysicalDevice physicalDevice, DebugUtilsMessenger *messenger)
22*03ce13f7SAndroid Build Coastguard Worker : physicalDevice(physicalDevice)
23*03ce13f7SAndroid Build Coastguard Worker , messenger(messenger)
24*03ce13f7SAndroid Build Coastguard Worker {
25*03ce13f7SAndroid Build Coastguard Worker }
26*03ce13f7SAndroid Build Coastguard Worker
destroy(const VkAllocationCallbacks * pAllocator)27*03ce13f7SAndroid Build Coastguard Worker void Instance::destroy(const VkAllocationCallbacks *pAllocator)
28*03ce13f7SAndroid Build Coastguard Worker {
29*03ce13f7SAndroid Build Coastguard Worker if(messenger)
30*03ce13f7SAndroid Build Coastguard Worker {
31*03ce13f7SAndroid Build Coastguard Worker vk::destroy(static_cast<VkDebugUtilsMessengerEXT>(*messenger), pAllocator);
32*03ce13f7SAndroid Build Coastguard Worker }
33*03ce13f7SAndroid Build Coastguard Worker vk::destroy(physicalDevice, pAllocator);
34*03ce13f7SAndroid Build Coastguard Worker }
35*03ce13f7SAndroid Build Coastguard Worker
getPhysicalDevices(uint32_t * pPhysicalDeviceCount,VkPhysicalDevice * pPhysicalDevices) const36*03ce13f7SAndroid Build Coastguard Worker VkResult Instance::getPhysicalDevices(uint32_t *pPhysicalDeviceCount, VkPhysicalDevice *pPhysicalDevices) const
37*03ce13f7SAndroid Build Coastguard Worker {
38*03ce13f7SAndroid Build Coastguard Worker if(!pPhysicalDevices)
39*03ce13f7SAndroid Build Coastguard Worker {
40*03ce13f7SAndroid Build Coastguard Worker *pPhysicalDeviceCount = 1;
41*03ce13f7SAndroid Build Coastguard Worker return VK_SUCCESS;
42*03ce13f7SAndroid Build Coastguard Worker }
43*03ce13f7SAndroid Build Coastguard Worker
44*03ce13f7SAndroid Build Coastguard Worker if(*pPhysicalDeviceCount < 1)
45*03ce13f7SAndroid Build Coastguard Worker {
46*03ce13f7SAndroid Build Coastguard Worker return VK_INCOMPLETE;
47*03ce13f7SAndroid Build Coastguard Worker }
48*03ce13f7SAndroid Build Coastguard Worker
49*03ce13f7SAndroid Build Coastguard Worker pPhysicalDevices[0] = physicalDevice;
50*03ce13f7SAndroid Build Coastguard Worker *pPhysicalDeviceCount = 1;
51*03ce13f7SAndroid Build Coastguard Worker
52*03ce13f7SAndroid Build Coastguard Worker return VK_SUCCESS;
53*03ce13f7SAndroid Build Coastguard Worker }
54*03ce13f7SAndroid Build Coastguard Worker
getPhysicalDeviceGroups(uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties) const55*03ce13f7SAndroid Build Coastguard Worker VkResult Instance::getPhysicalDeviceGroups(uint32_t *pPhysicalDeviceGroupCount,
56*03ce13f7SAndroid Build Coastguard Worker VkPhysicalDeviceGroupProperties *pPhysicalDeviceGroupProperties) const
57*03ce13f7SAndroid Build Coastguard Worker {
58*03ce13f7SAndroid Build Coastguard Worker if(!pPhysicalDeviceGroupProperties)
59*03ce13f7SAndroid Build Coastguard Worker {
60*03ce13f7SAndroid Build Coastguard Worker *pPhysicalDeviceGroupCount = 1;
61*03ce13f7SAndroid Build Coastguard Worker return VK_SUCCESS;
62*03ce13f7SAndroid Build Coastguard Worker }
63*03ce13f7SAndroid Build Coastguard Worker
64*03ce13f7SAndroid Build Coastguard Worker if(*pPhysicalDeviceGroupCount < 1)
65*03ce13f7SAndroid Build Coastguard Worker {
66*03ce13f7SAndroid Build Coastguard Worker return VK_INCOMPLETE;
67*03ce13f7SAndroid Build Coastguard Worker }
68*03ce13f7SAndroid Build Coastguard Worker
69*03ce13f7SAndroid Build Coastguard Worker pPhysicalDeviceGroupProperties[0].physicalDeviceCount = 1;
70*03ce13f7SAndroid Build Coastguard Worker pPhysicalDeviceGroupProperties[0].physicalDevices[0] = physicalDevice;
71*03ce13f7SAndroid Build Coastguard Worker pPhysicalDeviceGroupProperties[0].subsetAllocation = VK_FALSE;
72*03ce13f7SAndroid Build Coastguard Worker *pPhysicalDeviceGroupCount = 1;
73*03ce13f7SAndroid Build Coastguard Worker
74*03ce13f7SAndroid Build Coastguard Worker return VK_SUCCESS;
75*03ce13f7SAndroid Build Coastguard Worker }
76*03ce13f7SAndroid Build Coastguard Worker
submitDebugUtilsMessage(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VkDebugUtilsMessageTypeFlagsEXT messageTypes,const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData)77*03ce13f7SAndroid Build Coastguard Worker void Instance::submitDebugUtilsMessage(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData)
78*03ce13f7SAndroid Build Coastguard Worker {
79*03ce13f7SAndroid Build Coastguard Worker if(messenger)
80*03ce13f7SAndroid Build Coastguard Worker {
81*03ce13f7SAndroid Build Coastguard Worker messenger->submitMessage(messageSeverity, messageTypes, pCallbackData);
82*03ce13f7SAndroid Build Coastguard Worker }
83*03ce13f7SAndroid Build Coastguard Worker }
84*03ce13f7SAndroid Build Coastguard Worker
85*03ce13f7SAndroid Build Coastguard Worker } // namespace vk
86