| // GENERATED FILE - DO NOT EDIT. |
| // Generated by generate_entry_points.py using data from gl.xml. |
| // |
| // Copyright 2020 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_5_autogen.cpp: |
| // Defines the GL 4.5 entry points. |
| |
| #include "libGL/entry_points_gl_4_5_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/validationGL45_autogen.h" |
| #include "libGLESv2/global_state.h" |
| |
| namespace gl |
| { |
| void GL_APIENTRY BindTextureUnit(GLuint unit, GLuint texture) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::BindTextureUnit, "glBindTextureUnit", |
| "context = %d, unit = %u, texture = %u", CID(context), unit, texture); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateBindTextureUnit(context, unit, texturePacked)); |
| if (isCallValid) |
| { |
| context->bindTextureUnit(unit, texturePacked); |
| } |
| ANGLE_CAPTURE(BindTextureUnit, isCallValid, context, unit, texturePacked); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY BlitNamedFramebuffer(GLuint readFramebuffer, |
| GLuint drawFramebuffer, |
| GLint srcX0, |
| GLint srcY0, |
| GLint srcX1, |
| GLint srcY1, |
| GLint dstX0, |
| GLint dstY0, |
| GLint dstX1, |
| GLint dstY1, |
| GLbitfield mask, |
| GLenum filter) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT( |
| context, gl::EntryPoint::BlitNamedFramebuffer, "glBlitNamedFramebuffer", |
| "context = %d, readFramebuffer = %u, drawFramebuffer = %u, srcX0 = %d, srcY0 = %d, srcX1 = " |
| "%d, srcY1 = %d, dstX0 = %d, dstY0 = %d, dstX1 = %d, dstY1 = %d, mask = %s, filter = %s", |
| CID(context), readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, |
| dstX1, dstY1, GLbitfieldToString(GLenumGroup::ClearBufferMask, mask).c_str(), |
| GLenumToString(GLenumGroup::BlitFramebufferFilter, filter)); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateBlitNamedFramebuffer(context, readFramebuffer, drawFramebuffer, srcX0, srcY0, |
| srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)); |
| if (isCallValid) |
| { |
| context->blitNamedFramebuffer(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, |
| srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); |
| } |
| ANGLE_CAPTURE(BlitNamedFramebuffer, isCallValid, context, readFramebuffer, drawFramebuffer, |
| srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| GLenum GL_APIENTRY CheckNamedFramebufferStatus(GLuint framebuffer, GLenum target) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CheckNamedFramebufferStatus, "glCheckNamedFramebufferStatus", |
| "context = %d, framebuffer = %u, target = %s", CID(context), framebuffer, |
| GLenumToString(GLenumGroup::FramebufferTarget, target)); |
| |
| GLenum returnValue; |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || ValidateCheckNamedFramebufferStatus( |
| context, framebufferPacked, target)); |
| if (isCallValid) |
| { |
| returnValue = context->checkNamedFramebufferStatus(framebufferPacked, target); |
| } |
| else |
| { |
| returnValue = GetDefaultReturnValue<EntryPoint::CheckNamedFramebufferStatus, GLenum>(); |
| } |
| ANGLE_CAPTURE(CheckNamedFramebufferStatus, isCallValid, context, framebufferPacked, target, |
| returnValue); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| returnValue = GetDefaultReturnValue<EntryPoint::CheckNamedFramebufferStatus, GLenum>(); |
| } |
| return returnValue; |
| } |
| |
| void GL_APIENTRY ClearNamedBufferData(GLuint buffer, |
| GLenum internalformat, |
| GLenum format, |
| GLenum type, |
| const void *data) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::ClearNamedBufferData, "glClearNamedBufferData", |
| "context = %d, buffer = %u, internalformat = %s, format = %s, type = %s, data = " |
| "0x%016" PRIxPTR "", |
| CID(context), buffer, GLenumToString(GLenumGroup::InternalFormat, internalformat), |
| GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)data); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateClearNamedBufferData(context, bufferPacked, internalformat, |
| format, type, data)); |
| if (isCallValid) |
| { |
| context->clearNamedBufferData(bufferPacked, internalformat, format, type, data); |
| } |
| ANGLE_CAPTURE(ClearNamedBufferData, isCallValid, context, bufferPacked, internalformat, |
| format, type, data); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY ClearNamedBufferSubData(GLuint buffer, |
| GLenum internalformat, |
| GLintptr offset, |
| GLsizeiptr size, |
| GLenum format, |
| GLenum type, |
| const void *data) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::ClearNamedBufferSubData, "glClearNamedBufferSubData", |
| "context = %d, buffer = %u, internalformat = %s, offset = %llu, size = %llu, format = " |
| "%s, type = %s, data = 0x%016" PRIxPTR "", |
| CID(context), buffer, GLenumToString(GLenumGroup::InternalFormat, internalformat), |
| static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size), |
| GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)data); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateClearNamedBufferSubData(context, bufferPacked, internalformat, |
| offset, size, format, type, data)); |
| if (isCallValid) |
| { |
| context->clearNamedBufferSubData(bufferPacked, internalformat, offset, size, format, |
| type, data); |
| } |
| ANGLE_CAPTURE(ClearNamedBufferSubData, isCallValid, context, bufferPacked, internalformat, |
| offset, size, format, type, data); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY ClearNamedFramebufferfi(GLuint framebuffer, |
| GLenum buffer, |
| GLint drawbuffer, |
| GLfloat depth, |
| GLint stencil) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::ClearNamedFramebufferfi, "glClearNamedFramebufferfi", |
| "context = %d, framebuffer = %u, buffer = %s, drawbuffer = %d, depth = %f, stencil = %d", |
| CID(context), framebuffer, GLenumToString(GLenumGroup::Buffer, buffer), drawbuffer, depth, |
| stencil); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateClearNamedFramebufferfi(context, framebufferPacked, buffer, |
| drawbuffer, depth, stencil)); |
| if (isCallValid) |
| { |
| context->clearNamedFramebufferfi(framebufferPacked, buffer, drawbuffer, depth, stencil); |
| } |
| ANGLE_CAPTURE(ClearNamedFramebufferfi, isCallValid, context, framebufferPacked, buffer, |
| drawbuffer, depth, stencil); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY ClearNamedFramebufferfv(GLuint framebuffer, |
| GLenum buffer, |
| GLint drawbuffer, |
| const GLfloat *value) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::ClearNamedFramebufferfv, "glClearNamedFramebufferfv", |
| "context = %d, framebuffer = %u, buffer = %s, drawbuffer = %d, value = 0x%016" PRIxPTR "", |
| CID(context), framebuffer, GLenumToString(GLenumGroup::Buffer, buffer), drawbuffer, |
| (uintptr_t)value); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateClearNamedFramebufferfv(context, framebufferPacked, buffer, |
| drawbuffer, value)); |
| if (isCallValid) |
| { |
| context->clearNamedFramebufferfv(framebufferPacked, buffer, drawbuffer, value); |
| } |
| ANGLE_CAPTURE(ClearNamedFramebufferfv, isCallValid, context, framebufferPacked, buffer, |
| drawbuffer, value); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY ClearNamedFramebufferiv(GLuint framebuffer, |
| GLenum buffer, |
| GLint drawbuffer, |
| const GLint *value) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::ClearNamedFramebufferiv, "glClearNamedFramebufferiv", |
| "context = %d, framebuffer = %u, buffer = %s, drawbuffer = %d, value = 0x%016" PRIxPTR "", |
| CID(context), framebuffer, GLenumToString(GLenumGroup::Buffer, buffer), drawbuffer, |
| (uintptr_t)value); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateClearNamedFramebufferiv(context, framebufferPacked, buffer, |
| drawbuffer, value)); |
| if (isCallValid) |
| { |
| context->clearNamedFramebufferiv(framebufferPacked, buffer, drawbuffer, value); |
| } |
| ANGLE_CAPTURE(ClearNamedFramebufferiv, isCallValid, context, framebufferPacked, buffer, |
| drawbuffer, value); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY ClearNamedFramebufferuiv(GLuint framebuffer, |
| GLenum buffer, |
| GLint drawbuffer, |
| const GLuint *value) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::ClearNamedFramebufferuiv, "glClearNamedFramebufferuiv", |
| "context = %d, framebuffer = %u, buffer = %s, drawbuffer = %d, value = 0x%016" PRIxPTR "", |
| CID(context), framebuffer, GLenumToString(GLenumGroup::Buffer, buffer), drawbuffer, |
| (uintptr_t)value); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateClearNamedFramebufferuiv(context, framebufferPacked, buffer, |
| drawbuffer, value)); |
| if (isCallValid) |
| { |
| context->clearNamedFramebufferuiv(framebufferPacked, buffer, drawbuffer, value); |
| } |
| ANGLE_CAPTURE(ClearNamedFramebufferuiv, isCallValid, context, framebufferPacked, buffer, |
| drawbuffer, value); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY ClipControl(GLenum origin, GLenum depth) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::ClipControl, "glClipControl", |
| "context = %d, origin = %s, depth = %s", CID(context), |
| GLenumToString(GLenumGroup::ClipControlOrigin, origin), |
| GLenumToString(GLenumGroup::ClipControlDepth, depth)); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateClipControl(context, origin, depth)); |
| if (isCallValid) |
| { |
| context->clipControl(origin, depth); |
| } |
| ANGLE_CAPTURE(ClipControl, isCallValid, context, origin, depth); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CompressedTextureSubImage1D(GLuint texture, |
| GLint level, |
| GLint xoffset, |
| GLsizei width, |
| GLenum format, |
| GLsizei imageSize, |
| const void *data) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CompressedTextureSubImage1D, "glCompressedTextureSubImage1D", |
| "context = %d, texture = %u, level = %d, xoffset = %d, width = %d, format = %s, " |
| "imageSize = %d, data = 0x%016" PRIxPTR "", |
| CID(context), texture, level, xoffset, width, |
| GLenumToString(GLenumGroup::PixelFormat, format), imageSize, (uintptr_t)data); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || ValidateCompressedTextureSubImage1D( |
| context, texturePacked, level, xoffset, |
| width, format, imageSize, data)); |
| if (isCallValid) |
| { |
| context->compressedTextureSubImage1D(texturePacked, level, xoffset, width, format, |
| imageSize, data); |
| } |
| ANGLE_CAPTURE(CompressedTextureSubImage1D, isCallValid, context, texturePacked, level, |
| xoffset, width, format, imageSize, data); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CompressedTextureSubImage2D(GLuint texture, |
| GLint level, |
| GLint xoffset, |
| GLint yoffset, |
| GLsizei width, |
| GLsizei height, |
| GLenum format, |
| GLsizei imageSize, |
| const void *data) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CompressedTextureSubImage2D, "glCompressedTextureSubImage2D", |
| "context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, width = %d, height " |
| "= %d, format = %s, imageSize = %d, data = 0x%016" PRIxPTR "", |
| CID(context), texture, level, xoffset, yoffset, width, height, |
| GLenumToString(GLenumGroup::PixelFormat, format), imageSize, (uintptr_t)data); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateCompressedTextureSubImage2D(context, texturePacked, level, xoffset, yoffset, |
| width, height, format, imageSize, data)); |
| if (isCallValid) |
| { |
| context->compressedTextureSubImage2D(texturePacked, level, xoffset, yoffset, width, |
| height, format, imageSize, data); |
| } |
| ANGLE_CAPTURE(CompressedTextureSubImage2D, isCallValid, context, texturePacked, level, |
| xoffset, yoffset, width, height, format, imageSize, data); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CompressedTextureSubImage3D(GLuint texture, |
| GLint level, |
| GLint xoffset, |
| GLint yoffset, |
| GLint zoffset, |
| GLsizei width, |
| GLsizei height, |
| GLsizei depth, |
| GLenum format, |
| GLsizei imageSize, |
| const void *data) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CompressedTextureSubImage3D, "glCompressedTextureSubImage3D", |
| "context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width " |
| "= %d, height = %d, depth = %d, format = %s, imageSize = %d, data = 0x%016" PRIxPTR "", |
| CID(context), texture, level, xoffset, yoffset, zoffset, width, height, depth, |
| GLenumToString(GLenumGroup::PixelFormat, format), imageSize, (uintptr_t)data); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateCompressedTextureSubImage3D( |
| context, texturePacked, level, xoffset, yoffset, zoffset, width, |
| height, depth, format, imageSize, data)); |
| if (isCallValid) |
| { |
| context->compressedTextureSubImage3D(texturePacked, level, xoffset, yoffset, zoffset, |
| width, height, depth, format, imageSize, data); |
| } |
| ANGLE_CAPTURE(CompressedTextureSubImage3D, isCallValid, context, texturePacked, level, |
| xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CopyNamedBufferSubData(GLuint readBuffer, |
| GLuint writeBuffer, |
| GLintptr readOffset, |
| GLintptr writeOffset, |
| GLsizeiptr size) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CopyNamedBufferSubData, "glCopyNamedBufferSubData", |
| "context = %d, readBuffer = %u, writeBuffer = %u, readOffset = %llu, writeOffset = %llu, " |
| "size = %llu", |
| CID(context), readBuffer, writeBuffer, static_cast<unsigned long long>(readOffset), |
| static_cast<unsigned long long>(writeOffset), static_cast<unsigned long long>(size)); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateCopyNamedBufferSubData(context, readBuffer, writeBuffer, |
| readOffset, writeOffset, size)); |
| if (isCallValid) |
| { |
| context->copyNamedBufferSubData(readBuffer, writeBuffer, readOffset, writeOffset, size); |
| } |
| ANGLE_CAPTURE(CopyNamedBufferSubData, isCallValid, context, readBuffer, writeBuffer, |
| readOffset, writeOffset, size); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY |
| CopyTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CopyTextureSubImage1D, "glCopyTextureSubImage1D", |
| "context = %d, texture = %u, level = %d, xoffset = %d, x = %d, y = %d, width = %d", |
| CID(context), texture, level, xoffset, x, y, width); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateCopyTextureSubImage1D(context, texturePacked, level, xoffset, x, y, width)); |
| if (isCallValid) |
| { |
| context->copyTextureSubImage1D(texturePacked, level, xoffset, x, y, width); |
| } |
| ANGLE_CAPTURE(CopyTextureSubImage1D, isCallValid, context, texturePacked, level, xoffset, x, |
| y, width); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CopyTextureSubImage2D(GLuint texture, |
| GLint level, |
| GLint xoffset, |
| GLint yoffset, |
| GLint x, |
| GLint y, |
| GLsizei width, |
| GLsizei height) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CopyTextureSubImage2D, "glCopyTextureSubImage2D", |
| "context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, x = %d, y = %d, " |
| "width = %d, height = %d", |
| CID(context), texture, level, xoffset, yoffset, x, y, width, height); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateCopyTextureSubImage2D(context, texturePacked, level, xoffset, |
| yoffset, x, y, width, height)); |
| if (isCallValid) |
| { |
| context->copyTextureSubImage2D(texturePacked, level, xoffset, yoffset, x, y, width, |
| height); |
| } |
| ANGLE_CAPTURE(CopyTextureSubImage2D, isCallValid, context, texturePacked, level, xoffset, |
| yoffset, x, y, width, height); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CopyTextureSubImage3D(GLuint texture, |
| GLint level, |
| GLint xoffset, |
| GLint yoffset, |
| GLint zoffset, |
| GLint x, |
| GLint y, |
| GLsizei width, |
| GLsizei height) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CopyTextureSubImage3D, "glCopyTextureSubImage3D", |
| "context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, x = " |
| "%d, y = %d, width = %d, height = %d", |
| CID(context), texture, level, xoffset, yoffset, zoffset, x, y, width, height); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateCopyTextureSubImage3D(context, texturePacked, level, xoffset, |
| yoffset, zoffset, x, y, width, height)); |
| if (isCallValid) |
| { |
| context->copyTextureSubImage3D(texturePacked, level, xoffset, yoffset, zoffset, x, y, |
| width, height); |
| } |
| ANGLE_CAPTURE(CopyTextureSubImage3D, isCallValid, context, texturePacked, level, xoffset, |
| yoffset, zoffset, x, y, width, height); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CreateBuffers(GLsizei n, GLuint *buffers) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CreateBuffers, "glCreateBuffers", |
| "context = %d, n = %d, buffers = 0x%016" PRIxPTR "", CID(context), n, (uintptr_t)buffers); |
| |
| if (context) |
| { |
| BufferID *buffersPacked = FromGL<BufferID *>(buffers); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateCreateBuffers(context, n, buffersPacked)); |
| if (isCallValid) |
| { |
| context->createBuffers(n, buffersPacked); |
| } |
| ANGLE_CAPTURE(CreateBuffers, isCallValid, context, n, buffersPacked); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CreateFramebuffers(GLsizei n, GLuint *framebuffers) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CreateFramebuffers, "glCreateFramebuffers", |
| "context = %d, n = %d, framebuffers = 0x%016" PRIxPTR "", CID(context), n, |
| (uintptr_t)framebuffers); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateCreateFramebuffers(context, n, framebuffers)); |
| if (isCallValid) |
| { |
| context->createFramebuffers(n, framebuffers); |
| } |
| ANGLE_CAPTURE(CreateFramebuffers, isCallValid, context, n, framebuffers); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CreateProgramPipelines(GLsizei n, GLuint *pipelines) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CreateProgramPipelines, "glCreateProgramPipelines", |
| "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "", CID(context), n, |
| (uintptr_t)pipelines); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateCreateProgramPipelines(context, n, pipelines)); |
| if (isCallValid) |
| { |
| context->createProgramPipelines(n, pipelines); |
| } |
| ANGLE_CAPTURE(CreateProgramPipelines, isCallValid, context, n, pipelines); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CreateQueries(GLenum target, GLsizei n, GLuint *ids) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CreateQueries, "glCreateQueries", |
| "context = %d, target = %s, n = %d, ids = 0x%016" PRIxPTR "", CID(context), |
| GLenumToString(GLenumGroup::QueryTarget, target), n, (uintptr_t)ids); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateCreateQueries(context, target, n, ids)); |
| if (isCallValid) |
| { |
| context->createQueries(target, n, ids); |
| } |
| ANGLE_CAPTURE(CreateQueries, isCallValid, context, target, n, ids); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CreateRenderbuffers(GLsizei n, GLuint *renderbuffers) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CreateRenderbuffers, "glCreateRenderbuffers", |
| "context = %d, n = %d, renderbuffers = 0x%016" PRIxPTR "", CID(context), n, |
| (uintptr_t)renderbuffers); |
| |
| if (context) |
| { |
| RenderbufferID *renderbuffersPacked = FromGL<RenderbufferID *>(renderbuffers); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateCreateRenderbuffers(context, n, renderbuffersPacked)); |
| if (isCallValid) |
| { |
| context->createRenderbuffers(n, renderbuffersPacked); |
| } |
| ANGLE_CAPTURE(CreateRenderbuffers, isCallValid, context, n, renderbuffersPacked); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CreateSamplers(GLsizei n, GLuint *samplers) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CreateSamplers, "glCreateSamplers", |
| "context = %d, n = %d, samplers = 0x%016" PRIxPTR "", CID(context), n, |
| (uintptr_t)samplers); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateCreateSamplers(context, n, samplers)); |
| if (isCallValid) |
| { |
| context->createSamplers(n, samplers); |
| } |
| ANGLE_CAPTURE(CreateSamplers, isCallValid, context, n, samplers); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CreateTextures(GLenum target, GLsizei n, GLuint *textures) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CreateTextures, "glCreateTextures", |
| "context = %d, target = %s, n = %d, textures = 0x%016" PRIxPTR "", CID(context), |
| GLenumToString(GLenumGroup::TextureTarget, target), n, (uintptr_t)textures); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateCreateTextures(context, target, n, textures)); |
| if (isCallValid) |
| { |
| context->createTextures(target, n, textures); |
| } |
| ANGLE_CAPTURE(CreateTextures, isCallValid, context, target, n, textures); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CreateTransformFeedbacks(GLsizei n, GLuint *ids) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CreateTransformFeedbacks, "glCreateTransformFeedbacks", |
| "context = %d, n = %d, ids = 0x%016" PRIxPTR "", CID(context), n, (uintptr_t)ids); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateCreateTransformFeedbacks(context, n, ids)); |
| if (isCallValid) |
| { |
| context->createTransformFeedbacks(n, ids); |
| } |
| ANGLE_CAPTURE(CreateTransformFeedbacks, isCallValid, context, n, ids); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY CreateVertexArrays(GLsizei n, GLuint *arrays) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::CreateVertexArrays, "glCreateVertexArrays", |
| "context = %d, n = %d, arrays = 0x%016" PRIxPTR "", CID(context), n, (uintptr_t)arrays); |
| |
| if (context) |
| { |
| VertexArrayID *arraysPacked = FromGL<VertexArrayID *>(arrays); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateCreateVertexArrays(context, n, arraysPacked)); |
| if (isCallValid) |
| { |
| context->createVertexArrays(n, arraysPacked); |
| } |
| ANGLE_CAPTURE(CreateVertexArrays, isCallValid, context, n, arraysPacked); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY DisableVertexArrayAttrib(GLuint vaobj, GLuint index) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::DisableVertexArrayAttrib, "glDisableVertexArrayAttrib", |
| "context = %d, vaobj = %u, index = %u", CID(context), vaobj, index); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateDisableVertexArrayAttrib(context, vaobjPacked, index)); |
| if (isCallValid) |
| { |
| context->disableVertexArrayAttrib(vaobjPacked, index); |
| } |
| ANGLE_CAPTURE(DisableVertexArrayAttrib, isCallValid, context, vaobjPacked, index); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY EnableVertexArrayAttrib(GLuint vaobj, GLuint index) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::EnableVertexArrayAttrib, "glEnableVertexArrayAttrib", |
| "context = %d, vaobj = %u, index = %u", CID(context), vaobj, index); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateEnableVertexArrayAttrib(context, vaobjPacked, index)); |
| if (isCallValid) |
| { |
| context->enableVertexArrayAttrib(vaobjPacked, index); |
| } |
| ANGLE_CAPTURE(EnableVertexArrayAttrib, isCallValid, context, vaobjPacked, index); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY FlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::FlushMappedNamedBufferRange, "glFlushMappedNamedBufferRange", |
| "context = %d, buffer = %u, offset = %llu, length = %llu", CID(context), buffer, |
| static_cast<unsigned long long>(offset), static_cast<unsigned long long>(length)); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateFlushMappedNamedBufferRange(context, bufferPacked, offset, length)); |
| if (isCallValid) |
| { |
| context->flushMappedNamedBufferRange(bufferPacked, offset, length); |
| } |
| ANGLE_CAPTURE(FlushMappedNamedBufferRange, isCallValid, context, bufferPacked, offset, |
| length); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GenerateTextureMipmap(GLuint texture) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GenerateTextureMipmap, "glGenerateTextureMipmap", |
| "context = %d, texture = %u", CID(context), texture); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateGenerateTextureMipmap(context, texturePacked)); |
| if (isCallValid) |
| { |
| context->generateTextureMipmap(texturePacked); |
| } |
| ANGLE_CAPTURE(GenerateTextureMipmap, isCallValid, context, texturePacked); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetCompressedTextureImage(GLuint texture, |
| GLint level, |
| GLsizei bufSize, |
| void *pixels) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetCompressedTextureImage, "glGetCompressedTextureImage", |
| "context = %d, texture = %u, level = %d, bufSize = %d, pixels = 0x%016" PRIxPTR "", |
| CID(context), texture, level, bufSize, (uintptr_t)pixels); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetCompressedTextureImage(context, texturePacked, level, bufSize, pixels)); |
| if (isCallValid) |
| { |
| context->getCompressedTextureImage(texturePacked, level, bufSize, pixels); |
| } |
| ANGLE_CAPTURE(GetCompressedTextureImage, isCallValid, context, texturePacked, level, |
| bufSize, pixels); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetCompressedTextureSubImage(GLuint texture, |
| GLint level, |
| GLint xoffset, |
| GLint yoffset, |
| GLint zoffset, |
| GLsizei width, |
| GLsizei height, |
| GLsizei depth, |
| GLsizei bufSize, |
| void *pixels) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetCompressedTextureSubImage, "glGetCompressedTextureSubImage", |
| "context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width " |
| "= %d, height = %d, depth = %d, bufSize = %d, pixels = 0x%016" PRIxPTR "", |
| CID(context), texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, |
| (uintptr_t)pixels); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetCompressedTextureSubImage(context, texturePacked, level, xoffset, yoffset, |
| zoffset, width, height, depth, bufSize, pixels)); |
| if (isCallValid) |
| { |
| context->getCompressedTextureSubImage(texturePacked, level, xoffset, yoffset, zoffset, |
| width, height, depth, bufSize, pixels); |
| } |
| ANGLE_CAPTURE(GetCompressedTextureSubImage, isCallValid, context, texturePacked, level, |
| xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| GLenum GL_APIENTRY GetGraphicsResetStatus() |
| { |
| Context *context = GetGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetGraphicsResetStatus, "glGetGraphicsResetStatus", |
| "context = %d", CID(context)); |
| |
| GLenum returnValue; |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || ValidateGetGraphicsResetStatus(context)); |
| if (isCallValid) |
| { |
| returnValue = context->getGraphicsResetStatus(); |
| } |
| else |
| { |
| returnValue = GetDefaultReturnValue<EntryPoint::GetGraphicsResetStatus, GLenum>(); |
| } |
| ANGLE_CAPTURE(GetGraphicsResetStatus, isCallValid, context, returnValue); |
| } |
| else |
| { |
| |
| returnValue = GetDefaultReturnValue<EntryPoint::GetGraphicsResetStatus, GLenum>(); |
| } |
| return returnValue; |
| } |
| |
| void GL_APIENTRY GetNamedBufferParameteri64v(GLuint buffer, GLenum pname, GLint64 *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetNamedBufferParameteri64v, "glGetNamedBufferParameteri64v", |
| "context = %d, buffer = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), buffer, |
| GLenumToString(GLenumGroup::VertexBufferObjectParameter, pname), (uintptr_t)params); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || ValidateGetNamedBufferParameteri64v( |
| context, bufferPacked, pname, params)); |
| if (isCallValid) |
| { |
| context->getNamedBufferParameteri64v(bufferPacked, pname, params); |
| } |
| ANGLE_CAPTURE(GetNamedBufferParameteri64v, isCallValid, context, bufferPacked, pname, |
| params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetNamedBufferParameteriv, "glGetNamedBufferParameteriv", |
| "context = %d, buffer = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), buffer, |
| GLenumToString(GLenumGroup::VertexBufferObjectParameter, pname), (uintptr_t)params); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || ValidateGetNamedBufferParameteriv( |
| context, bufferPacked, pname, params)); |
| if (isCallValid) |
| { |
| context->getNamedBufferParameteriv(bufferPacked, pname, params); |
| } |
| ANGLE_CAPTURE(GetNamedBufferParameteriv, isCallValid, context, bufferPacked, pname, params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetNamedBufferPointerv(GLuint buffer, GLenum pname, void **params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetNamedBufferPointerv, "glGetNamedBufferPointerv", |
| "context = %d, buffer = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), buffer, |
| GLenumToString(GLenumGroup::VertexBufferObjectParameter, pname), (uintptr_t)params); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetNamedBufferPointerv(context, bufferPacked, pname, params)); |
| if (isCallValid) |
| { |
| context->getNamedBufferPointerv(bufferPacked, pname, params); |
| } |
| ANGLE_CAPTURE(GetNamedBufferPointerv, isCallValid, context, bufferPacked, pname, params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetNamedBufferSubData, "glGetNamedBufferSubData", |
| "context = %d, buffer = %u, offset = %llu, size = %llu, data = 0x%016" PRIxPTR "", |
| CID(context), buffer, static_cast<unsigned long long>(offset), |
| static_cast<unsigned long long>(size), (uintptr_t)data); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetNamedBufferSubData(context, bufferPacked, offset, size, data)); |
| if (isCallValid) |
| { |
| context->getNamedBufferSubData(bufferPacked, offset, size, data); |
| } |
| ANGLE_CAPTURE(GetNamedBufferSubData, isCallValid, context, bufferPacked, offset, size, |
| data); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, |
| GLenum attachment, |
| GLenum pname, |
| GLint *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetNamedFramebufferAttachmentParameteriv, |
| "glGetNamedFramebufferAttachmentParameteriv", |
| "context = %d, framebuffer = %u, attachment = %s, pname = %s, params = 0x%016" PRIxPTR "", |
| CID(context), framebuffer, GLenumToString(GLenumGroup::FramebufferAttachment, attachment), |
| GLenumToString(GLenumGroup::FramebufferAttachmentParameterName, pname), |
| (uintptr_t)params); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetNamedFramebufferAttachmentParameteriv( |
| context, framebufferPacked, attachment, pname, params)); |
| if (isCallValid) |
| { |
| context->getNamedFramebufferAttachmentParameteriv(framebufferPacked, attachment, pname, |
| params); |
| } |
| ANGLE_CAPTURE(GetNamedFramebufferAttachmentParameteriv, isCallValid, context, |
| framebufferPacked, attachment, pname, params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint *param) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT( |
| context, gl::EntryPoint::GetNamedFramebufferParameteriv, "glGetNamedFramebufferParameteriv", |
| "context = %d, framebuffer = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context), |
| framebuffer, GLenumToString(GLenumGroup::GetFramebufferParameter, pname), (uintptr_t)param); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetNamedFramebufferParameteriv(context, framebufferPacked, pname, param)); |
| if (isCallValid) |
| { |
| context->getNamedFramebufferParameteriv(framebufferPacked, pname, param); |
| } |
| ANGLE_CAPTURE(GetNamedFramebufferParameteriv, isCallValid, context, framebufferPacked, |
| pname, param); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetNamedRenderbufferParameteriv, |
| "glGetNamedRenderbufferParameteriv", |
| "context = %d, renderbuffer = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), |
| renderbuffer, GLenumToString(GLenumGroup::RenderbufferParameterName, pname), |
| (uintptr_t)params); |
| |
| if (context) |
| { |
| RenderbufferID renderbufferPacked = FromGL<RenderbufferID>(renderbuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetNamedRenderbufferParameteriv(context, renderbufferPacked, pname, params)); |
| if (isCallValid) |
| { |
| context->getNamedRenderbufferParameteriv(renderbufferPacked, pname, params); |
| } |
| ANGLE_CAPTURE(GetNamedRenderbufferParameteriv, isCallValid, context, renderbufferPacked, |
| pname, params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetQueryBufferObjecti64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetQueryBufferObjecti64v, "glGetQueryBufferObjecti64v", |
| "context = %d, id = %u, buffer = %u, pname = %s, offset = %llu", CID(context), id, buffer, |
| GLenumToString(GLenumGroup::QueryObjectParameterName, pname), |
| static_cast<unsigned long long>(offset)); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetQueryBufferObjecti64v(context, id, bufferPacked, pname, offset)); |
| if (isCallValid) |
| { |
| context->getQueryBufferObjecti64v(id, bufferPacked, pname, offset); |
| } |
| ANGLE_CAPTURE(GetQueryBufferObjecti64v, isCallValid, context, id, bufferPacked, pname, |
| offset); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetQueryBufferObjectiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetQueryBufferObjectiv, "glGetQueryBufferObjectiv", |
| "context = %d, id = %u, buffer = %u, pname = %s, offset = %llu", CID(context), id, buffer, |
| GLenumToString(GLenumGroup::QueryObjectParameterName, pname), |
| static_cast<unsigned long long>(offset)); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetQueryBufferObjectiv(context, id, bufferPacked, pname, offset)); |
| if (isCallValid) |
| { |
| context->getQueryBufferObjectiv(id, bufferPacked, pname, offset); |
| } |
| ANGLE_CAPTURE(GetQueryBufferObjectiv, isCallValid, context, id, bufferPacked, pname, |
| offset); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetQueryBufferObjectui64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetQueryBufferObjectui64v, "glGetQueryBufferObjectui64v", |
| "context = %d, id = %u, buffer = %u, pname = %s, offset = %llu", CID(context), id, buffer, |
| GLenumToString(GLenumGroup::QueryObjectParameterName, pname), |
| static_cast<unsigned long long>(offset)); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetQueryBufferObjectui64v(context, id, bufferPacked, pname, offset)); |
| if (isCallValid) |
| { |
| context->getQueryBufferObjectui64v(id, bufferPacked, pname, offset); |
| } |
| ANGLE_CAPTURE(GetQueryBufferObjectui64v, isCallValid, context, id, bufferPacked, pname, |
| offset); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetQueryBufferObjectuiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetQueryBufferObjectuiv, "glGetQueryBufferObjectuiv", |
| "context = %d, id = %u, buffer = %u, pname = %s, offset = %llu", CID(context), id, buffer, |
| GLenumToString(GLenumGroup::QueryObjectParameterName, pname), |
| static_cast<unsigned long long>(offset)); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetQueryBufferObjectuiv(context, id, bufferPacked, pname, offset)); |
| if (isCallValid) |
| { |
| context->getQueryBufferObjectuiv(id, bufferPacked, pname, offset); |
| } |
| ANGLE_CAPTURE(GetQueryBufferObjectuiv, isCallValid, context, id, bufferPacked, pname, |
| offset); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetTextureImage(GLuint texture, |
| GLint level, |
| GLenum format, |
| GLenum type, |
| GLsizei bufSize, |
| void *pixels) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetTextureImage, "glGetTextureImage", |
| "context = %d, texture = %u, level = %d, format = %s, type = %s, bufSize = %d, pixels = " |
| "0x%016" PRIxPTR "", |
| CID(context), texture, level, GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)pixels); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetTextureImage(context, texturePacked, level, format, type, bufSize, pixels)); |
| if (isCallValid) |
| { |
| context->getTextureImage(texturePacked, level, format, type, bufSize, pixels); |
| } |
| ANGLE_CAPTURE(GetTextureImage, isCallValid, context, texturePacked, level, format, type, |
| bufSize, pixels); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetTextureLevelParameterfv(GLuint texture, |
| GLint level, |
| GLenum pname, |
| GLfloat *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetTextureLevelParameterfv, "glGetTextureLevelParameterfv", |
| "context = %d, texture = %u, level = %d, pname = %s, params = 0x%016" PRIxPTR "", |
| CID(context), texture, level, GLenumToString(GLenumGroup::GetTextureParameter, pname), |
| (uintptr_t)params); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetTextureLevelParameterfv(context, texturePacked, level, pname, params)); |
| if (isCallValid) |
| { |
| context->getTextureLevelParameterfv(texturePacked, level, pname, params); |
| } |
| ANGLE_CAPTURE(GetTextureLevelParameterfv, isCallValid, context, texturePacked, level, pname, |
| params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetTextureLevelParameteriv(GLuint texture, |
| GLint level, |
| GLenum pname, |
| GLint *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetTextureLevelParameteriv, "glGetTextureLevelParameteriv", |
| "context = %d, texture = %u, level = %d, pname = %s, params = 0x%016" PRIxPTR "", |
| CID(context), texture, level, GLenumToString(GLenumGroup::GetTextureParameter, pname), |
| (uintptr_t)params); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetTextureLevelParameteriv(context, texturePacked, level, pname, params)); |
| if (isCallValid) |
| { |
| context->getTextureLevelParameteriv(texturePacked, level, pname, params); |
| } |
| ANGLE_CAPTURE(GetTextureLevelParameteriv, isCallValid, context, texturePacked, level, pname, |
| params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetTextureParameterIiv(GLuint texture, GLenum pname, GLint *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetTextureParameterIiv, "glGetTextureParameterIiv", |
| "context = %d, texture = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), |
| texture, GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetTextureParameterIiv(context, texturePacked, pname, params)); |
| if (isCallValid) |
| { |
| context->getTextureParameterIiv(texturePacked, pname, params); |
| } |
| ANGLE_CAPTURE(GetTextureParameterIiv, isCallValid, context, texturePacked, pname, params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetTextureParameterIuiv(GLuint texture, GLenum pname, GLuint *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetTextureParameterIuiv, "glGetTextureParameterIuiv", |
| "context = %d, texture = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), |
| texture, GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetTextureParameterIuiv(context, texturePacked, pname, params)); |
| if (isCallValid) |
| { |
| context->getTextureParameterIuiv(texturePacked, pname, params); |
| } |
| ANGLE_CAPTURE(GetTextureParameterIuiv, isCallValid, context, texturePacked, pname, params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetTextureParameterfv(GLuint texture, GLenum pname, GLfloat *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetTextureParameterfv, "glGetTextureParameterfv", |
| "context = %d, texture = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), |
| texture, GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetTextureParameterfv(context, texturePacked, pname, params)); |
| if (isCallValid) |
| { |
| context->getTextureParameterfv(texturePacked, pname, params); |
| } |
| ANGLE_CAPTURE(GetTextureParameterfv, isCallValid, context, texturePacked, pname, params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetTextureParameteriv(GLuint texture, GLenum pname, GLint *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetTextureParameteriv, "glGetTextureParameteriv", |
| "context = %d, texture = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), |
| texture, GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetTextureParameteriv(context, texturePacked, pname, params)); |
| if (isCallValid) |
| { |
| context->getTextureParameteriv(texturePacked, pname, params); |
| } |
| ANGLE_CAPTURE(GetTextureParameteriv, isCallValid, context, texturePacked, pname, params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetTextureSubImage(GLuint texture, |
| GLint level, |
| GLint xoffset, |
| GLint yoffset, |
| GLint zoffset, |
| GLsizei width, |
| GLsizei height, |
| GLsizei depth, |
| GLenum format, |
| GLenum type, |
| GLsizei bufSize, |
| void *pixels) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT( |
| context, gl::EntryPoint::GetTextureSubImage, "glGetTextureSubImage", |
| "context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width = " |
| "%d, height = %d, depth = %d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR |
| "", |
| CID(context), texture, level, xoffset, yoffset, zoffset, width, height, depth, |
| GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)pixels); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetTextureSubImage(context, texturePacked, level, xoffset, yoffset, zoffset, |
| width, height, depth, format, type, bufSize, pixels)); |
| if (isCallValid) |
| { |
| context->getTextureSubImage(texturePacked, level, xoffset, yoffset, zoffset, width, |
| height, depth, format, type, bufSize, pixels); |
| } |
| ANGLE_CAPTURE(GetTextureSubImage, isCallValid, context, texturePacked, level, xoffset, |
| yoffset, zoffset, width, height, depth, format, type, bufSize, pixels); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetTransformFeedbacki64_v(GLuint xfb, GLenum pname, GLuint index, GLint64 *param) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetTransformFeedbacki64_v, "glGetTransformFeedbacki64_v", |
| "context = %d, xfb = %u, pname = %s, index = %u, param = 0x%016" PRIxPTR "", CID(context), |
| xfb, GLenumToString(GLenumGroup::TransformFeedbackPName, pname), index, (uintptr_t)param); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetTransformFeedbacki64_v(context, xfb, pname, index, param)); |
| if (isCallValid) |
| { |
| context->getTransformFeedbacki64_v(xfb, pname, index, param); |
| } |
| ANGLE_CAPTURE(GetTransformFeedbacki64_v, isCallValid, context, xfb, pname, index, param); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index, GLint *param) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetTransformFeedbacki_v, "glGetTransformFeedbacki_v", |
| "context = %d, xfb = %u, pname = %s, index = %u, param = 0x%016" PRIxPTR "", CID(context), |
| xfb, GLenumToString(GLenumGroup::TransformFeedbackPName, pname), index, (uintptr_t)param); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetTransformFeedbacki_v(context, xfb, pname, index, param)); |
| if (isCallValid) |
| { |
| context->getTransformFeedbacki_v(xfb, pname, index, param); |
| } |
| ANGLE_CAPTURE(GetTransformFeedbacki_v, isCallValid, context, xfb, pname, index, param); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetTransformFeedbackiv, "glGetTransformFeedbackiv", |
| "context = %d, xfb = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context), xfb, |
| GLenumToString(GLenumGroup::TransformFeedbackPName, pname), (uintptr_t)param); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetTransformFeedbackiv(context, xfb, pname, param)); |
| if (isCallValid) |
| { |
| context->getTransformFeedbackiv(xfb, pname, param); |
| } |
| ANGLE_CAPTURE(GetTransformFeedbackiv, isCallValid, context, xfb, pname, param); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetVertexArrayIndexed64iv(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetVertexArrayIndexed64iv, "glGetVertexArrayIndexed64iv", |
| "context = %d, vaobj = %u, index = %u, pname = %s, param = 0x%016" PRIxPTR "", |
| CID(context), vaobj, index, GLenumToString(GLenumGroup::VertexArrayPName, pname), |
| (uintptr_t)param); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetVertexArrayIndexed64iv(context, vaobjPacked, index, pname, param)); |
| if (isCallValid) |
| { |
| context->getVertexArrayIndexed64iv(vaobjPacked, index, pname, param); |
| } |
| ANGLE_CAPTURE(GetVertexArrayIndexed64iv, isCallValid, context, vaobjPacked, index, pname, |
| param); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetVertexArrayIndexediv(GLuint vaobj, GLuint index, GLenum pname, GLint *param) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetVertexArrayIndexediv, "glGetVertexArrayIndexediv", |
| "context = %d, vaobj = %u, index = %u, pname = %s, param = 0x%016" PRIxPTR "", |
| CID(context), vaobj, index, GLenumToString(GLenumGroup::VertexArrayPName, pname), |
| (uintptr_t)param); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetVertexArrayIndexediv(context, vaobjPacked, index, pname, param)); |
| if (isCallValid) |
| { |
| context->getVertexArrayIndexediv(vaobjPacked, index, pname, param); |
| } |
| ANGLE_CAPTURE(GetVertexArrayIndexediv, isCallValid, context, vaobjPacked, index, pname, |
| param); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetVertexArrayiv(GLuint vaobj, GLenum pname, GLint *param) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetVertexArrayiv, "glGetVertexArrayiv", |
| "context = %d, vaobj = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context), vaobj, |
| GLenumToString(GLenumGroup::VertexArrayPName, pname), (uintptr_t)param); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetVertexArrayiv(context, vaobjPacked, pname, param)); |
| if (isCallValid) |
| { |
| context->getVertexArrayiv(vaobjPacked, pname, param); |
| } |
| ANGLE_CAPTURE(GetVertexArrayiv, isCallValid, context, vaobjPacked, pname, param); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY |
| GetnColorTable(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnColorTable, "glGetnColorTable", |
| "context = %d, target = %s, format = %s, type = %s, bufSize = %d, table = 0x%016" PRIxPTR |
| "", |
| CID(context), GLenumToString(GLenumGroup::ColorTableTarget, target), |
| GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)table); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetnColorTable(context, target, format, type, bufSize, table)); |
| if (isCallValid) |
| { |
| context->getnColorTable(target, format, type, bufSize, table); |
| } |
| ANGLE_CAPTURE(GetnColorTable, isCallValid, context, target, format, type, bufSize, table); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnCompressedTexImage(GLenum target, GLint lod, GLsizei bufSize, void *pixels) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnCompressedTexImage, "glGetnCompressedTexImage", |
| "context = %d, target = %s, lod = %d, bufSize = %d, pixels = 0x%016" PRIxPTR "", |
| CID(context), GLenumToString(GLenumGroup::TextureTarget, target), lod, bufSize, |
| (uintptr_t)pixels); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetnCompressedTexImage(context, target, lod, bufSize, pixels)); |
| if (isCallValid) |
| { |
| context->getnCompressedTexImage(target, lod, bufSize, pixels); |
| } |
| ANGLE_CAPTURE(GetnCompressedTexImage, isCallValid, context, target, lod, bufSize, pixels); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY |
| GetnConvolutionFilter(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnConvolutionFilter, "glGetnConvolutionFilter", |
| "context = %d, target = %s, format = %s, type = %s, bufSize = %d, image = 0x%016" PRIxPTR |
| "", |
| CID(context), GLenumToString(GLenumGroup::ConvolutionTarget, target), |
| GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)image); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetnConvolutionFilter(context, target, format, type, bufSize, image)); |
| if (isCallValid) |
| { |
| context->getnConvolutionFilter(target, format, type, bufSize, image); |
| } |
| ANGLE_CAPTURE(GetnConvolutionFilter, isCallValid, context, target, format, type, bufSize, |
| image); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnHistogram(GLenum target, |
| GLboolean reset, |
| GLenum format, |
| GLenum type, |
| GLsizei bufSize, |
| void *values) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnHistogram, "glGetnHistogram", |
| "context = %d, target = %s, reset = %s, format = %s, type = %s, bufSize = %d, values = " |
| "0x%016" PRIxPTR "", |
| CID(context), GLenumToString(GLenumGroup::HistogramTargetEXT, target), |
| GLbooleanToString(reset), GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)values); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetnHistogram(context, target, reset, format, type, bufSize, values)); |
| if (isCallValid) |
| { |
| context->getnHistogram(target, reset, format, type, bufSize, values); |
| } |
| ANGLE_CAPTURE(GetnHistogram, isCallValid, context, target, reset, format, type, bufSize, |
| values); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnMapdv(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnMapdv, "glGetnMapdv", |
| "context = %d, target = %s, query = %s, bufSize = %d, v = 0x%016" PRIxPTR "", |
| CID(context), GLenumToString(GLenumGroup::MapTarget, target), |
| GLenumToString(GLenumGroup::MapQuery, query), bufSize, (uintptr_t)v); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateGetnMapdv(context, target, query, bufSize, v)); |
| if (isCallValid) |
| { |
| context->getnMapdv(target, query, bufSize, v); |
| } |
| ANGLE_CAPTURE(GetnMapdv, isCallValid, context, target, query, bufSize, v); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnMapfv(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnMapfv, "glGetnMapfv", |
| "context = %d, target = %s, query = %s, bufSize = %d, v = 0x%016" PRIxPTR "", |
| CID(context), GLenumToString(GLenumGroup::MapTarget, target), |
| GLenumToString(GLenumGroup::MapQuery, query), bufSize, (uintptr_t)v); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateGetnMapfv(context, target, query, bufSize, v)); |
| if (isCallValid) |
| { |
| context->getnMapfv(target, query, bufSize, v); |
| } |
| ANGLE_CAPTURE(GetnMapfv, isCallValid, context, target, query, bufSize, v); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnMapiv(GLenum target, GLenum query, GLsizei bufSize, GLint *v) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnMapiv, "glGetnMapiv", |
| "context = %d, target = %s, query = %s, bufSize = %d, v = 0x%016" PRIxPTR "", |
| CID(context), GLenumToString(GLenumGroup::MapTarget, target), |
| GLenumToString(GLenumGroup::MapQuery, query), bufSize, (uintptr_t)v); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateGetnMapiv(context, target, query, bufSize, v)); |
| if (isCallValid) |
| { |
| context->getnMapiv(target, query, bufSize, v); |
| } |
| ANGLE_CAPTURE(GetnMapiv, isCallValid, context, target, query, bufSize, v); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnMinmax(GLenum target, |
| GLboolean reset, |
| GLenum format, |
| GLenum type, |
| GLsizei bufSize, |
| void *values) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnMinmax, "glGetnMinmax", |
| "context = %d, target = %s, reset = %s, format = %s, type = %s, bufSize = %d, values = " |
| "0x%016" PRIxPTR "", |
| CID(context), GLenumToString(GLenumGroup::MinmaxTargetEXT, target), |
| GLbooleanToString(reset), GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)values); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetnMinmax(context, target, reset, format, type, bufSize, values)); |
| if (isCallValid) |
| { |
| context->getnMinmax(target, reset, format, type, bufSize, values); |
| } |
| ANGLE_CAPTURE(GetnMinmax, isCallValid, context, target, reset, format, type, bufSize, |
| values); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnPixelMapfv(GLenum map, GLsizei bufSize, GLfloat *values) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnPixelMapfv, "glGetnPixelMapfv", |
| "context = %d, map = %s, bufSize = %d, values = 0x%016" PRIxPTR "", CID(context), |
| GLenumToString(GLenumGroup::PixelMap, map), bufSize, (uintptr_t)values); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateGetnPixelMapfv(context, map, bufSize, values)); |
| if (isCallValid) |
| { |
| context->getnPixelMapfv(map, bufSize, values); |
| } |
| ANGLE_CAPTURE(GetnPixelMapfv, isCallValid, context, map, bufSize, values); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnPixelMapuiv(GLenum map, GLsizei bufSize, GLuint *values) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnPixelMapuiv, "glGetnPixelMapuiv", |
| "context = %d, map = %s, bufSize = %d, values = 0x%016" PRIxPTR "", CID(context), |
| GLenumToString(GLenumGroup::PixelMap, map), bufSize, (uintptr_t)values); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateGetnPixelMapuiv(context, map, bufSize, values)); |
| if (isCallValid) |
| { |
| context->getnPixelMapuiv(map, bufSize, values); |
| } |
| ANGLE_CAPTURE(GetnPixelMapuiv, isCallValid, context, map, bufSize, values); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnPixelMapusv(GLenum map, GLsizei bufSize, GLushort *values) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnPixelMapusv, "glGetnPixelMapusv", |
| "context = %d, map = %s, bufSize = %d, values = 0x%016" PRIxPTR "", CID(context), |
| GLenumToString(GLenumGroup::PixelMap, map), bufSize, (uintptr_t)values); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateGetnPixelMapusv(context, map, bufSize, values)); |
| if (isCallValid) |
| { |
| context->getnPixelMapusv(map, bufSize, values); |
| } |
| ANGLE_CAPTURE(GetnPixelMapusv, isCallValid, context, map, bufSize, values); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnPolygonStipple(GLsizei bufSize, GLubyte *pattern) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnPolygonStipple, "glGetnPolygonStipple", |
| "context = %d, bufSize = %d, pattern = 0x%016" PRIxPTR "", CID(context), bufSize, |
| (uintptr_t)pattern); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateGetnPolygonStipple(context, bufSize, pattern)); |
| if (isCallValid) |
| { |
| context->getnPolygonStipple(bufSize, pattern); |
| } |
| ANGLE_CAPTURE(GetnPolygonStipple, isCallValid, context, bufSize, pattern); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnSeparableFilter(GLenum target, |
| GLenum format, |
| GLenum type, |
| GLsizei rowBufSize, |
| void *row, |
| GLsizei columnBufSize, |
| void *column, |
| void *span) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnSeparableFilter, "glGetnSeparableFilter", |
| "context = %d, target = %s, format = %s, type = %s, rowBufSize = %d, row = 0x%016" PRIxPTR |
| ", columnBufSize = %d, column = 0x%016" PRIxPTR ", span = 0x%016" PRIxPTR "", |
| CID(context), GLenumToString(GLenumGroup::SeparableTargetEXT, target), |
| GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), rowBufSize, (uintptr_t)row, columnBufSize, |
| (uintptr_t)column, (uintptr_t)span); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateGetnSeparableFilter(context, target, format, type, rowBufSize, |
| row, columnBufSize, column, span)); |
| if (isCallValid) |
| { |
| context->getnSeparableFilter(target, format, type, rowBufSize, row, columnBufSize, |
| column, span); |
| } |
| ANGLE_CAPTURE(GetnSeparableFilter, isCallValid, context, target, format, type, rowBufSize, |
| row, columnBufSize, column, span); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY |
| GetnTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnTexImage, "glGetnTexImage", |
| "context = %d, target = %s, level = %d, format = %s, type = %s, bufSize = %d, pixels = " |
| "0x%016" PRIxPTR "", |
| CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level, |
| GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)pixels); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetnTexImage(context, target, level, format, type, bufSize, pixels)); |
| if (isCallValid) |
| { |
| context->getnTexImage(target, level, format, type, bufSize, pixels); |
| } |
| ANGLE_CAPTURE(GetnTexImage, isCallValid, context, target, level, format, type, bufSize, |
| pixels); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnUniformdv(GLuint program, GLint location, GLsizei bufSize, GLdouble *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnUniformdv, "glGetnUniformdv", |
| "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "", |
| CID(context), program, location, bufSize, (uintptr_t)params); |
| |
| if (context) |
| { |
| ShaderProgramID programPacked = FromGL<ShaderProgramID>(program); |
| UniformLocation locationPacked = FromGL<UniformLocation>(location); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetnUniformdv(context, programPacked, locationPacked, bufSize, params)); |
| if (isCallValid) |
| { |
| context->getnUniformdv(programPacked, locationPacked, bufSize, params); |
| } |
| ANGLE_CAPTURE(GetnUniformdv, isCallValid, context, programPacked, locationPacked, bufSize, |
| params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnUniformfv, "glGetnUniformfv", |
| "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "", |
| CID(context), program, location, bufSize, (uintptr_t)params); |
| |
| if (context) |
| { |
| ShaderProgramID programPacked = FromGL<ShaderProgramID>(program); |
| UniformLocation locationPacked = FromGL<UniformLocation>(location); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetnUniformfv(context, programPacked, locationPacked, bufSize, params)); |
| if (isCallValid) |
| { |
| context->getnUniformfv(programPacked, locationPacked, bufSize, params); |
| } |
| ANGLE_CAPTURE(GetnUniformfv, isCallValid, context, programPacked, locationPacked, bufSize, |
| params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnUniformiv, "glGetnUniformiv", |
| "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "", |
| CID(context), program, location, bufSize, (uintptr_t)params); |
| |
| if (context) |
| { |
| ShaderProgramID programPacked = FromGL<ShaderProgramID>(program); |
| UniformLocation locationPacked = FromGL<UniformLocation>(location); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetnUniformiv(context, programPacked, locationPacked, bufSize, params)); |
| if (isCallValid) |
| { |
| context->getnUniformiv(programPacked, locationPacked, bufSize, params); |
| } |
| ANGLE_CAPTURE(GetnUniformiv, isCallValid, context, programPacked, locationPacked, bufSize, |
| params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY GetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::GetnUniformuiv, "glGetnUniformuiv", |
| "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "", |
| CID(context), program, location, bufSize, (uintptr_t)params); |
| |
| if (context) |
| { |
| ShaderProgramID programPacked = FromGL<ShaderProgramID>(program); |
| UniformLocation locationPacked = FromGL<UniformLocation>(location); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateGetnUniformuiv(context, programPacked, locationPacked, bufSize, params)); |
| if (isCallValid) |
| { |
| context->getnUniformuiv(programPacked, locationPacked, bufSize, params); |
| } |
| ANGLE_CAPTURE(GetnUniformuiv, isCallValid, context, programPacked, locationPacked, bufSize, |
| params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY InvalidateNamedFramebufferData(GLuint framebuffer, |
| GLsizei numAttachments, |
| const GLenum *attachments) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::InvalidateNamedFramebufferData, |
| "glInvalidateNamedFramebufferData", |
| "context = %d, framebuffer = %u, numAttachments = %d, attachments = 0x%016" PRIxPTR "", |
| CID(context), framebuffer, numAttachments, (uintptr_t)attachments); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateInvalidateNamedFramebufferData(context, framebufferPacked, |
| numAttachments, attachments)); |
| if (isCallValid) |
| { |
| context->invalidateNamedFramebufferData(framebufferPacked, numAttachments, attachments); |
| } |
| ANGLE_CAPTURE(InvalidateNamedFramebufferData, isCallValid, context, framebufferPacked, |
| numAttachments, attachments); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY InvalidateNamedFramebufferSubData(GLuint framebuffer, |
| GLsizei numAttachments, |
| const GLenum *attachments, |
| GLint x, |
| GLint y, |
| GLsizei width, |
| GLsizei height) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::InvalidateNamedFramebufferSubData, |
| "glInvalidateNamedFramebufferSubData", |
| "context = %d, framebuffer = %u, numAttachments = %d, attachments = 0x%016" PRIxPTR |
| ", x = %d, y = %d, width = %d, height = %d", |
| CID(context), framebuffer, numAttachments, (uintptr_t)attachments, x, y, width, height); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateInvalidateNamedFramebufferSubData(context, framebufferPacked, numAttachments, |
| attachments, x, y, width, height)); |
| if (isCallValid) |
| { |
| context->invalidateNamedFramebufferSubData(framebufferPacked, numAttachments, |
| attachments, x, y, width, height); |
| } |
| ANGLE_CAPTURE(InvalidateNamedFramebufferSubData, isCallValid, context, framebufferPacked, |
| numAttachments, attachments, x, y, width, height); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void *GL_APIENTRY MapNamedBuffer(GLuint buffer, GLenum access) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::MapNamedBuffer, "glMapNamedBuffer", |
| "context = %d, buffer = %u, access = %s", CID(context), buffer, |
| GLenumToString(GLenumGroup::BufferAccessARB, access)); |
| |
| void *returnValue; |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateMapNamedBuffer(context, bufferPacked, access)); |
| if (isCallValid) |
| { |
| returnValue = context->mapNamedBuffer(bufferPacked, access); |
| } |
| else |
| { |
| returnValue = GetDefaultReturnValue<EntryPoint::MapNamedBuffer, void *>(); |
| } |
| ANGLE_CAPTURE(MapNamedBuffer, isCallValid, context, bufferPacked, access, returnValue); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| returnValue = GetDefaultReturnValue<EntryPoint::MapNamedBuffer, void *>(); |
| } |
| return returnValue; |
| } |
| |
| void *GL_APIENTRY MapNamedBufferRange(GLuint buffer, |
| GLintptr offset, |
| GLsizeiptr length, |
| GLbitfield access) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::MapNamedBufferRange, "glMapNamedBufferRange", |
| "context = %d, buffer = %u, offset = %llu, length = %llu, access = %s", CID(context), |
| buffer, static_cast<unsigned long long>(offset), static_cast<unsigned long long>(length), |
| GLbitfieldToString(GLenumGroup::BufferAccessMask, access).c_str()); |
| |
| void *returnValue; |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateMapNamedBufferRange(context, bufferPacked, offset, length, access)); |
| if (isCallValid) |
| { |
| returnValue = context->mapNamedBufferRange(bufferPacked, offset, length, access); |
| } |
| else |
| { |
| returnValue = GetDefaultReturnValue<EntryPoint::MapNamedBufferRange, void *>(); |
| } |
| ANGLE_CAPTURE(MapNamedBufferRange, isCallValid, context, bufferPacked, offset, length, |
| access, returnValue); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| returnValue = GetDefaultReturnValue<EntryPoint::MapNamedBufferRange, void *>(); |
| } |
| return returnValue; |
| } |
| |
| void GL_APIENTRY MemoryBarrierByRegion(GLbitfield barriers) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::MemoryBarrierByRegion, "glMemoryBarrierByRegion", |
| "context = %d, barriers = %s", CID(context), |
| GLbitfieldToString(GLenumGroup::MemoryBarrierMask, barriers).c_str()); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateMemoryBarrierByRegion(context, barriers)); |
| if (isCallValid) |
| { |
| context->memoryBarrierByRegion(barriers); |
| } |
| ANGLE_CAPTURE(MemoryBarrierByRegion, isCallValid, context, barriers); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY NamedBufferData(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::NamedBufferData, "glNamedBufferData", |
| "context = %d, buffer = %u, size = %llu, data = 0x%016" PRIxPTR ", usage = %s", |
| CID(context), buffer, static_cast<unsigned long long>(size), (uintptr_t)data, |
| GLenumToString(GLenumGroup::VertexBufferObjectUsage, usage)); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateNamedBufferData(context, bufferPacked, size, data, usage)); |
| if (isCallValid) |
| { |
| context->namedBufferData(bufferPacked, size, data, usage); |
| } |
| ANGLE_CAPTURE(NamedBufferData, isCallValid, context, bufferPacked, size, data, usage); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY NamedBufferStorage(GLuint buffer, |
| GLsizeiptr size, |
| const void *data, |
| GLbitfield flags) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::NamedBufferStorage, "glNamedBufferStorage", |
| "context = %d, buffer = %u, size = %llu, data = 0x%016" PRIxPTR ", flags = %s", |
| CID(context), buffer, static_cast<unsigned long long>(size), (uintptr_t)data, |
| GLbitfieldToString(GLenumGroup::MapBufferUsageMask, flags).c_str()); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateNamedBufferStorage(context, bufferPacked, size, data, flags)); |
| if (isCallValid) |
| { |
| context->namedBufferStorage(bufferPacked, size, data, flags); |
| } |
| ANGLE_CAPTURE(NamedBufferStorage, isCallValid, context, bufferPacked, size, data, flags); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY NamedBufferSubData(GLuint buffer, |
| GLintptr offset, |
| GLsizeiptr size, |
| const void *data) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::NamedBufferSubData, "glNamedBufferSubData", |
| "context = %d, buffer = %u, offset = %llu, size = %llu, data = 0x%016" PRIxPTR "", |
| CID(context), buffer, static_cast<unsigned long long>(offset), |
| static_cast<unsigned long long>(size), (uintptr_t)data); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateNamedBufferSubData(context, bufferPacked, offset, size, data)); |
| if (isCallValid) |
| { |
| context->namedBufferSubData(bufferPacked, offset, size, data); |
| } |
| ANGLE_CAPTURE(NamedBufferSubData, isCallValid, context, bufferPacked, offset, size, data); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY NamedFramebufferDrawBuffer(GLuint framebuffer, GLenum buf) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::NamedFramebufferDrawBuffer, "glNamedFramebufferDrawBuffer", |
| "context = %d, framebuffer = %u, buf = %s", CID(context), framebuffer, |
| GLenumToString(GLenumGroup::ColorBuffer, buf)); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateNamedFramebufferDrawBuffer(context, framebufferPacked, buf)); |
| if (isCallValid) |
| { |
| context->namedFramebufferDrawBuffer(framebufferPacked, buf); |
| } |
| ANGLE_CAPTURE(NamedFramebufferDrawBuffer, isCallValid, context, framebufferPacked, buf); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY NamedFramebufferDrawBuffers(GLuint framebuffer, GLsizei n, const GLenum *bufs) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::NamedFramebufferDrawBuffers, "glNamedFramebufferDrawBuffers", |
| "context = %d, framebuffer = %u, n = %d, bufs = 0x%016" PRIxPTR "", CID(context), |
| framebuffer, n, (uintptr_t)bufs); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || ValidateNamedFramebufferDrawBuffers( |
| context, framebufferPacked, n, bufs)); |
| if (isCallValid) |
| { |
| context->namedFramebufferDrawBuffers(framebufferPacked, n, bufs); |
| } |
| ANGLE_CAPTURE(NamedFramebufferDrawBuffers, isCallValid, context, framebufferPacked, n, |
| bufs); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY NamedFramebufferParameteri(GLuint framebuffer, GLenum pname, GLint param) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::NamedFramebufferParameteri, "glNamedFramebufferParameteri", |
| "context = %d, framebuffer = %u, pname = %s, param = %d", CID(context), framebuffer, |
| GLenumToString(GLenumGroup::FramebufferParameterName, pname), param); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateNamedFramebufferParameteri(context, framebufferPacked, pname, param)); |
| if (isCallValid) |
| { |
| context->namedFramebufferParameteri(framebufferPacked, pname, param); |
| } |
| ANGLE_CAPTURE(NamedFramebufferParameteri, isCallValid, context, framebufferPacked, pname, |
| param); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY NamedFramebufferReadBuffer(GLuint framebuffer, GLenum src) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::NamedFramebufferReadBuffer, "glNamedFramebufferReadBuffer", |
| "context = %d, framebuffer = %u, src = %s", CID(context), framebuffer, |
| GLenumToString(GLenumGroup::ColorBuffer, src)); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateNamedFramebufferReadBuffer(context, framebufferPacked, src)); |
| if (isCallValid) |
| { |
| context->namedFramebufferReadBuffer(framebufferPacked, src); |
| } |
| ANGLE_CAPTURE(NamedFramebufferReadBuffer, isCallValid, context, framebufferPacked, src); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY NamedFramebufferRenderbuffer(GLuint framebuffer, |
| GLenum attachment, |
| GLenum renderbuffertarget, |
| GLuint renderbuffer) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::NamedFramebufferRenderbuffer, "glNamedFramebufferRenderbuffer", |
| "context = %d, framebuffer = %u, attachment = %s, renderbuffertarget = %s, renderbuffer " |
| "= %u", |
| CID(context), framebuffer, GLenumToString(GLenumGroup::FramebufferAttachment, attachment), |
| GLenumToString(GLenumGroup::RenderbufferTarget, renderbuffertarget), renderbuffer); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| RenderbufferID renderbufferPacked = FromGL<RenderbufferID>(renderbuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateNamedFramebufferRenderbuffer(context, framebufferPacked, attachment, |
| renderbuffertarget, renderbufferPacked)); |
| if (isCallValid) |
| { |
| context->namedFramebufferRenderbuffer(framebufferPacked, attachment, renderbuffertarget, |
| renderbufferPacked); |
| } |
| ANGLE_CAPTURE(NamedFramebufferRenderbuffer, isCallValid, context, framebufferPacked, |
| attachment, renderbuffertarget, renderbufferPacked); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY NamedFramebufferTexture(GLuint framebuffer, |
| GLenum attachment, |
| GLuint texture, |
| GLint level) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::NamedFramebufferTexture, "glNamedFramebufferTexture", |
| "context = %d, framebuffer = %u, attachment = %s, texture = %u, level = %d", CID(context), |
| framebuffer, GLenumToString(GLenumGroup::FramebufferAttachment, attachment), texture, |
| level); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateNamedFramebufferTexture(context, framebufferPacked, attachment, |
| texturePacked, level)); |
| if (isCallValid) |
| { |
| context->namedFramebufferTexture(framebufferPacked, attachment, texturePacked, level); |
| } |
| ANGLE_CAPTURE(NamedFramebufferTexture, isCallValid, context, framebufferPacked, attachment, |
| texturePacked, level); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY NamedFramebufferTextureLayer(GLuint framebuffer, |
| GLenum attachment, |
| GLuint texture, |
| GLint level, |
| GLint layer) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::NamedFramebufferTextureLayer, "glNamedFramebufferTextureLayer", |
| "context = %d, framebuffer = %u, attachment = %s, texture = %u, level = %d, layer = %d", |
| CID(context), framebuffer, GLenumToString(GLenumGroup::FramebufferAttachment, attachment), |
| texture, level, layer); |
| |
| if (context) |
| { |
| FramebufferID framebufferPacked = FromGL<FramebufferID>(framebuffer); |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || ValidateNamedFramebufferTextureLayer( |
| context, framebufferPacked, attachment, |
| texturePacked, level, layer)); |
| if (isCallValid) |
| { |
| context->namedFramebufferTextureLayer(framebufferPacked, attachment, texturePacked, |
| level, layer); |
| } |
| ANGLE_CAPTURE(NamedFramebufferTextureLayer, isCallValid, context, framebufferPacked, |
| attachment, texturePacked, level, layer); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY NamedRenderbufferStorage(GLuint renderbuffer, |
| GLenum internalformat, |
| GLsizei width, |
| GLsizei height) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::NamedRenderbufferStorage, "glNamedRenderbufferStorage", |
| "context = %d, renderbuffer = %u, internalformat = %s, width = %d, height = %d", |
| CID(context), renderbuffer, GLenumToString(GLenumGroup::InternalFormat, internalformat), |
| width, height); |
| |
| if (context) |
| { |
| RenderbufferID renderbufferPacked = FromGL<RenderbufferID>(renderbuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateNamedRenderbufferStorage(context, renderbufferPacked, |
| internalformat, width, height)); |
| if (isCallValid) |
| { |
| context->namedRenderbufferStorage(renderbufferPacked, internalformat, width, height); |
| } |
| ANGLE_CAPTURE(NamedRenderbufferStorage, isCallValid, context, renderbufferPacked, |
| internalformat, width, height); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY NamedRenderbufferStorageMultisample(GLuint renderbuffer, |
| GLsizei samples, |
| GLenum internalformat, |
| GLsizei width, |
| GLsizei height) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::NamedRenderbufferStorageMultisample, |
| "glNamedRenderbufferStorageMultisample", |
| "context = %d, renderbuffer = %u, samples = %d, internalformat = %s, width = %d, height " |
| "= %d", |
| CID(context), renderbuffer, samples, |
| GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height); |
| |
| if (context) |
| { |
| RenderbufferID renderbufferPacked = FromGL<RenderbufferID>(renderbuffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateNamedRenderbufferStorageMultisample(context, renderbufferPacked, samples, |
| internalformat, width, height)); |
| if (isCallValid) |
| { |
| context->namedRenderbufferStorageMultisample(renderbufferPacked, samples, |
| internalformat, width, height); |
| } |
| ANGLE_CAPTURE(NamedRenderbufferStorageMultisample, isCallValid, context, renderbufferPacked, |
| samples, internalformat, width, height); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY ReadnPixels(GLint x, |
| GLint y, |
| GLsizei width, |
| GLsizei height, |
| GLenum format, |
| GLenum type, |
| GLsizei bufSize, |
| void *data) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::ReadnPixels, "glReadnPixels", |
| "context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize " |
| "= %d, data = 0x%016" PRIxPTR "", |
| CID(context), x, y, width, height, GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)data); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateReadnPixels(context, x, y, width, height, format, type, bufSize, data)); |
| if (isCallValid) |
| { |
| context->readnPixels(x, y, width, height, format, type, bufSize, data); |
| } |
| ANGLE_CAPTURE(ReadnPixels, isCallValid, context, x, y, width, height, format, type, bufSize, |
| data); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureBarrier() |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureBarrier, "glTextureBarrier", "context = %d", |
| CID(context)); |
| |
| if (context) |
| { |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || ValidateTextureBarrier(context)); |
| if (isCallValid) |
| { |
| context->textureBarrier(); |
| } |
| ANGLE_CAPTURE(TextureBarrier, isCallValid, context); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureBuffer, "glTextureBuffer", |
| "context = %d, texture = %u, internalformat = %s, buffer = %u", CID(context), texture, |
| GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateTextureBuffer(context, texturePacked, internalformat, bufferPacked)); |
| if (isCallValid) |
| { |
| context->textureBuffer(texturePacked, internalformat, bufferPacked); |
| } |
| ANGLE_CAPTURE(TextureBuffer, isCallValid, context, texturePacked, internalformat, |
| bufferPacked); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureBufferRange(GLuint texture, |
| GLenum internalformat, |
| GLuint buffer, |
| GLintptr offset, |
| GLsizeiptr size) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT( |
| context, gl::EntryPoint::TextureBufferRange, "glTextureBufferRange", |
| "context = %d, texture = %u, internalformat = %s, buffer = %u, offset = %llu, size = %llu", |
| CID(context), texture, GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer, |
| static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size)); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateTextureBufferRange(context, texturePacked, internalformat, |
| bufferPacked, offset, size)); |
| if (isCallValid) |
| { |
| context->textureBufferRange(texturePacked, internalformat, bufferPacked, offset, size); |
| } |
| ANGLE_CAPTURE(TextureBufferRange, isCallValid, context, texturePacked, internalformat, |
| bufferPacked, offset, size); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureParameterIiv(GLuint texture, GLenum pname, const GLint *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureParameterIiv, "glTextureParameterIiv", |
| "context = %d, texture = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), |
| texture, GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)params); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateTextureParameterIiv(context, texturePacked, pname, params)); |
| if (isCallValid) |
| { |
| context->textureParameterIiv(texturePacked, pname, params); |
| } |
| ANGLE_CAPTURE(TextureParameterIiv, isCallValid, context, texturePacked, pname, params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureParameterIuiv(GLuint texture, GLenum pname, const GLuint *params) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureParameterIuiv, "glTextureParameterIuiv", |
| "context = %d, texture = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), |
| texture, GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)params); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateTextureParameterIuiv(context, texturePacked, pname, params)); |
| if (isCallValid) |
| { |
| context->textureParameterIuiv(texturePacked, pname, params); |
| } |
| ANGLE_CAPTURE(TextureParameterIuiv, isCallValid, context, texturePacked, pname, params); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureParameterf(GLuint texture, GLenum pname, GLfloat param) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureParameterf, "glTextureParameterf", |
| "context = %d, texture = %u, pname = %s, param = %f", CID(context), texture, |
| GLenumToString(GLenumGroup::TextureParameterName, pname), param); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateTextureParameterf(context, texturePacked, pname, param)); |
| if (isCallValid) |
| { |
| context->textureParameterf(texturePacked, pname, param); |
| } |
| ANGLE_CAPTURE(TextureParameterf, isCallValid, context, texturePacked, pname, param); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureParameterfv(GLuint texture, GLenum pname, const GLfloat *param) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureParameterfv, "glTextureParameterfv", |
| "context = %d, texture = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context), |
| texture, GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)param); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateTextureParameterfv(context, texturePacked, pname, param)); |
| if (isCallValid) |
| { |
| context->textureParameterfv(texturePacked, pname, param); |
| } |
| ANGLE_CAPTURE(TextureParameterfv, isCallValid, context, texturePacked, pname, param); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureParameteri(GLuint texture, GLenum pname, GLint param) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureParameteri, "glTextureParameteri", |
| "context = %d, texture = %u, pname = %s, param = %d", CID(context), texture, |
| GLenumToString(GLenumGroup::TextureParameterName, pname), param); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateTextureParameteri(context, texturePacked, pname, param)); |
| if (isCallValid) |
| { |
| context->textureParameteri(texturePacked, pname, param); |
| } |
| ANGLE_CAPTURE(TextureParameteri, isCallValid, context, texturePacked, pname, param); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureParameteriv(GLuint texture, GLenum pname, const GLint *param) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureParameteriv, "glTextureParameteriv", |
| "context = %d, texture = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context), |
| texture, GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)param); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateTextureParameteriv(context, texturePacked, pname, param)); |
| if (isCallValid) |
| { |
| context->textureParameteriv(texturePacked, pname, param); |
| } |
| ANGLE_CAPTURE(TextureParameteriv, isCallValid, context, texturePacked, pname, param); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureStorage1D(GLuint texture, |
| GLsizei levels, |
| GLenum internalformat, |
| GLsizei width) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureStorage1D, "glTextureStorage1D", |
| "context = %d, texture = %u, levels = %d, internalformat = %s, width = %d", CID(context), |
| texture, levels, GLenumToString(GLenumGroup::InternalFormat, internalformat), width); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateTextureStorage1D(context, texturePacked, levels, internalformat, width)); |
| if (isCallValid) |
| { |
| context->textureStorage1D(texturePacked, levels, internalformat, width); |
| } |
| ANGLE_CAPTURE(TextureStorage1D, isCallValid, context, texturePacked, levels, internalformat, |
| width); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureStorage2D(GLuint texture, |
| GLsizei levels, |
| GLenum internalformat, |
| GLsizei width, |
| GLsizei height) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureStorage2D, "glTextureStorage2D", |
| "context = %d, texture = %u, levels = %d, internalformat = %s, width = %d, height = %d", |
| CID(context), texture, levels, |
| GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateTextureStorage2D(context, texturePacked, levels, |
| internalformat, width, height)); |
| if (isCallValid) |
| { |
| context->textureStorage2D(texturePacked, levels, internalformat, width, height); |
| } |
| ANGLE_CAPTURE(TextureStorage2D, isCallValid, context, texturePacked, levels, internalformat, |
| width, height); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureStorage2DMultisample(GLuint texture, |
| GLsizei samples, |
| GLenum internalformat, |
| GLsizei width, |
| GLsizei height, |
| GLboolean fixedsamplelocations) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureStorage2DMultisample, "glTextureStorage2DMultisample", |
| "context = %d, texture = %u, samples = %d, internalformat = %s, width = %d, height = %d, " |
| "fixedsamplelocations = %s", |
| CID(context), texture, samples, |
| GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, |
| GLbooleanToString(fixedsamplelocations)); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateTextureStorage2DMultisample(context, texturePacked, samples, internalformat, |
| width, height, fixedsamplelocations)); |
| if (isCallValid) |
| { |
| context->textureStorage2DMultisample(texturePacked, samples, internalformat, width, |
| height, fixedsamplelocations); |
| } |
| ANGLE_CAPTURE(TextureStorage2DMultisample, isCallValid, context, texturePacked, samples, |
| internalformat, width, height, fixedsamplelocations); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureStorage3D(GLuint texture, |
| GLsizei levels, |
| GLenum internalformat, |
| GLsizei width, |
| GLsizei height, |
| GLsizei depth) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureStorage3D, "glTextureStorage3D", |
| "context = %d, texture = %u, levels = %d, internalformat = %s, width = %d, height = %d, " |
| "depth = %d", |
| CID(context), texture, levels, |
| GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateTextureStorage3D(context, texturePacked, levels, internalformat, |
| width, height, depth)); |
| if (isCallValid) |
| { |
| context->textureStorage3D(texturePacked, levels, internalformat, width, height, depth); |
| } |
| ANGLE_CAPTURE(TextureStorage3D, isCallValid, context, texturePacked, levels, internalformat, |
| width, height, depth); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureStorage3DMultisample(GLuint texture, |
| GLsizei samples, |
| GLenum internalformat, |
| GLsizei width, |
| GLsizei height, |
| GLsizei depth, |
| GLboolean fixedsamplelocations) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureStorage3DMultisample, "glTextureStorage3DMultisample", |
| "context = %d, texture = %u, samples = %d, internalformat = %s, width = %d, height = %d, " |
| "depth = %d, fixedsamplelocations = %s", |
| CID(context), texture, samples, |
| GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth, |
| GLbooleanToString(fixedsamplelocations)); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateTextureStorage3DMultisample(context, texturePacked, samples, internalformat, |
| width, height, depth, fixedsamplelocations)); |
| if (isCallValid) |
| { |
| context->textureStorage3DMultisample(texturePacked, samples, internalformat, width, |
| height, depth, fixedsamplelocations); |
| } |
| ANGLE_CAPTURE(TextureStorage3DMultisample, isCallValid, context, texturePacked, samples, |
| internalformat, width, height, depth, fixedsamplelocations); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureSubImage1D(GLuint texture, |
| GLint level, |
| GLint xoffset, |
| GLsizei width, |
| GLenum format, |
| GLenum type, |
| const void *pixels) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureSubImage1D, "glTextureSubImage1D", |
| "context = %d, texture = %u, level = %d, xoffset = %d, width = %d, format = %s, type = " |
| "%s, pixels = 0x%016" PRIxPTR "", |
| CID(context), texture, level, xoffset, width, |
| GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateTextureSubImage1D(context, texturePacked, level, xoffset, width, |
| format, type, pixels)); |
| if (isCallValid) |
| { |
| context->textureSubImage1D(texturePacked, level, xoffset, width, format, type, pixels); |
| } |
| ANGLE_CAPTURE(TextureSubImage1D, isCallValid, context, texturePacked, level, xoffset, width, |
| format, type, pixels); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureSubImage2D(GLuint texture, |
| GLint level, |
| GLint xoffset, |
| GLint yoffset, |
| GLsizei width, |
| GLsizei height, |
| GLenum format, |
| GLenum type, |
| const void *pixels) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureSubImage2D, "glTextureSubImage2D", |
| "context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, width = %d, height " |
| "= %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR "", |
| CID(context), texture, level, xoffset, yoffset, width, height, |
| GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateTextureSubImage2D(context, texturePacked, level, xoffset, yoffset, width, |
| height, format, type, pixels)); |
| if (isCallValid) |
| { |
| context->textureSubImage2D(texturePacked, level, xoffset, yoffset, width, height, |
| format, type, pixels); |
| } |
| ANGLE_CAPTURE(TextureSubImage2D, isCallValid, context, texturePacked, level, xoffset, |
| yoffset, width, height, format, type, pixels); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TextureSubImage3D(GLuint texture, |
| GLint level, |
| GLint xoffset, |
| GLint yoffset, |
| GLint zoffset, |
| GLsizei width, |
| GLsizei height, |
| GLsizei depth, |
| GLenum format, |
| GLenum type, |
| const void *pixels) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TextureSubImage3D, "glTextureSubImage3D", |
| "context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width " |
| "= %d, height = %d, depth = %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR "", |
| CID(context), texture, level, xoffset, yoffset, zoffset, width, height, depth, |
| GLenumToString(GLenumGroup::PixelFormat, format), |
| GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels); |
| |
| if (context) |
| { |
| TextureID texturePacked = FromGL<TextureID>(texture); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateTextureSubImage3D(context, texturePacked, level, xoffset, yoffset, zoffset, |
| width, height, depth, format, type, pixels)); |
| if (isCallValid) |
| { |
| context->textureSubImage3D(texturePacked, level, xoffset, yoffset, zoffset, width, |
| height, depth, format, type, pixels); |
| } |
| ANGLE_CAPTURE(TextureSubImage3D, isCallValid, context, texturePacked, level, xoffset, |
| yoffset, zoffset, width, height, depth, format, type, pixels); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TransformFeedbackBufferBase, "glTransformFeedbackBufferBase", |
| "context = %d, xfb = %u, index = %u, buffer = %u", CID(context), xfb, index, buffer); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateTransformFeedbackBufferBase(context, xfb, index, bufferPacked)); |
| if (isCallValid) |
| { |
| context->transformFeedbackBufferBase(xfb, index, bufferPacked); |
| } |
| ANGLE_CAPTURE(TransformFeedbackBufferBase, isCallValid, context, xfb, index, bufferPacked); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY TransformFeedbackBufferRange(GLuint xfb, |
| GLuint index, |
| GLuint buffer, |
| GLintptr offset, |
| GLsizeiptr size) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::TransformFeedbackBufferRange, "glTransformFeedbackBufferRange", |
| "context = %d, xfb = %u, index = %u, buffer = %u, offset = %llu, size = %llu", |
| CID(context), xfb, index, buffer, static_cast<unsigned long long>(offset), |
| static_cast<unsigned long long>(size)); |
| |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateTransformFeedbackBufferRange(context, xfb, index, bufferPacked, offset, size)); |
| if (isCallValid) |
| { |
| context->transformFeedbackBufferRange(xfb, index, bufferPacked, offset, size); |
| } |
| ANGLE_CAPTURE(TransformFeedbackBufferRange, isCallValid, context, xfb, index, bufferPacked, |
| offset, size); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| GLboolean GL_APIENTRY UnmapNamedBuffer(GLuint buffer) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::UnmapNamedBuffer, "glUnmapNamedBuffer", |
| "context = %d, buffer = %u", CID(context), buffer); |
| |
| GLboolean returnValue; |
| if (context) |
| { |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || ValidateUnmapNamedBuffer(context, bufferPacked)); |
| if (isCallValid) |
| { |
| returnValue = context->unmapNamedBuffer(bufferPacked); |
| } |
| else |
| { |
| returnValue = GetDefaultReturnValue<EntryPoint::UnmapNamedBuffer, GLboolean>(); |
| } |
| ANGLE_CAPTURE(UnmapNamedBuffer, isCallValid, context, bufferPacked, returnValue); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| returnValue = GetDefaultReturnValue<EntryPoint::UnmapNamedBuffer, GLboolean>(); |
| } |
| return returnValue; |
| } |
| |
| void GL_APIENTRY VertexArrayAttribBinding(GLuint vaobj, GLuint attribindex, GLuint bindingindex) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::VertexArrayAttribBinding, "glVertexArrayAttribBinding", |
| "context = %d, vaobj = %u, attribindex = %u, bindingindex = %u", CID(context), vaobj, |
| attribindex, bindingindex); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateVertexArrayAttribBinding(context, vaobjPacked, attribindex, bindingindex)); |
| if (isCallValid) |
| { |
| context->vertexArrayAttribBinding(vaobjPacked, attribindex, bindingindex); |
| } |
| ANGLE_CAPTURE(VertexArrayAttribBinding, isCallValid, context, vaobjPacked, attribindex, |
| bindingindex); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY VertexArrayAttribFormat(GLuint vaobj, |
| GLuint attribindex, |
| GLint size, |
| GLenum type, |
| GLboolean normalized, |
| GLuint relativeoffset) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::VertexArrayAttribFormat, "glVertexArrayAttribFormat", |
| "context = %d, vaobj = %u, attribindex = %u, size = %d, type = %s, normalized = %s, " |
| "relativeoffset = %u", |
| CID(context), vaobj, attribindex, size, |
| GLenumToString(GLenumGroup::VertexAttribType, type), GLbooleanToString(normalized), |
| relativeoffset); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateVertexArrayAttribFormat(context, vaobjPacked, attribindex, size, |
| type, normalized, relativeoffset)); |
| if (isCallValid) |
| { |
| context->vertexArrayAttribFormat(vaobjPacked, attribindex, size, type, normalized, |
| relativeoffset); |
| } |
| ANGLE_CAPTURE(VertexArrayAttribFormat, isCallValid, context, vaobjPacked, attribindex, size, |
| type, normalized, relativeoffset); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY VertexArrayAttribIFormat(GLuint vaobj, |
| GLuint attribindex, |
| GLint size, |
| GLenum type, |
| GLuint relativeoffset) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::VertexArrayAttribIFormat, "glVertexArrayAttribIFormat", |
| "context = %d, vaobj = %u, attribindex = %u, size = %d, type = %s, relativeoffset = %u", |
| CID(context), vaobj, attribindex, size, |
| GLenumToString(GLenumGroup::VertexAttribType, type), relativeoffset); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateVertexArrayAttribIFormat(context, vaobjPacked, attribindex, |
| size, type, relativeoffset)); |
| if (isCallValid) |
| { |
| context->vertexArrayAttribIFormat(vaobjPacked, attribindex, size, type, relativeoffset); |
| } |
| ANGLE_CAPTURE(VertexArrayAttribIFormat, isCallValid, context, vaobjPacked, attribindex, |
| size, type, relativeoffset); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY VertexArrayAttribLFormat(GLuint vaobj, |
| GLuint attribindex, |
| GLint size, |
| GLenum type, |
| GLuint relativeoffset) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::VertexArrayAttribLFormat, "glVertexArrayAttribLFormat", |
| "context = %d, vaobj = %u, attribindex = %u, size = %d, type = %s, relativeoffset = %u", |
| CID(context), vaobj, attribindex, size, |
| GLenumToString(GLenumGroup::VertexAttribType, type), relativeoffset); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateVertexArrayAttribLFormat(context, vaobjPacked, attribindex, |
| size, type, relativeoffset)); |
| if (isCallValid) |
| { |
| context->vertexArrayAttribLFormat(vaobjPacked, attribindex, size, type, relativeoffset); |
| } |
| ANGLE_CAPTURE(VertexArrayAttribLFormat, isCallValid, context, vaobjPacked, attribindex, |
| size, type, relativeoffset); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY VertexArrayBindingDivisor(GLuint vaobj, GLuint bindingindex, GLuint divisor) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::VertexArrayBindingDivisor, "glVertexArrayBindingDivisor", |
| "context = %d, vaobj = %u, bindingindex = %u, divisor = %u", CID(context), vaobj, |
| bindingindex, divisor); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = |
| (context->skipValidation() || |
| ValidateVertexArrayBindingDivisor(context, vaobjPacked, bindingindex, divisor)); |
| if (isCallValid) |
| { |
| context->vertexArrayBindingDivisor(vaobjPacked, bindingindex, divisor); |
| } |
| ANGLE_CAPTURE(VertexArrayBindingDivisor, isCallValid, context, vaobjPacked, bindingindex, |
| divisor); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY VertexArrayElementBuffer(GLuint vaobj, GLuint buffer) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::VertexArrayElementBuffer, "glVertexArrayElementBuffer", |
| "context = %d, vaobj = %u, buffer = %u", CID(context), vaobj, buffer); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateVertexArrayElementBuffer(context, vaobjPacked, bufferPacked)); |
| if (isCallValid) |
| { |
| context->vertexArrayElementBuffer(vaobjPacked, bufferPacked); |
| } |
| ANGLE_CAPTURE(VertexArrayElementBuffer, isCallValid, context, vaobjPacked, bufferPacked); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY VertexArrayVertexBuffer(GLuint vaobj, |
| GLuint bindingindex, |
| GLuint buffer, |
| GLintptr offset, |
| GLsizei stride) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::VertexArrayVertexBuffer, "glVertexArrayVertexBuffer", |
| "context = %d, vaobj = %u, bindingindex = %u, buffer = %u, offset = %llu, stride = %d", |
| CID(context), vaobj, bindingindex, buffer, static_cast<unsigned long long>(offset), |
| stride); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| BufferID bufferPacked = FromGL<BufferID>(buffer); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateVertexArrayVertexBuffer(context, vaobjPacked, bindingindex, |
| bufferPacked, offset, stride)); |
| if (isCallValid) |
| { |
| context->vertexArrayVertexBuffer(vaobjPacked, bindingindex, bufferPacked, offset, |
| stride); |
| } |
| ANGLE_CAPTURE(VertexArrayVertexBuffer, isCallValid, context, vaobjPacked, bindingindex, |
| bufferPacked, offset, stride); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| |
| void GL_APIENTRY VertexArrayVertexBuffers(GLuint vaobj, |
| GLuint first, |
| GLsizei count, |
| const GLuint *buffers, |
| const GLintptr *offsets, |
| const GLsizei *strides) |
| { |
| Context *context = GetValidGlobalContext(); |
| EVENT(context, gl::EntryPoint::VertexArrayVertexBuffers, "glVertexArrayVertexBuffers", |
| "context = %d, vaobj = %u, first = %u, count = %d, buffers = 0x%016" PRIxPTR |
| ", offsets = 0x%016" PRIxPTR ", strides = 0x%016" PRIxPTR "", |
| CID(context), vaobj, first, count, (uintptr_t)buffers, (uintptr_t)offsets, |
| (uintptr_t)strides); |
| |
| if (context) |
| { |
| VertexArrayID vaobjPacked = FromGL<VertexArrayID>(vaobj); |
| const BufferID *buffersPacked = FromGL<const BufferID *>(buffers); |
| std::unique_lock<angle::GlobalMutex> shareContextLock = GetShareGroupLock(context); |
| bool isCallValid = (context->skipValidation() || |
| ValidateVertexArrayVertexBuffers(context, vaobjPacked, first, count, |
| buffersPacked, offsets, strides)); |
| if (isCallValid) |
| { |
| context->vertexArrayVertexBuffers(vaobjPacked, first, count, buffersPacked, offsets, |
| strides); |
| } |
| ANGLE_CAPTURE(VertexArrayVertexBuffers, isCallValid, context, vaobjPacked, first, count, |
| buffersPacked, offsets, strides); |
| } |
| else |
| { |
| GenerateContextLostErrorOnCurrentGlobalContext(); |
| } |
| } |
| } // namespace gl |