Hash :
de09f8db
        
        Author :
  
        
        Date :
2021-09-02T18:21:37
        
      
Revert "GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY" This reverts commit 4b5a774e855af2493d64b0635f56053bd795c5c5. Reason for revert: broken on iOS and Skia Original change's description: > GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY > > Bug: angleproject:3020 > Change-Id: Iff460a1012d06e1c5feff84d91117de87e7c870a > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123167 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: angleproject:3020 Change-Id: I54d81a7b734d007f65ff97990008f5e6eb8536f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140453 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
//
// Copyright 2017 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.
//
// ClearMultiviewGL:
//   A helper for clearing multiview side-by-side and layered framebuffers.
//
#ifndef LIBANGLE_RENDERER_GL_CLEARMULTIVIEWGL_H_
#define LIBANGLE_RENDERER_GL_CLEARMULTIVIEWGL_H_
#include "angle_gl.h"
#include "libANGLE/Error.h"
#include "libANGLE/angletypes.h"
namespace gl
{
class FramebufferState;
}  // namespace gl
namespace rx
{
class FunctionsGL;
class StateManagerGL;
class ClearMultiviewGL : angle::NonCopyable
{
  public:
    // Enum containing the different types of Clear* commands.
    enum class ClearCommandType
    {
        Clear,
        ClearBufferfv,
        ClearBufferuiv,
        ClearBufferiv,
        ClearBufferfi
    };
  public:
    ClearMultiviewGL(const FunctionsGL *functions, StateManagerGL *stateManager);
    ~ClearMultiviewGL();
    ClearMultiviewGL(const ClearMultiviewGL &rht) = delete;
    ClearMultiviewGL &operator=(const ClearMultiviewGL &rht) = delete;
    ClearMultiviewGL(ClearMultiviewGL &&rht)                 = delete;
    ClearMultiviewGL &operator=(ClearMultiviewGL &&rht) = delete;
    void clearMultiviewFBO(const gl::FramebufferState &state,
                           const gl::Rectangle &scissorBase,
                           ClearCommandType clearCommandType,
                           GLbitfield mask,
                           GLenum buffer,
                           GLint drawbuffer,
                           const uint8_t *values,
                           GLfloat depth,
                           GLint stencil);
    void initializeResources();
  private:
    void attachTextures(const gl::FramebufferState &state, int layer);
    void detachTextures(const gl::FramebufferState &state);
    void clearLayeredFBO(const gl::FramebufferState &state,
                         ClearCommandType clearCommandType,
                         GLbitfield mask,
                         GLenum buffer,
                         GLint drawbuffer,
                         const uint8_t *values,
                         GLfloat depth,
                         GLint stencil);
    void genericClear(ClearCommandType clearCommandType,
                      GLbitfield mask,
                      GLenum buffer,
                      GLint drawbuffer,
                      const uint8_t *values,
                      GLfloat depth,
                      GLint stencil);
    const FunctionsGL *mFunctions;
    StateManagerGL *mStateManager;
    GLuint mFramebuffer;
};
}  // namespace rx
#endif  // LIBANGLE_RENDERER_GL_CLEARMULTIVIEWGL_H_