| // Copyright 2026 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_IOSURFACE_VALIDATION_H_ |
| #define GPU_COMMAND_BUFFER_COMMON_IOSURFACE_VALIDATION_H_ |
| |
| #include <string> |
| |
| #include "components/viz/common/resources/shared_image_format.h" |
| #include "gpu/command_buffer/common/gpu_command_buffer_common_export.h" |
| #include "ui/gfx/geometry/size.h" |
| #include "ui/gfx/mac/io_surface.h" |
| |
| namespace gpu { |
| |
| // Ensure that the IOSurface has the same size and pixel format as those |
| // specified by `size` and `format`. If `cpu_access` is specified, then also |
| // ensure that the IOSurface supports CPU access. A malicious client could lie |
| // about this, which, if subsequently used to determine parameters for bounds |
| // checking, could result in an out-of-bounds memory access. |
| bool GPU_COMMAND_BUFFER_COMMON_EXPORT |
| ValidateIOSurface(const gfx::ScopedIOSurface& io_surface, |
| viz::SharedImageFormat format, |
| gfx::Size size, |
| bool cpu_access, |
| std::string* out_error_str); |
| |
| } // namespace gpu |
| |
| #endif // GPU_COMMAND_BUFFER_COMMON_IOSURFACE_VALIDATION_H_ |