Hash :
385b3e03
Author :
Date :
2018-03-21T09:43:28
Use packed enums on shader types in ANGLE renderer This patch uses a packed internal enum ShaderType everywhere we need a shader type instead of the GLenum value of the shader type. This patch also uses program::getAttachedShader(type) everywhere we need to get gl::Shader from a program in ANGLE. BUG=angleproject:2169 Change-Id: I28a7fa1cfe35622c57a486932911110688eaadec Reviewed-on: https://chromium-review.googlesource.com/972844 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@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
//
// Copyright (c) 2014 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.
//
// Compiler.h: Defines the gl::Compiler class, abstracting the ESSL compiler
// that a GL context holds.
#ifndef LIBANGLE_COMPILER_H_
#define LIBANGLE_COMPILER_H_
#include "GLSLANG/ShaderLang.h"
#include "libANGLE/Error.h"
#include "libANGLE/PackedGLEnums_autogen.h"
#include "libANGLE/RefCountObject.h"
namespace rx
{
class CompilerImpl;
class GLImplFactory;
}
namespace gl
{
class ContextState;
class Compiler final : public RefCountObjectNoID
{
public:
Compiler(rx::GLImplFactory *implFactory, const ContextState &data);
ShHandle getCompilerHandle(ShaderType shaderType);
ShShaderOutput getShaderOutputType() const { return mOutputType; }
const std::string &getBuiltinResourcesString(ShaderType type);
private:
~Compiler() override;
std::unique_ptr<rx::CompilerImpl> mImplementation;
ShShaderSpec mSpec;
ShShaderOutput mOutputType;
ShBuiltInResources mResources;
ShHandle mFragmentCompiler;
ShHandle mVertexCompiler;
ShHandle mComputeCompiler;
ShHandle mGeometryCompiler;
};
} // namespace gl
#endif // LIBANGLE_COMPILER_H_