layers_extensions.h revision 25700b452535ce7ae838bfe832392b46ed555ed2
1c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu/* 2c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * Copyright 2015 The Android Open Source Project 3c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * 4c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * Licensed under the Apache License, Version 2.0 (the "License"); 5c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * you may not use this file except in compliance with the License. 6c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * You may obtain a copy of the License at 7c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * 8c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * http://www.apache.org/licenses/LICENSE-2.0 9c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * 10c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * Unless required by applicable law or agreed to in writing, software 11c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * distributed under the License is distributed on an "AS IS" BASIS, 12c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * See the License for the specific language governing permissions and 14c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu * limitations under the License. 15c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu */ 16c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu 17c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu#ifndef LIBVULKAN_LAYERS_EXTENSIONS_H 18c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu#define LIBVULKAN_LAYERS_EXTENSIONS_H 1 19c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu 20c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu#include <vulkan/vulkan.h> 21c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu 22c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wunamespace vulkan { 23c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wunamespace api { 24c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu 25c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wustruct Layer; 2625700b452535ce7ae838bfe832392b46ed555ed2Chia-I Wu 27c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wuclass LayerRef { 28c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu public: 29bea09db9c2165f06771f3a3da423f4f85ac6347eChia-I Wu LayerRef(const Layer* layer, bool is_instance); 30c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu LayerRef(LayerRef&& other); 31c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu ~LayerRef(); 32c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu LayerRef(const LayerRef&) = delete; 33c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu LayerRef& operator=(const LayerRef&) = delete; 34c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu 35c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu const char* GetName() const; 3683506d84d00bbb35ecebb44261b2139bc40ef3e2Chia-I Wu uint32_t GetSpecVersion() const; 37c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu 38c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu // provides bool-like behavior 39c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu operator const Layer*() const { return layer_; } 40c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu 41c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu PFN_vkGetInstanceProcAddr GetGetInstanceProcAddr() const; 42c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu PFN_vkGetDeviceProcAddr GetGetDeviceProcAddr() const; 43c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu 44c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu bool SupportsExtension(const char* name) const; 45c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu 46c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu private: 4783506d84d00bbb35ecebb44261b2139bc40ef3e2Chia-I Wu const Layer* layer_; 48bea09db9c2165f06771f3a3da423f4f85ac6347eChia-I Wu bool is_instance_; 49c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu}; 50c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu 51c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wuvoid DiscoverLayers(); 5225700b452535ce7ae838bfe832392b46ed555ed2Chia-I Wu 5325700b452535ce7ae838bfe832392b46ed555ed2Chia-I Wuuint32_t GetLayerCount(); 5425700b452535ce7ae838bfe832392b46ed555ed2Chia-I Wuconst Layer& GetLayer(uint32_t index); 5525700b452535ce7ae838bfe832392b46ed555ed2Chia-I Wu 5625700b452535ce7ae838bfe832392b46ed555ed2Chia-I Wuconst VkLayerProperties& GetLayerProperties(const Layer& layer); 5725700b452535ce7ae838bfe832392b46ed555ed2Chia-I Wubool IsLayerGlobal(const Layer& layer); 5825700b452535ce7ae838bfe832392b46ed555ed2Chia-I Wu 59c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wuvoid GetInstanceLayerExtensions(const char* name, 60c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu const VkExtensionProperties** properties, 61c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu uint32_t* count); 62c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wuvoid GetDeviceLayerExtensions(const char* name, 63c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu const VkExtensionProperties** properties, 64c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu uint32_t* count); 65c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I WuLayerRef GetInstanceLayerRef(const char* name); 66c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I WuLayerRef GetDeviceLayerRef(const char* name); 67c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu 68c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu} // namespace api 69c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu} // namespace vulkan 70c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu 71c96880f2cd1d34ffb9e3d10d80f0a3ddcc5579a8Chia-I Wu#endif // LIBVULKAN_LAYERS_EXTENSIONS_H 72