// // Copyright 2022 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // PixelLocalStorage.h: Defines the renderer-agnostic container classes // gl::PixelLocalStorage and gl::PixelLocalStoragePlane for // ANGLE_shader_pixel_local_storage. #ifndef LIBANGLE_PIXEL_LOCAL_STORAGE_H_ #define LIBANGLE_PIXEL_LOCAL_STORAGE_H_ #include "GLSLANG/ShaderLang.h" #include "angle_gl.h" #include "libANGLE/ImageIndex.h" #include "libANGLE/angletypes.h" namespace gl { struct Caps; class Context; class Texture; // Holds the configuration of an ANGLE_shader_pixel_local_storage plane. // // Unlike normal framebuffer attachments, pixel local storage planes don't take effect until the // application calls glBeginPixelLocalStorageANGLE, and the manner in which they take effect is // highly dependent on the backend implementation. A PixelLocalStoragePlane is just a plain data // description what to set up later once PLS is enabled. class PixelLocalStoragePlane : angle::NonCopyable, public angle::ObserverInterface { … }; // Manages a collection of PixelLocalStoragePlanes and applies them to ANGLE's GL state. // // The main magic of ANGLE_shader_pixel_local_storage happens inside shaders, so we just emulate the // client API on top of ANGLE's OpenGL ES API for simplicity. class PixelLocalStorage { … }; } // namespace gl #endif // LIBANGLE_PIXEL_LOCAL_STORAGE_H_