Edit

kc3-lang/angle/src/libGL/entry_points_gl_4_6_autogen.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2019-10-31 14:33:26
    Hash : e9603921
    Message : Capture/Replay: Correct a few GLenum replay issues. This change refactors the GLenum utils into a non-autogenerated and an autogenerated portion. That makes it easier to modify the non-auto- generated bits to properly output GLenums even when the gl.xml data isn't totally correct. For instance, the "GetPName" group was missing a bunch of queries. Instead of trying to fix the GL we can simply fall back to querying the "Default" group when we return invalid enum. Also corrects a missing "0x" on hex output. Also allows the capture/replay sample to specify the correct binary data directory when testing a replay. Bug: angleproject:3611 Change-Id: I8e4c690b2850bb157a8cde8b057b20603e4b177d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1891008 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>

  • src/libGL/entry_points_gl_4_6_autogen.cpp
  • // GENERATED FILE - DO NOT EDIT.
    // Generated by generate_entry_points.py using data from gl.xml.
    //
    // 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.
    //
    // entry_points_gl_4_6_autogen.cpp:
    //   Defines the GL 4.6 entry points.
    
    #include "libGL/entry_points_gl_4_6_autogen.h"
    
    #include "libANGLE/Context.h"
    #include "libANGLE/Context.inl.h"
    #include "libANGLE/entry_points_utils.h"
    #include "libANGLE/gl_enum_utils.h"
    #include "libANGLE/validationEGL.h"
    #include "libANGLE/validationES.h"
    #include "libANGLE/validationES1.h"
    #include "libANGLE/validationES2.h"
    #include "libANGLE/validationES3.h"
    #include "libANGLE/validationES31.h"
    #include "libANGLE/validationES32.h"
    #include "libANGLE/validationESEXT.h"
    #include "libANGLE/validationGL46_autogen.h"
    #include "libGLESv2/global_state.h"
    
    namespace gl
    {
    void GL_APIENTRY MultiDrawArraysIndirectCount(GLenum mode,
                                                  const void *indirect,
                                                  GLintptr drawcount,
                                                  GLsizei maxdrawcount,
                                                  GLsizei stride)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glMultiDrawArraysIndirectCount",
              "context = %d, GLenum mode = %s, const void *indirect = 0x%016" PRIxPTR
              ", GLintptr drawcount = %llu, GLsizei maxdrawcount = %d, GLsizei stride = %d",
              CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)indirect,
              static_cast<unsigned long long>(drawcount), maxdrawcount, stride);
    
        if (context)
        {
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid                              = (context->skipValidation() ||
                                ValidateMultiDrawArraysIndirectCount(context, mode, indirect, drawcount,
                                                                     maxdrawcount, stride));
            if (isCallValid)
            {
                context->multiDrawArraysIndirectCount(mode, indirect, drawcount, maxdrawcount, stride);
            }
            ANGLE_CAPTURE(MultiDrawArraysIndirectCount, isCallValid, context, mode, indirect, drawcount,
                          maxdrawcount, stride);
        }
    }
    
    void GL_APIENTRY MultiDrawElementsIndirectCount(GLenum mode,
                                                    GLenum type,
                                                    const void *indirect,
                                                    GLintptr drawcount,
                                                    GLsizei maxdrawcount,
                                                    GLsizei stride)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glMultiDrawElementsIndirectCount",
              "context = %d, GLenum mode = %s, GLenum type = %s, const void *indirect = 0x%016" PRIxPTR
              ", GLintptr drawcount = %llu, GLsizei maxdrawcount = %d, GLsizei stride = %d",
              CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode),
              GLenumToString(GLenumGroup::DefaultGroup, type), (uintptr_t)indirect,
              static_cast<unsigned long long>(drawcount), maxdrawcount, stride);
    
        if (context)
        {
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid                              = (context->skipValidation() ||
                                ValidateMultiDrawElementsIndirectCount(
                                    context, mode, type, indirect, drawcount, maxdrawcount, stride));
            if (isCallValid)
            {
                context->multiDrawElementsIndirectCount(mode, type, indirect, drawcount, maxdrawcount,
                                                        stride);
            }
            ANGLE_CAPTURE(MultiDrawElementsIndirectCount, isCallValid, context, mode, type, indirect,
                          drawcount, maxdrawcount, stride);
        }
    }
    
    void GL_APIENTRY PolygonOffsetClamp(GLfloat factor, GLfloat units, GLfloat clamp)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glPolygonOffsetClamp",
              "context = %d, GLfloat factor = %f, GLfloat units = %f, GLfloat clamp = %f", CID(context),
              factor, units, clamp);
    
        if (context)
        {
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid                              = (context->skipValidation() ||
                                ValidatePolygonOffsetClamp(context, factor, units, clamp));
            if (isCallValid)
            {
                context->polygonOffsetClamp(factor, units, clamp);
            }
            ANGLE_CAPTURE(PolygonOffsetClamp, isCallValid, context, factor, units, clamp);
        }
    }
    
    void GL_APIENTRY SpecializeShader(GLuint shader,
                                      const GLchar *pEntryPoint,
                                      GLuint numSpecializationConstants,
                                      const GLuint *pConstantIndex,
                                      const GLuint *pConstantValue)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glSpecializeShader",
              "context = %d, GLuint shader = %u, const GLchar *pEntryPoint = 0x%016" PRIxPTR
              ", GLuint numSpecializationConstants = %u, const GLuint *pConstantIndex = 0x%016" PRIxPTR
              ", const GLuint *pConstantValue = 0x%016" PRIxPTR "",
              CID(context), shader, (uintptr_t)pEntryPoint, numSpecializationConstants,
              (uintptr_t)pConstantIndex, (uintptr_t)pConstantValue);
    
        if (context)
        {
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid =
                (context->skipValidation() ||
                 ValidateSpecializeShader(context, shader, pEntryPoint, numSpecializationConstants,
                                          pConstantIndex, pConstantValue));
            if (isCallValid)
            {
                context->specializeShader(shader, pEntryPoint, numSpecializationConstants,
                                          pConstantIndex, pConstantValue);
            }
            ANGLE_CAPTURE(SpecializeShader, isCallValid, context, shader, pEntryPoint,
                          numSpecializationConstants, pConstantIndex, pConstantValue);
        }
    }
    }  // namespace gl