blob: 82f5f3d32d0958d16755ff3742169e64762411ab [file] [log] [blame]
/*
* Copyright 2023 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "src/gpu/ganesh/vk/GrVkContextThreadSafeProxy.h"
#include "include/core/SkRefCnt.h"
#include "include/gpu/GpuTypes.h"
#include "include/gpu/GrTypes.h"
#include "src/gpu/ganesh/vk/GrVkCaps.h"
class GrCaps;
struct GrContextOptions;
GrVkContextThreadSafeProxy::GrVkContextThreadSafeProxy(const GrContextOptions& opts)
: GrContextThreadSafeProxy(GrBackendApi::kVulkan, opts) {}
bool GrVkContextThreadSafeProxy::isValidCharacterizationForVulkan(
sk_sp<const GrCaps> caps,
bool isTextureable,
skgpu::Mipmapped isMipmapped,
skgpu::Protected isProtected,
bool vkRTSupportsInputAttachment,
bool forVulkanSecondaryCommandBuffer) {
if (forVulkanSecondaryCommandBuffer &&
(isTextureable || isMipmapped == skgpu::Mipmapped::kYes || vkRTSupportsInputAttachment)) {
return false;
}
const GrVkCaps* vkCaps = (const GrVkCaps*)caps.get();
// The potection status of the characterization and the context need to match
return isProtected == GrProtected(vkCaps->supportsProtectedContent());
}