Edit

kc3-lang/angle/src/libANGLE/PackedGLEnums_autogen.cpp

Branch :

  • Show log

    Commit

  • Author : Corentin Wallez
    Date : 2018-02-27 15:17:10
    Hash : 99d492c2
    Message : Use packed enums for the texture types and targets, part 2 This completes the refactor by using the packed enums in the gl:: layer and in the backends. The packed enum code generation is modified to support explicitly assigning values to the packed enums so that the TextureTarget cube map faces are in the correct order and easy to iterate over. BUG=angleproject:2169 Change-Id: I5903235e684ccf382e92a8a1e10c5c85b4b16a04 Reviewed-on: https://chromium-review.googlesource.com/939994 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>

  • src/libANGLE/PackedGLEnums_autogen.cpp
  • // GENERATED FILE - DO NOT EDIT.
    // Generated by gen_packed_gl_enums.py using data from packed_gl_enums.json.
    //
    // Copyright 2018 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.
    //
    // PackedGLEnums_autogen.cpp:
    //   Implements ANGLE-specific enums classes for GLEnum and functions operating
    //   on them.
    
    #include "libANGLE/PackedGLEnums_autogen.h"
    #include "common/debug.h"
    
    namespace gl
    {
    
    template <>
    BufferBinding FromGLenum<BufferBinding>(GLenum from)
    {
        switch (from)
        {
            case GL_ARRAY_BUFFER:
                return BufferBinding::Array;
            case GL_ATOMIC_COUNTER_BUFFER:
                return BufferBinding::AtomicCounter;
            case GL_COPY_READ_BUFFER:
                return BufferBinding::CopyRead;
            case GL_COPY_WRITE_BUFFER:
                return BufferBinding::CopyWrite;
            case GL_DISPATCH_INDIRECT_BUFFER:
                return BufferBinding::DispatchIndirect;
            case GL_DRAW_INDIRECT_BUFFER:
                return BufferBinding::DrawIndirect;
            case GL_ELEMENT_ARRAY_BUFFER:
                return BufferBinding::ElementArray;
            case GL_PIXEL_PACK_BUFFER:
                return BufferBinding::PixelPack;
            case GL_PIXEL_UNPACK_BUFFER:
                return BufferBinding::PixelUnpack;
            case GL_SHADER_STORAGE_BUFFER:
                return BufferBinding::ShaderStorage;
            case GL_TRANSFORM_FEEDBACK_BUFFER:
                return BufferBinding::TransformFeedback;
            case GL_UNIFORM_BUFFER:
                return BufferBinding::Uniform;
            default:
                return BufferBinding::InvalidEnum;
        }
    }
    
    GLenum ToGLenum(BufferBinding from)
    {
        switch (from)
        {
            case BufferBinding::Array:
                return GL_ARRAY_BUFFER;
            case BufferBinding::AtomicCounter:
                return GL_ATOMIC_COUNTER_BUFFER;
            case BufferBinding::CopyRead:
                return GL_COPY_READ_BUFFER;
            case BufferBinding::CopyWrite:
                return GL_COPY_WRITE_BUFFER;
            case BufferBinding::DispatchIndirect:
                return GL_DISPATCH_INDIRECT_BUFFER;
            case BufferBinding::DrawIndirect:
                return GL_DRAW_INDIRECT_BUFFER;
            case BufferBinding::ElementArray:
                return GL_ELEMENT_ARRAY_BUFFER;
            case BufferBinding::PixelPack:
                return GL_PIXEL_PACK_BUFFER;
            case BufferBinding::PixelUnpack:
                return GL_PIXEL_UNPACK_BUFFER;
            case BufferBinding::ShaderStorage:
                return GL_SHADER_STORAGE_BUFFER;
            case BufferBinding::TransformFeedback:
                return GL_TRANSFORM_FEEDBACK_BUFFER;
            case BufferBinding::Uniform:
                return GL_UNIFORM_BUFFER;
            default:
                UNREACHABLE();
                return GL_NONE;
        }
    }
    
    template <>
    BufferUsage FromGLenum<BufferUsage>(GLenum from)
    {
        switch (from)
        {
            case GL_DYNAMIC_COPY:
                return BufferUsage::DynamicCopy;
            case GL_DYNAMIC_DRAW:
                return BufferUsage::DynamicDraw;
            case GL_DYNAMIC_READ:
                return BufferUsage::DynamicRead;
            case GL_STATIC_COPY:
                return BufferUsage::StaticCopy;
            case GL_STATIC_DRAW:
                return BufferUsage::StaticDraw;
            case GL_STATIC_READ:
                return BufferUsage::StaticRead;
            case GL_STREAM_COPY:
                return BufferUsage::StreamCopy;
            case GL_STREAM_DRAW:
                return BufferUsage::StreamDraw;
            case GL_STREAM_READ:
                return BufferUsage::StreamRead;
            default:
                return BufferUsage::InvalidEnum;
        }
    }
    
    GLenum ToGLenum(BufferUsage from)
    {
        switch (from)
        {
            case BufferUsage::DynamicCopy:
                return GL_DYNAMIC_COPY;
            case BufferUsage::DynamicDraw:
                return GL_DYNAMIC_DRAW;
            case BufferUsage::DynamicRead:
                return GL_DYNAMIC_READ;
            case BufferUsage::StaticCopy:
                return GL_STATIC_COPY;
            case BufferUsage::StaticDraw:
                return GL_STATIC_DRAW;
            case BufferUsage::StaticRead:
                return GL_STATIC_READ;
            case BufferUsage::StreamCopy:
                return GL_STREAM_COPY;
            case BufferUsage::StreamDraw:
                return GL_STREAM_DRAW;
            case BufferUsage::StreamRead:
                return GL_STREAM_READ;
            default:
                UNREACHABLE();
                return GL_NONE;
        }
    }
    
    template <>
    CullFaceMode FromGLenum<CullFaceMode>(GLenum from)
    {
        switch (from)
        {
            case GL_BACK:
                return CullFaceMode::Back;
            case GL_FRONT:
                return CullFaceMode::Front;
            case GL_FRONT_AND_BACK:
                return CullFaceMode::FrontAndBack;
            default:
                return CullFaceMode::InvalidEnum;
        }
    }
    
    GLenum ToGLenum(CullFaceMode from)
    {
        switch (from)
        {
            case CullFaceMode::Back:
                return GL_BACK;
            case CullFaceMode::Front:
                return GL_FRONT;
            case CullFaceMode::FrontAndBack:
                return GL_FRONT_AND_BACK;
            default:
                UNREACHABLE();
                return GL_NONE;
        }
    }
    
    template <>
    TextureTarget FromGLenum<TextureTarget>(GLenum from)
    {
        switch (from)
        {
            case GL_TEXTURE_2D:
                return TextureTarget::_2D;
            case GL_TEXTURE_2D_ARRAY:
                return TextureTarget::_2DArray;
            case GL_TEXTURE_2D_MULTISAMPLE:
                return TextureTarget::_2DMultisample;
            case GL_TEXTURE_3D:
                return TextureTarget::_3D;
            case GL_TEXTURE_EXTERNAL_OES:
                return TextureTarget::External;
            case GL_TEXTURE_RECTANGLE_ANGLE:
                return TextureTarget::Rectangle;
            case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
                return TextureTarget::CubeMapPositiveX;
            case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
                return TextureTarget::CubeMapNegativeX;
            case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
                return TextureTarget::CubeMapPositiveY;
            case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
                return TextureTarget::CubeMapNegativeY;
            case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
                return TextureTarget::CubeMapPositiveZ;
            case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
                return TextureTarget::CubeMapNegativeZ;
            default:
                return TextureTarget::InvalidEnum;
        }
    }
    
    GLenum ToGLenum(TextureTarget from)
    {
        switch (from)
        {
            case TextureTarget::_2D:
                return GL_TEXTURE_2D;
            case TextureTarget::_2DArray:
                return GL_TEXTURE_2D_ARRAY;
            case TextureTarget::_2DMultisample:
                return GL_TEXTURE_2D_MULTISAMPLE;
            case TextureTarget::_3D:
                return GL_TEXTURE_3D;
            case TextureTarget::External:
                return GL_TEXTURE_EXTERNAL_OES;
            case TextureTarget::Rectangle:
                return GL_TEXTURE_RECTANGLE_ANGLE;
            case TextureTarget::CubeMapPositiveX:
                return GL_TEXTURE_CUBE_MAP_POSITIVE_X;
            case TextureTarget::CubeMapNegativeX:
                return GL_TEXTURE_CUBE_MAP_NEGATIVE_X;
            case TextureTarget::CubeMapPositiveY:
                return GL_TEXTURE_CUBE_MAP_POSITIVE_Y;
            case TextureTarget::CubeMapNegativeY:
                return GL_TEXTURE_CUBE_MAP_NEGATIVE_Y;
            case TextureTarget::CubeMapPositiveZ:
                return GL_TEXTURE_CUBE_MAP_POSITIVE_Z;
            case TextureTarget::CubeMapNegativeZ:
                return GL_TEXTURE_CUBE_MAP_NEGATIVE_Z;
            default:
                UNREACHABLE();
                return GL_NONE;
        }
    }
    
    template <>
    TextureType FromGLenum<TextureType>(GLenum from)
    {
        switch (from)
        {
            case GL_TEXTURE_2D:
                return TextureType::_2D;
            case GL_TEXTURE_2D_ARRAY:
                return TextureType::_2DArray;
            case GL_TEXTURE_2D_MULTISAMPLE:
                return TextureType::_2DMultisample;
            case GL_TEXTURE_3D:
                return TextureType::_3D;
            case GL_TEXTURE_EXTERNAL_OES:
                return TextureType::External;
            case GL_TEXTURE_RECTANGLE_ANGLE:
                return TextureType::Rectangle;
            case GL_TEXTURE_CUBE_MAP:
                return TextureType::CubeMap;
            default:
                return TextureType::InvalidEnum;
        }
    }
    
    GLenum ToGLenum(TextureType from)
    {
        switch (from)
        {
            case TextureType::_2D:
                return GL_TEXTURE_2D;
            case TextureType::_2DArray:
                return GL_TEXTURE_2D_ARRAY;
            case TextureType::_2DMultisample:
                return GL_TEXTURE_2D_MULTISAMPLE;
            case TextureType::_3D:
                return GL_TEXTURE_3D;
            case TextureType::External:
                return GL_TEXTURE_EXTERNAL_OES;
            case TextureType::Rectangle:
                return GL_TEXTURE_RECTANGLE_ANGLE;
            case TextureType::CubeMap:
                return GL_TEXTURE_CUBE_MAP;
            default:
                UNREACHABLE();
                return GL_NONE;
        }
    }
    
    }  // namespace gl