Commit 94463d58 by Geoff Lang

Add a state manager for the currently applied GL state.

BUG=angle:883 Change-Id: Ie69c883c5ee539f911480fdcd9e73c46a3001b33 Reviewed-on: https://chromium-review.googlesource.com/250930Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org> Reviewed-by: 's avatarKenneth Russell <kbr@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Tested-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 295ed4c4
......@@ -21,6 +21,7 @@
#include "libANGLE/renderer/gl/QueryGL.h"
#include "libANGLE/renderer/gl/RenderbufferGL.h"
#include "libANGLE/renderer/gl/ShaderGL.h"
#include "libANGLE/renderer/gl/StateManagerGL.h"
#include "libANGLE/renderer/gl/TextureGL.h"
#include "libANGLE/renderer/gl/TransformFeedbackGL.h"
#include "libANGLE/renderer/gl/VertexArrayGL.h"
......@@ -30,13 +31,17 @@ namespace rx
RendererGL::RendererGL(const FunctionsGL *functions)
: Renderer(),
mFunctions(functions)
mFunctions(functions),
mStateManager(nullptr)
{
ASSERT(mFunctions);
mStateManager = new StateManagerGL(mFunctions);
}
RendererGL::~RendererGL()
{}
{
SafeDelete(mStateManager);
}
gl::Error RendererGL::flush()
{
......
......@@ -14,6 +14,7 @@
namespace rx
{
class FunctionsGL;
class StateManagerGL;
class RendererGL : public Renderer
{
......@@ -76,6 +77,7 @@ class RendererGL : public Renderer
Workarounds generateWorkarounds() const override;
const FunctionsGL *mFunctions;
StateManagerGL *mStateManager;
};
}
......
//
// Copyright (c) 2015 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.
//
// StateManagerGL.h: Defines a class for caching applied OpenGL state
#include "libANGLE/renderer/gl/StateManagerGL.h"
#include "libANGLE/renderer/gl/FunctionsGL.h"
namespace rx
{
StateManagerGL::StateManagerGL(const FunctionsGL *functions)
: mFunctions(functions)
{
ASSERT(mFunctions);
}
}
//
// Copyright (c) 2015 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.
//
// StateManagerGL.h: Defines a class for caching applied OpenGL state
#ifndef LIBANGLE_RENDERER_GL_STATEMANAGERGL_H_
#define LIBANGLE_RENDERER_GL_STATEMANAGERGL_H_
#include "common/debug.h"
namespace rx
{
class FunctionsGL;
class StateManagerGL
{
public:
StateManagerGL(const FunctionsGL *functions);
private:
DISALLOW_COPY_AND_ASSIGN(StateManagerGL);
const FunctionsGL *mFunctions;
};
}
#endif // LIBANGLE_RENDERER_GL_STATEMANAGERGL_H_
......@@ -390,6 +390,8 @@
'libANGLE/renderer/gl/RendererGL.h',
'libANGLE/renderer/gl/ShaderGL.cpp',
'libANGLE/renderer/gl/ShaderGL.h',
'libANGLE/renderer/gl/StateManagerGL.cpp',
'libANGLE/renderer/gl/StateManagerGL.h',
'libANGLE/renderer/gl/SurfaceGL.cpp',
'libANGLE/renderer/gl/SurfaceGL.h',
'libANGLE/renderer/gl/TextureGL.cpp',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment