| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef GPU_COMMAND_BUFFER_COMMON_SHARED_IMAGE_CAPABILITIES_H_ |
| #define GPU_COMMAND_BUFFER_COMMON_SHARED_IMAGE_CAPABILITIES_H_ |
| |
| #include <stdint.h> |
| |
| #include <vector> |
| |
| #include "build/build_config.h" |
| #include "components/viz/common/resources/shared_image_format.h" |
| #include "gpu/command_buffer/common/gpu_command_buffer_common_export.h" |
| |
| namespace gpu { |
| |
| struct GPU_COMMAND_BUFFER_COMMON_EXPORT SharedImageCapabilities { |
| SharedImageCapabilities(); |
| SharedImageCapabilities(const SharedImageCapabilities& other); |
| ~SharedImageCapabilities(); |
| |
| bool supports_scanout_shared_images = false; |
| |
| #if BUILDFLAG(IS_WIN) |
| // On Windows, overlays are in general not supported. However, in some cases |
| // they are supported for the software video frame use case in particular. |
| // This cap details whether that support is present. |
| bool supports_scanout_shared_images_for_software_video_frames = false; |
| #endif |
| |
| bool supports_r16_shared_images = false; |
| bool supports_ycbcr_nv12_sampling = false; |
| bool supports_ycbcr_p010_sampling = false; |
| |
| // Biplanar YUV formats whose planes the active Skia backend can wrap as an |
| // SkSurface, i.e. that RASTER_WRITE can render into. Being listed here says |
| // nothing about whether a backing can be allocated. |
| std::vector<viz::SharedImageFormat> skia_writable_yuv_formats; |
| |
| bool is_r16f_supported = false; |
| bool disable_webgpu_shared_images = false; |
| bool disable_one_component_textures = false; |
| |
| bool shared_image_d3d = false; |
| #if BUILDFLAG(IS_WIN) |
| bool shared_image_swap_chain = false; |
| #endif |
| }; |
| |
| } // namespace gpu |
| |
| #endif // GPU_COMMAND_BUFFER_COMMON_SHARED_IMAGE_CAPABILITIES_H_ |