skia2/include/gpu/vk/GrVkBackendContext.h

77 lines
3.8 KiB
C
Raw Normal View History

/*
* Copyright 2016 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef GrVkBackendContext_DEFINED
#define GrVkBackendContext_DEFINED
#include "include/core/SkRefCnt.h"
#include "include/gpu/vk/GrVkMemoryAllocator.h"
#include "include/gpu/vk/GrVkTypes.h"
Reland "Reland "Let client pass in full extension to GrVkBackendContext."" This reverts commit dc13c21b1e49ca1e16251d01bd1062157c5c1c2b. Reason for revert: fuchsia should be fixed Original change's description: > Revert "Reland "Let client pass in full extension to GrVkBackendContext."" > > This reverts commit a782dcb3c407a7e30d7c1263bf9965792088e786. > > Reason for revert: fuchsia changes reverted > > Original change's description: > > Reland "Let client pass in full extension to GrVkBackendContext." > > > > This reverts commit cb92b26e5ca6063bcf1a922109b8224e0b6eb4da. > > > > Reason for revert: <INSERT REASONING HERE> > > > > Original change's description: > > > Revert "Let client pass in full extension to GrVkBackendContext." > > > > > > This reverts commit 45c9dab4c3ec43cedb28d1b8c08e166fe0c2e767. > > > > > > Reason for revert: fucshia uses GrVkBackendContext. Need to revert earlier changes > > > > > > Original change's description: > > > > Let client pass in full extension to GrVkBackendContext. > > > > > > > > Bug: skia: > > > > Change-Id: I772ab4ccbca0f4f7e7d429d6c421b07d97f0606f > > > > Reviewed-on: https://skia-review.googlesource.com/131880 > > > > Reviewed-by: Jim Van Verth <jvanverth@google.com> > > > > Commit-Queue: Greg Daniel <egdaniel@google.com> > > > > > > TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com > > > > > > Change-Id: I1a765ff406c83cb234c3614b804fbed677d5a382 > > > No-Presubmit: true > > > No-Tree-Checks: true > > > No-Try: true > > > Bug: skia: > > > Reviewed-on: https://skia-review.googlesource.com/137901 > > > Reviewed-by: Greg Daniel <egdaniel@google.com> > > > Commit-Queue: Greg Daniel <egdaniel@google.com> > > > > TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com > > > > # Not skipping CQ checks because original CL landed > 1 day ago. > > > > Bug: skia: > > Change-Id: I0af797c51dde705473e9afaccb1d4b4423e8c41e > > Reviewed-on: https://skia-review.googlesource.com/138302 > > Commit-Queue: Greg Daniel <egdaniel@google.com> > > Reviewed-by: Greg Daniel <egdaniel@google.com> > > TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com > > Change-Id: Idf760d5ac6b82df33a4408079a0223be833058ad > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: skia: > Reviewed-on: https://skia-review.googlesource.com/138420 > Reviewed-by: Greg Daniel <egdaniel@google.com> > Commit-Queue: Greg Daniel <egdaniel@google.com> TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: skia: Change-Id: Ied1323b7197b600e895d85ac7e85d6f65985dabc Reviewed-on: https://skia-review.googlesource.com/139002 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-08-01 17:25:41 +00:00
class GrVkExtensions;
enum GrVkExtensionFlags {
kEXT_debug_report_GrVkExtensionFlag = 0x0001,
kNV_glsl_shader_GrVkExtensionFlag = 0x0002,
kKHR_surface_GrVkExtensionFlag = 0x0004,
kKHR_swapchain_GrVkExtensionFlag = 0x0008,
kKHR_win32_surface_GrVkExtensionFlag = 0x0010,
kKHR_android_surface_GrVkExtensionFlag = 0x0020,
kKHR_xcb_surface_GrVkExtensionFlag = 0x0040,
};
enum GrVkFeatureFlags {
kGeometryShader_GrVkFeatureFlag = 0x0001,
kDualSrcBlend_GrVkFeatureFlag = 0x0002,
kSampleRateShading_GrVkFeatureFlag = 0x0004,
};
// It is not guarenteed VkPhysicalDeviceProperties2 will be in the client's header so we forward
// declare it here to be safe.
struct VkPhysicalDeviceFeatures2;
// The BackendContext contains all of the base Vulkan objects needed by the GrVkGpu. The assumption
// is that the client will set these up and pass them to the GrVkGpu constructor. The VkDevice
// created must support at least one graphics queue, which is passed in as well.
// The QueueFamilyIndex must match the family of the given queue. It is needed for CommandPool
Reland "Reland "Make GrVkBackendContext no longer derive from SkRefCnt."" This reverts commit 007267bdb54d56ec978c97c6a6944afc2b6ff40b. Reason for revert: Hopefully fuchsia is fixed this time Original change's description: > Revert "Reland "Make GrVkBackendContext no longer derive from SkRefCnt."" > > This reverts commit 0db3a8846a4d05d55c36b7fa95fa6fbc1a6639cd. > > Reason for revert: fuchsia change reverted > > Original change's description: > > Reland "Make GrVkBackendContext no longer derive from SkRefCnt." > > > > This reverts commit 059a9ab4bcd07a4bfdbfef333c27ef3d277e0e46. > > > > Reason for revert: Fix landed in Fuchsia > > > > Original change's description: > > > Revert "Make GrVkBackendContext no longer derive from SkRefCnt." > > > > > > This reverts commit 93ae2337732bf206e6ef4faecc6b30c3881e8359. > > > > > > Reason for revert: <INSERT REASONING HERE> > > > > > > Original change's description: > > > > Make GrVkBackendContext no longer derive from SkRefCnt. > > > > > > > > Also moves the helper Create functions to VkTestUtils since no clients > > > > are using them anymore. > > > > > > > > Bug: skia: > > > > Change-Id: I7e8e4912e7ef6fb00a7e2a00407aed5e83211799 > > > > Reviewed-on: https://skia-review.googlesource.com/135323 > > > > Reviewed-by: Jim Van Verth <jvanverth@google.com> > > > > Reviewed-by: Brian Salomon <bsalomon@google.com> > > > > Commit-Queue: Greg Daniel <egdaniel@google.com> > > > > > > TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com > > > > > > # Not skipping CQ checks because original CL landed > 1 day ago. > > > > > > Bug: skia: > > > Change-Id: If7201917631dc22753ea3fa6e9d2984463e38e4c > > > Reviewed-on: https://skia-review.googlesource.com/137903 > > > Reviewed-by: Greg Daniel <egdaniel@google.com> > > > Commit-Queue: Greg Daniel <egdaniel@google.com> > > > > TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com > > > > # Not skipping CQ checks because original CL landed > 1 day ago. > > > > Bug: skia: > > Change-Id: Ia4b7c0bb2c7b5dba809d85c69f0b41b473140526 > > Reviewed-on: https://skia-review.googlesource.com/138181 > > Reviewed-by: Greg Daniel <egdaniel@google.com> > > Commit-Queue: Greg Daniel <egdaniel@google.com> > > TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com > > Change-Id: I3f7bc4a5e4e09512fe165303685c123ec3527e58 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: skia: > Reviewed-on: https://skia-review.googlesource.com/138422 > Reviewed-by: Greg Daniel <egdaniel@google.com> > Commit-Queue: Greg Daniel <egdaniel@google.com> TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: skia: Change-Id: I5705f1ae306707fe28559797e1bb8c2d57e12204 Reviewed-on: https://skia-review.googlesource.com/139000 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-07-02 20:15:37 +00:00
// creation, and any GrBackendObjects handed to us (e.g., for wrapped textures) needs to be created
// in or transitioned to that family. The refs held by members of this struct must be released
// (either by deleting the struct or manually releasing the refs) before the underlying vulkan
// device and instance are destroyed.
struct SK_API GrVkBackendContext {
VkInstance fInstance;
VkPhysicalDevice fPhysicalDevice;
VkDevice fDevice;
VkQueue fQueue;
uint32_t fGraphicsQueueIndex;
uint32_t fMinAPIVersion; // Deprecated. Set fInstanceVersion instead.
uint32_t fInstanceVersion = 0; // Deprecated. Set fMaxApiVersion instead
// The max api version set here should match the value set in VkApplicationInfo::apiVersion when
// then VkInstance was created.
uint32_t fMaxAPIVersion = 0;
uint32_t fExtensions = 0; // Deprecated. Use fVkExtensions instead.
const GrVkExtensions* fVkExtensions = nullptr;
uint32_t fFeatures; // Deprecated. Use fDeviceFeatures[2] instead.
// The client can create their VkDevice with either a VkPhysicalDeviceFeatures or
// VkPhysicalDeviceFeatures2 struct, thus we have to support taking both. The
// VkPhysicalDeviceFeatures2 struct is needed so we know if the client enabled any extension
// specific features. If fDeviceFeatures2 is not null then we ignore fDeviceFeatures. If both
// fDeviceFeatures and fDeviceFeatures2 are null we will assume no features are enabled.
const VkPhysicalDeviceFeatures* fDeviceFeatures = nullptr;
const VkPhysicalDeviceFeatures2* fDeviceFeatures2 = nullptr;
sk_sp<GrVkMemoryAllocator> fMemoryAllocator;
GrVkGetProc fGetProc = nullptr;
Reland "Reland "Make GrVkBackendContext no longer derive from SkRefCnt."" This reverts commit 007267bdb54d56ec978c97c6a6944afc2b6ff40b. Reason for revert: Hopefully fuchsia is fixed this time Original change's description: > Revert "Reland "Make GrVkBackendContext no longer derive from SkRefCnt."" > > This reverts commit 0db3a8846a4d05d55c36b7fa95fa6fbc1a6639cd. > > Reason for revert: fuchsia change reverted > > Original change's description: > > Reland "Make GrVkBackendContext no longer derive from SkRefCnt." > > > > This reverts commit 059a9ab4bcd07a4bfdbfef333c27ef3d277e0e46. > > > > Reason for revert: Fix landed in Fuchsia > > > > Original change's description: > > > Revert "Make GrVkBackendContext no longer derive from SkRefCnt." > > > > > > This reverts commit 93ae2337732bf206e6ef4faecc6b30c3881e8359. > > > > > > Reason for revert: <INSERT REASONING HERE> > > > > > > Original change's description: > > > > Make GrVkBackendContext no longer derive from SkRefCnt. > > > > > > > > Also moves the helper Create functions to VkTestUtils since no clients > > > > are using them anymore. > > > > > > > > Bug: skia: > > > > Change-Id: I7e8e4912e7ef6fb00a7e2a00407aed5e83211799 > > > > Reviewed-on: https://skia-review.googlesource.com/135323 > > > > Reviewed-by: Jim Van Verth <jvanverth@google.com> > > > > Reviewed-by: Brian Salomon <bsalomon@google.com> > > > > Commit-Queue: Greg Daniel <egdaniel@google.com> > > > > > > TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com > > > > > > # Not skipping CQ checks because original CL landed > 1 day ago. > > > > > > Bug: skia: > > > Change-Id: If7201917631dc22753ea3fa6e9d2984463e38e4c > > > Reviewed-on: https://skia-review.googlesource.com/137903 > > > Reviewed-by: Greg Daniel <egdaniel@google.com> > > > Commit-Queue: Greg Daniel <egdaniel@google.com> > > > > TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com > > > > # Not skipping CQ checks because original CL landed > 1 day ago. > > > > Bug: skia: > > Change-Id: Ia4b7c0bb2c7b5dba809d85c69f0b41b473140526 > > Reviewed-on: https://skia-review.googlesource.com/138181 > > Reviewed-by: Greg Daniel <egdaniel@google.com> > > Commit-Queue: Greg Daniel <egdaniel@google.com> > > TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com > > Change-Id: I3f7bc4a5e4e09512fe165303685c123ec3527e58 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: skia: > Reviewed-on: https://skia-review.googlesource.com/138422 > Reviewed-by: Greg Daniel <egdaniel@google.com> > Commit-Queue: Greg Daniel <egdaniel@google.com> TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: skia: Change-Id: I5705f1ae306707fe28559797e1bb8c2d57e12204 Reviewed-on: https://skia-review.googlesource.com/139000 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-07-02 20:15:37 +00:00
// This is deprecated and should be set to false. The client is responsible for managing the
// lifetime of the VkInstance and VkDevice objects.
bool fOwnsInstanceAndDevice = false;
// Indicates that we are working with protected content and all CommandPool and Queue operations
// should be done in a protected context.
GrProtected fProtectedContext = GrProtected::kNo;
};
#endif