1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2020 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 VkTestHelper_DEFINED 9cb93a386Sopenharmony_ci#define VkTestHelper_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "include/core/SkTypes.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_ci#ifdef SK_VULKAN 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_ci#include "include/core/SkRefCnt.h" 16cb93a386Sopenharmony_ci#include "include/gpu/vk/GrVkBackendContext.h" 17cb93a386Sopenharmony_ci#include "include/gpu/vk/GrVkExtensions.h" 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ciclass GrDirectContext; 20cb93a386Sopenharmony_ciclass SkSurface; 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_ci#define DECLARE_VK_PROC(name) PFN_vk##name fVk##name 23cb93a386Sopenharmony_ci 24cb93a386Sopenharmony_ciclass VkTestHelper { 25cb93a386Sopenharmony_cipublic: 26cb93a386Sopenharmony_ci VkTestHelper(bool isProtected) : fIsProtected(isProtected) {} 27cb93a386Sopenharmony_ci 28cb93a386Sopenharmony_ci ~VkTestHelper() { 29cb93a386Sopenharmony_ci this->cleanup(); 30cb93a386Sopenharmony_ci } 31cb93a386Sopenharmony_ci 32cb93a386Sopenharmony_ci bool init(); 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_ci GrDirectContext* directContext() { return fDirectContext.get(); } 35cb93a386Sopenharmony_ci 36cb93a386Sopenharmony_ciprivate: 37cb93a386Sopenharmony_ci void cleanup(); 38cb93a386Sopenharmony_ci 39cb93a386Sopenharmony_ci DECLARE_VK_PROC(DestroyInstance); 40cb93a386Sopenharmony_ci DECLARE_VK_PROC(DeviceWaitIdle); 41cb93a386Sopenharmony_ci DECLARE_VK_PROC(DestroyDevice); 42cb93a386Sopenharmony_ci 43cb93a386Sopenharmony_ci DECLARE_VK_PROC(GetPhysicalDeviceFormatProperties); 44cb93a386Sopenharmony_ci DECLARE_VK_PROC(GetPhysicalDeviceMemoryProperties); 45cb93a386Sopenharmony_ci 46cb93a386Sopenharmony_ci DECLARE_VK_PROC(CreateImage); 47cb93a386Sopenharmony_ci DECLARE_VK_PROC(DestroyImage); 48cb93a386Sopenharmony_ci DECLARE_VK_PROC(GetImageMemoryRequirements); 49cb93a386Sopenharmony_ci DECLARE_VK_PROC(AllocateMemory); 50cb93a386Sopenharmony_ci DECLARE_VK_PROC(FreeMemory); 51cb93a386Sopenharmony_ci DECLARE_VK_PROC(BindImageMemory); 52cb93a386Sopenharmony_ci DECLARE_VK_PROC(MapMemory); 53cb93a386Sopenharmony_ci DECLARE_VK_PROC(UnmapMemory); 54cb93a386Sopenharmony_ci DECLARE_VK_PROC(FlushMappedMemoryRanges); 55cb93a386Sopenharmony_ci DECLARE_VK_PROC(GetImageSubresourceLayout); 56cb93a386Sopenharmony_ci 57cb93a386Sopenharmony_ci bool fIsProtected = false; 58cb93a386Sopenharmony_ci VkDevice fDevice = VK_NULL_HANDLE; 59cb93a386Sopenharmony_ci 60cb93a386Sopenharmony_ci GrVkExtensions fExtensions; 61cb93a386Sopenharmony_ci VkPhysicalDeviceFeatures2 fFeatures = {}; 62cb93a386Sopenharmony_ci VkDebugReportCallbackEXT fDebugCallback = VK_NULL_HANDLE; 63cb93a386Sopenharmony_ci PFN_vkDestroyDebugReportCallbackEXT fDestroyDebugCallback = nullptr; 64cb93a386Sopenharmony_ci GrVkBackendContext fBackendContext; 65cb93a386Sopenharmony_ci sk_sp<GrDirectContext> fDirectContext; 66cb93a386Sopenharmony_ci}; 67cb93a386Sopenharmony_ci 68cb93a386Sopenharmony_ci#undef DECLARE_VK_PROC 69cb93a386Sopenharmony_ci 70cb93a386Sopenharmony_ci#endif // SK_VULKAN 71cb93a386Sopenharmony_ci#endif // VkTestHelper_DEFINED 72