Edit

kc3-lang/angle/src/libANGLE/capture/gl_enum_utils.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2021-02-10 11:20:16
    Hash : 6fc10389
    Message : Move Frame Capture to capture/ folder. This will make it easier to trigger the trace tests when these files are modified. Bug: angleproject:5530 Change-Id: I5f0c450595b380cd91b20c1477dc1845bee35dd9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2686120 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>

  • src/libANGLE/capture/gl_enum_utils.cpp
  • //
    // Copyright 2019 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.
    //
    // gl_enum_utils.cpp:
    //   Utility functions for converting GLenums to string.
    
    #include "libANGLE/capture/gl_enum_utils.h"
    
    #include "common/bitset_utils.h"
    
    #include <iomanip>
    #include <sstream>
    
    namespace gl
    {
    const char kUnknownGLenumString[] = "EnumUnknown";
    
    void OutputGLenumString(std::ostream &out, GLenumGroup enumGroup, unsigned int value)
    {
        const char *enumStr = GLenumToString(enumGroup, value);
        if (enumStr != kUnknownGLenumString)
        {
            out << enumStr;
            return;
        }
    
        if (enumGroup != GLenumGroup::DefaultGroup)
        {
            // Retry with the "Default" group
            enumStr = GLenumToString(GLenumGroup::DefaultGroup, value);
            if (enumStr != kUnknownGLenumString)
            {
                out << enumStr;
                return;
            }
        }
    
        out << std::hex << "0x" << std::setfill('0') << std::setw(4) << value << std::dec;
    }
    
    void OutputGLbitfieldString(std::ostream &out, GLenumGroup enumGroup, unsigned int value)
    {
        out << GLbitfieldToString(enumGroup, value);
    }
    
    const char *GLbooleanToString(unsigned int value)
    {
        switch (value)
        {
            case 0x0:
                return "GL_FALSE";
            case 0x1:
                return "GL_TRUE";
            default:
                return kUnknownGLenumString;
        }
    }
    
    std::string GLbitfieldToString(GLenumGroup enumGroup, unsigned int value)
    {
        std::stringstream st;
    
        if (value == 0)
        {
            return "0";
        }
    
        const angle::BitSet<32> bitSet(value);
        bool first = true;
        for (const auto index : bitSet)
        {
            if (!first)
            {
                st << " | ";
            }
            first = false;
    
            unsigned int mask = 1u << index;
            OutputGLenumString(st, enumGroup, mask);
        }
    
        return st.str();
    }
    }  // namespace gl