1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2016 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#ifndef VkTestContext_DEFINED 9cb93a386Sopenharmony_ci#define VkTestContext_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "tools/gpu/TestContext.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_ci#ifdef SK_VULKAN 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_ci#include "include/gpu/vk/GrVkBackendContext.h" 16cb93a386Sopenharmony_ci#include "tools/gpu/vk/GrVulkanDefines.h" 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_ciclass GrVkExtensions; 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_cinamespace sk_gpu_test { 21cb93a386Sopenharmony_ciclass VkTestContext : public TestContext { 22cb93a386Sopenharmony_cipublic: 23cb93a386Sopenharmony_ci GrBackendApi backend() override { return GrBackendApi::kVulkan; } 24cb93a386Sopenharmony_ci 25cb93a386Sopenharmony_ci const GrVkBackendContext& getVkBackendContext() const { 26cb93a386Sopenharmony_ci return fVk; 27cb93a386Sopenharmony_ci } 28cb93a386Sopenharmony_ci 29cb93a386Sopenharmony_ci const GrVkExtensions* getVkExtensions() const { 30cb93a386Sopenharmony_ci return fExtensions; 31cb93a386Sopenharmony_ci } 32cb93a386Sopenharmony_ci 33cb93a386Sopenharmony_ci const VkPhysicalDeviceFeatures2* getVkFeatures() const { 34cb93a386Sopenharmony_ci return fFeatures; 35cb93a386Sopenharmony_ci } 36cb93a386Sopenharmony_ci 37cb93a386Sopenharmony_ciprotected: 38cb93a386Sopenharmony_ci VkTestContext(const GrVkBackendContext& vk, const GrVkExtensions* extensions, 39cb93a386Sopenharmony_ci const VkPhysicalDeviceFeatures2* features, bool ownsContext, 40cb93a386Sopenharmony_ci VkDebugReportCallbackEXT debugCallback, 41cb93a386Sopenharmony_ci PFN_vkDestroyDebugReportCallbackEXT destroyCallback) 42cb93a386Sopenharmony_ci : fVk(vk) 43cb93a386Sopenharmony_ci , fExtensions(extensions) 44cb93a386Sopenharmony_ci , fFeatures(features) 45cb93a386Sopenharmony_ci , fOwnsContext(ownsContext) 46cb93a386Sopenharmony_ci , fDebugCallback(debugCallback) 47cb93a386Sopenharmony_ci , fDestroyDebugReportCallbackEXT(destroyCallback) {} 48cb93a386Sopenharmony_ci 49cb93a386Sopenharmony_ci GrVkBackendContext fVk; 50cb93a386Sopenharmony_ci const GrVkExtensions* fExtensions; 51cb93a386Sopenharmony_ci const VkPhysicalDeviceFeatures2* fFeatures; 52cb93a386Sopenharmony_ci bool fOwnsContext; 53cb93a386Sopenharmony_ci VkDebugReportCallbackEXT fDebugCallback = VK_NULL_HANDLE; 54cb93a386Sopenharmony_ci PFN_vkDestroyDebugReportCallbackEXT fDestroyDebugReportCallbackEXT = nullptr; 55cb93a386Sopenharmony_ci 56cb93a386Sopenharmony_ciprivate: 57cb93a386Sopenharmony_ci using INHERITED = TestContext; 58cb93a386Sopenharmony_ci}; 59cb93a386Sopenharmony_ci 60cb93a386Sopenharmony_ci/** 61cb93a386Sopenharmony_ci * Creates Vk context object bound to the native Vk library. 62cb93a386Sopenharmony_ci */ 63cb93a386Sopenharmony_ciVkTestContext* CreatePlatformVkTestContext(VkTestContext*); 64cb93a386Sopenharmony_ci 65cb93a386Sopenharmony_ci} // namespace sk_gpu_test 66cb93a386Sopenharmony_ci 67cb93a386Sopenharmony_ci#endif 68cb93a386Sopenharmony_ci 69cb93a386Sopenharmony_ci#endif 70