| /* |
| * 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()); |
| } |