| // 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_ |