Edit

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

Branch :

  • Show log

    Commit

  • Author : Tobin Ehlis
    Date : 2019-08-13 14:13:35
    Hash : a2ec1344
    Message : Add shared mutex to frontend Add shared mutex to frontend API entrypoints that is only enabled when ANGLE is being used with a shared context. Bug: angleproject:2464 Change-Id: I0d918e37d9579dccd013dc88f563bed7de7ee55f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1685712 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>

  • 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_autogen.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/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)
    {
        EVENT("(GLenum mode = %s, const void *indirect = 0x%016" PRIxPTR
              ", GLintptr drawcount = %llu, GLsizei maxdrawcount = %d, GLsizei stride = %d)",
              GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)indirect,
              static_cast<unsigned long long>(drawcount), maxdrawcount, stride);
    
        Context *context = GetValidGlobalContext();
        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)
    {
        EVENT("(GLenum mode = %s, GLenum type = %s, const void *indirect = 0x%016" PRIxPTR
              ", GLintptr drawcount = %llu, GLsizei maxdrawcount = %d, GLsizei stride = %d)",
              GLenumToString(GLenumGroup::PrimitiveType, mode),
              GLenumToString(GLenumGroup::DefaultGroup, type), (uintptr_t)indirect,
              static_cast<unsigned long long>(drawcount), maxdrawcount, stride);
    
        Context *context = GetValidGlobalContext();
        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)
    {
        EVENT("(GLfloat factor = %f, GLfloat units = %f, GLfloat clamp = %f)", factor, units, clamp);
    
        Context *context = GetValidGlobalContext();
        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)
    {
        EVENT("(GLuint shader = %u, const GLchar *pEntryPoint = 0x%016" PRIxPTR
              ", GLuint numSpecializationConstants = %u, const GLuint *pConstantIndex = 0x%016" PRIxPTR
              ", const GLuint *pConstantValue = 0x%016" PRIxPTR ")",
              shader, (uintptr_t)pEntryPoint, numSpecializationConstants, (uintptr_t)pConstantIndex,
              (uintptr_t)pConstantValue);
    
        Context *context = GetValidGlobalContext();
        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