1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2020 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef VkTestHelper_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define VkTestHelper_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkTypes.h" 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Worker #ifdef SK_VULKAN 14*c8dee2aaSAndroid Build Coastguard Worker 15*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h" 16*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/vk/VulkanBackendContext.h" 17*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/vk/VulkanExtensions.h" 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Worker class GrDirectContext; 20*c8dee2aaSAndroid Build Coastguard Worker class SkSurface; 21*c8dee2aaSAndroid Build Coastguard Worker struct SkISize; 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard Worker namespace skiatest { 24*c8dee2aaSAndroid Build Coastguard Worker enum class TestType : uint8_t; 25*c8dee2aaSAndroid Build Coastguard Worker } 26*c8dee2aaSAndroid Build Coastguard Worker 27*c8dee2aaSAndroid Build Coastguard Worker namespace skgpu::graphite { 28*c8dee2aaSAndroid Build Coastguard Worker class Context; 29*c8dee2aaSAndroid Build Coastguard Worker class Recorder; 30*c8dee2aaSAndroid Build Coastguard Worker }; 31*c8dee2aaSAndroid Build Coastguard Worker 32*c8dee2aaSAndroid Build Coastguard Worker #define DECLARE_VK_PROC(name) PFN_vk##name fVk##name 33*c8dee2aaSAndroid Build Coastguard Worker 34*c8dee2aaSAndroid Build Coastguard Worker class VkTestHelper { 35*c8dee2aaSAndroid Build Coastguard Worker public: 36*c8dee2aaSAndroid Build Coastguard Worker static std::unique_ptr<VkTestHelper> Make(skiatest::TestType, bool isProtected); 37*c8dee2aaSAndroid Build Coastguard Worker 38*c8dee2aaSAndroid Build Coastguard Worker virtual ~VkTestHelper(); 39*c8dee2aaSAndroid Build Coastguard Worker 40*c8dee2aaSAndroid Build Coastguard Worker virtual bool isValid() const = 0; 41*c8dee2aaSAndroid Build Coastguard Worker 42*c8dee2aaSAndroid Build Coastguard Worker virtual sk_sp<SkSurface> createSurface(SkISize, bool textureable, bool isProtected) = 0; 43*c8dee2aaSAndroid Build Coastguard Worker virtual void submitAndWaitForCompletion(bool* completionMarker) = 0; 44*c8dee2aaSAndroid Build Coastguard Worker directContext()45*c8dee2aaSAndroid Build Coastguard Worker virtual GrDirectContext* directContext() { return nullptr; } recorder()46*c8dee2aaSAndroid Build Coastguard Worker virtual skgpu::graphite::Recorder* recorder() { return nullptr; } context()47*c8dee2aaSAndroid Build Coastguard Worker virtual skgpu::graphite::Context* context() { return nullptr; } 48*c8dee2aaSAndroid Build Coastguard Worker 49*c8dee2aaSAndroid Build Coastguard Worker protected: VkTestHelper(bool isProtected)50*c8dee2aaSAndroid Build Coastguard Worker VkTestHelper(bool isProtected) : fIsProtected(isProtected) {} 51*c8dee2aaSAndroid Build Coastguard Worker 52*c8dee2aaSAndroid Build Coastguard Worker bool setupBackendContext(); 53*c8dee2aaSAndroid Build Coastguard Worker virtual bool init() = 0; 54*c8dee2aaSAndroid Build Coastguard Worker 55*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(DestroyInstance); 56*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(DeviceWaitIdle); 57*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(DestroyDevice); 58*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(GetDeviceProcAddr); 59*c8dee2aaSAndroid Build Coastguard Worker 60*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(GetPhysicalDeviceFormatProperties); 61*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(GetPhysicalDeviceMemoryProperties); 62*c8dee2aaSAndroid Build Coastguard Worker 63*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(CreateImage); 64*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(DestroyImage); 65*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(GetImageMemoryRequirements); 66*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(AllocateMemory); 67*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(FreeMemory); 68*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(BindImageMemory); 69*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(MapMemory); 70*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(UnmapMemory); 71*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(FlushMappedMemoryRanges); 72*c8dee2aaSAndroid Build Coastguard Worker DECLARE_VK_PROC(GetImageSubresourceLayout); 73*c8dee2aaSAndroid Build Coastguard Worker 74*c8dee2aaSAndroid Build Coastguard Worker bool fIsProtected = false; 75*c8dee2aaSAndroid Build Coastguard Worker VkDevice fDevice = VK_NULL_HANDLE; 76*c8dee2aaSAndroid Build Coastguard Worker 77*c8dee2aaSAndroid Build Coastguard Worker skgpu::VulkanExtensions fExtensions; 78*c8dee2aaSAndroid Build Coastguard Worker VkPhysicalDeviceFeatures2 fFeatures = {}; 79*c8dee2aaSAndroid Build Coastguard Worker VkDebugReportCallbackEXT fDebugCallback = VK_NULL_HANDLE; 80*c8dee2aaSAndroid Build Coastguard Worker PFN_vkDestroyDebugReportCallbackEXT fDestroyDebugCallback = nullptr; 81*c8dee2aaSAndroid Build Coastguard Worker skgpu::VulkanBackendContext fBackendContext; 82*c8dee2aaSAndroid Build Coastguard Worker }; 83*c8dee2aaSAndroid Build Coastguard Worker 84*c8dee2aaSAndroid Build Coastguard Worker #undef DECLARE_VK_PROC 85*c8dee2aaSAndroid Build Coastguard Worker 86*c8dee2aaSAndroid Build Coastguard Worker #endif // SK_VULKAN 87*c8dee2aaSAndroid Build Coastguard Worker #endif // VkTestHelper_DEFINED 88