Edit

kc3-lang/angle/src/libGL/entry_points_gl_4_4_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_4_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_4_autogen.cpp:
    //   Defines the GL 4.4 entry points.
    
    #include "libGL/entry_points_gl_4_4_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/validationGL44_autogen.h"
    #include "libGLESv2/global_state.h"
    
    namespace gl
    {
    void GL_APIENTRY BindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glBindBuffersBase",
              "context = %d, GLenum target = %s, GLuint first = %u, GLsizei count = %d, const GLuint "
              "*buffers = 0x%016" PRIxPTR "",
              CID(context), GLenumToString(GLenumGroup::BufferTargetARB, target), first, count,
              (uintptr_t)buffers);
    
        if (context)
        {
            const BufferID *buffersPacked                 = FromGL<const BufferID *>(buffers);
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid                              = (context->skipValidation() ||
                                ValidateBindBuffersBase(context, target, first, count, buffersPacked));
            if (isCallValid)
            {
                context->bindBuffersBase(target, first, count, buffersPacked);
            }
            ANGLE_CAPTURE(BindBuffersBase, isCallValid, context, target, first, count, buffersPacked);
        }
    }
    
    void GL_APIENTRY BindBuffersRange(GLenum target,
                                      GLuint first,
                                      GLsizei count,
                                      const GLuint *buffers,
                                      const GLintptr *offsets,
                                      const GLsizeiptr *sizes)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glBindBuffersRange",
              "context = %d, GLenum target = %s, GLuint first = %u, GLsizei count = %d, const GLuint "
              "*buffers = 0x%016" PRIxPTR ", const GLintptr *offsets = 0x%016" PRIxPTR
              ", const GLsizeiptr *sizes = 0x%016" PRIxPTR "",
              CID(context), GLenumToString(GLenumGroup::BufferTargetARB, target), first, count,
              (uintptr_t)buffers, (uintptr_t)offsets, (uintptr_t)sizes);
    
        if (context)
        {
            const BufferID *buffersPacked                 = FromGL<const BufferID *>(buffers);
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid =
                (context->skipValidation() || ValidateBindBuffersRange(context, target, first, count,
                                                                       buffersPacked, offsets, sizes));
            if (isCallValid)
            {
                context->bindBuffersRange(target, first, count, buffersPacked, offsets, sizes);
            }
            ANGLE_CAPTURE(BindBuffersRange, isCallValid, context, target, first, count, buffersPacked,
                          offsets, sizes);
        }
    }
    
    void GL_APIENTRY BindImageTextures(GLuint first, GLsizei count, const GLuint *textures)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glBindImageTextures",
              "context = %d, GLuint first = %u, GLsizei count = %d, const GLuint *textures = "
              "0x%016" PRIxPTR "",
              CID(context), first, count, (uintptr_t)textures);
    
        if (context)
        {
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid                              = (context->skipValidation() ||
                                ValidateBindImageTextures(context, first, count, textures));
            if (isCallValid)
            {
                context->bindImageTextures(first, count, textures);
            }
            ANGLE_CAPTURE(BindImageTextures, isCallValid, context, first, count, textures);
        }
    }
    
    void GL_APIENTRY BindSamplers(GLuint first, GLsizei count, const GLuint *samplers)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glBindSamplers",
              "context = %d, GLuint first = %u, GLsizei count = %d, const GLuint *samplers = "
              "0x%016" PRIxPTR "",
              CID(context), first, count, (uintptr_t)samplers);
    
        if (context)
        {
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid =
                (context->skipValidation() || ValidateBindSamplers(context, first, count, samplers));
            if (isCallValid)
            {
                context->bindSamplers(first, count, samplers);
            }
            ANGLE_CAPTURE(BindSamplers, isCallValid, context, first, count, samplers);
        }
    }
    
    void GL_APIENTRY BindTextures(GLuint first, GLsizei count, const GLuint *textures)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glBindTextures",
              "context = %d, GLuint first = %u, GLsizei count = %d, const GLuint *textures = "
              "0x%016" PRIxPTR "",
              CID(context), first, count, (uintptr_t)textures);
    
        if (context)
        {
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid =
                (context->skipValidation() || ValidateBindTextures(context, first, count, textures));
            if (isCallValid)
            {
                context->bindTextures(first, count, textures);
            }
            ANGLE_CAPTURE(BindTextures, isCallValid, context, first, count, textures);
        }
    }
    
    void GL_APIENTRY BindVertexBuffers(GLuint first,
                                       GLsizei count,
                                       const GLuint *buffers,
                                       const GLintptr *offsets,
                                       const GLsizei *strides)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glBindVertexBuffers",
              "context = %d, GLuint first = %u, GLsizei count = %d, const GLuint *buffers = "
              "0x%016" PRIxPTR ", const GLintptr *offsets = 0x%016" PRIxPTR
              ", const GLsizei *strides = 0x%016" PRIxPTR "",
              CID(context), first, count, (uintptr_t)buffers, (uintptr_t)offsets, (uintptr_t)strides);
    
        if (context)
        {
            const BufferID *buffersPacked                 = FromGL<const BufferID *>(buffers);
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid =
                (context->skipValidation() ||
                 ValidateBindVertexBuffers(context, first, count, buffersPacked, offsets, strides));
            if (isCallValid)
            {
                context->bindVertexBuffers(first, count, buffersPacked, offsets, strides);
            }
            ANGLE_CAPTURE(BindVertexBuffers, isCallValid, context, first, count, buffersPacked, offsets,
                          strides);
        }
    }
    
    void GL_APIENTRY BufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glBufferStorage",
              "context = %d, GLenum target = %s, GLsizeiptr size = %llu, const void *data = "
              "0x%016" PRIxPTR ", GLbitfield flags = %s",
              CID(context), GLenumToString(GLenumGroup::BufferStorageTarget, target),
              static_cast<unsigned long long>(size), (uintptr_t)data,
              GLbitfieldToString(GLenumGroup::MapBufferUsageMask, flags).c_str());
    
        if (context)
        {
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid                              = (context->skipValidation() ||
                                ValidateBufferStorage(context, target, size, data, flags));
            if (isCallValid)
            {
                context->bufferStorage(target, size, data, flags);
            }
            ANGLE_CAPTURE(BufferStorage, isCallValid, context, target, size, data, flags);
        }
    }
    
    void GL_APIENTRY
    ClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glClearTexImage",
              "context = %d, GLuint texture = %u, GLint level = %d, GLenum format = %s, GLenum type = "
              "%s, const void *data = 0x%016" PRIxPTR "",
              CID(context), texture, level, GLenumToString(GLenumGroup::PixelFormat, format),
              GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)data);
    
        if (context)
        {
            TextureID texturePacked                       = FromGL<TextureID>(texture);
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid =
                (context->skipValidation() ||
                 ValidateClearTexImage(context, texturePacked, level, format, type, data));
            if (isCallValid)
            {
                context->clearTexImage(texturePacked, level, format, type, data);
            }
            ANGLE_CAPTURE(ClearTexImage, isCallValid, context, texturePacked, level, format, type,
                          data);
        }
    }
    
    void GL_APIENTRY ClearTexSubImage(GLuint texture,
                                      GLint level,
                                      GLint xoffset,
                                      GLint yoffset,
                                      GLint zoffset,
                                      GLsizei width,
                                      GLsizei height,
                                      GLsizei depth,
                                      GLenum format,
                                      GLenum type,
                                      const void *data)
    {
        Context *context = GetValidGlobalContext();
        EVENT("glClearTexSubImage",
              "context = %d, GLuint texture = %u, GLint level = %d, GLint xoffset = %d, GLint yoffset "
              "= %d, GLint zoffset = %d, GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, "
              "GLenum format = %s, GLenum type = %s, const void *data = 0x%016" PRIxPTR "",
              CID(context), texture, level, xoffset, yoffset, zoffset, width, height, depth,
              GLenumToString(GLenumGroup::PixelFormat, format),
              GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)data);
    
        if (context)
        {
            TextureID texturePacked                       = FromGL<TextureID>(texture);
            std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
            bool isCallValid =
                (context->skipValidation() ||
                 ValidateClearTexSubImage(context, texturePacked, level, xoffset, yoffset, zoffset,
                                          width, height, depth, format, type, data));
            if (isCallValid)
            {
                context->clearTexSubImage(texturePacked, level, xoffset, yoffset, zoffset, width,
                                          height, depth, format, type, data);
            }
            ANGLE_CAPTURE(ClearTexSubImage, isCallValid, context, texturePacked, level, xoffset,
                          yoffset, zoffset, width, height, depth, format, type, data);
        }
    }
    }  // namespace gl