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_