blob: 00f1bfff70fe00176b7c0793855ac4fcd73bba56 [file] [log] [blame]
/*
* Copyright 2015, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* THIS FILE WAS GENERATED BY apic. DO NOT EDIT.
*/
#include "abort_exception.h"
#include "gles_imports.h"
#include "gles_types.h"
#include "gles_spy.h"
#include <gapic/log.h>
#include <gapic/coder/memory.h>
#include <gapic/coder/atom.h>
#include <gapic/coder/gles.h>
#define __STDC_FORMAT_MACROS
#include <inttypes.h>
#include <stdint.h>
#include <memory>
#include <string>
namespace gapii {
void GlesSpy::subBindBufferRange(CallObserver* observer, const std::function<void()>& call, uint32_t target, GLuint index, BufferId buffer, GLintptr offset, GLsizeiptr size) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
BufferBinding l_bufferBinding = BufferBinding(buffer, offset, size);
switch (target) {
case GLenum::GL_TRANSFORM_FEEDBACK_BUFFER: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
checkNotNull(l_ctx).mBoundBuffers.mTransformFeedbackBuffer = buffer;
std::shared_ptr<TransformFeedback> l__res_0 = subGetBoundTransformFeedback(observer, call);
checkNotNull(l__res_0).mBuffers[index] = l_bufferBinding;
break;
}
case GLenum::GL_UNIFORM_BUFFER: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
checkNotNull(l_ctx).mBoundBuffers.mUniformBuffer = buffer;
checkNotNull(l_ctx).mBoundBuffers.mUniformBuffers[index] = l_bufferBinding;
break;
}
case GLenum::GL_ATOMIC_COUNTER_BUFFER: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
checkNotNull(l_ctx).mBoundBuffers.mAtomicCounterBuffer = buffer;
checkNotNull(l_ctx).mBoundBuffers.mAtomicCounterBuffers[index] = l_bufferBinding;
break;
}
case GLenum::GL_SHADER_STORAGE_BUFFER: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
checkNotNull(l_ctx).mBoundBuffers.mShaderStorageBuffer = buffer;
checkNotNull(l_ctx).mBoundBuffers.mShaderStorageBuffers[index] = l_bufferBinding;
break;
}
default: {
subGlErrorInvalidEnum(observer, call, target);
}
}
if (!(checkNotNull(l_ctx).mInstances.mBuffers.count(buffer) > 0)) {
checkNotNull(l_ctx).mInstances.mBuffers[buffer] = std::shared_ptr<Buffer>(new Buffer(Slice<uint8_t>(), (GLsizeiptr)(0L), GLenum::GL_STATIC_DRAW, 0, GLbooleanLabels::GL_FALSE, nullptr, (GLintptr)(0L), (GLsizeiptr)(0L), ""));
}
return;
}
void GlesSpy::subMapBuffer(CallObserver* observer, const std::function<void()>& call, uint32_t target, uint32_t access, uint8_t* ptr) {
std::shared_ptr<Buffer> l_b = subGetBoundBufferOrError(observer, call, target);
uint32_t l_accessBits = /* switch(access) */
/* case GLenum::GL_READ_ONLY: */(((access) == (GLenum::GL_READ_ONLY))) ? (GLbitfield::GL_MAP_READ_BIT) :
/* case GLenum::GL_WRITE_ONLY: */(((access) == (GLenum::GL_WRITE_ONLY))) ? (GLbitfield::GL_MAP_WRITE_BIT) :
/* case GLenum::GL_READ_WRITE: */(((access) == (GLenum::GL_READ_WRITE))) ? ((GLbitfield::GL_MAP_READ_BIT) | (GLbitfield::GL_MAP_WRITE_BIT)) :
/* default: */ 0;
subMapBufferRange(observer, call, target, (GLintptr)(0L), checkNotNull(l_b).mSize, l_accessBits, ptr);
return;
}
void GlesSpy::subFlushMappedBufferRange(CallObserver* observer, const std::function<void()>& call, uint32_t target, GLintptr offset, GLsizeiptr length) {
std::shared_ptr<Buffer> l_b = subGetBoundBufferOrError(observer, call, target);
if ((checkNotNull(l_b).mMapped) == (GLbooleanLabels::GL_FALSE)) {
subGlErrorInvalidOperation(observer, call);
}
if (!((checkNotNull(l_b).mAccessFlags & GLbitfield::GL_MAP_FLUSH_EXPLICIT_BIT) != 0)) {
subGlErrorInvalidOperation(observer, call);
}
if (((offset) < ((GLintptr)(0L))) || (((length) < ((GLsizeiptr)(0L))) || ((((GLsizeiptr)(offset)) + (length)) > (checkNotNull(l_b).mMapLength)))) {
subGlErrorInvalidValue(observer, call);
}
GLintptr l_dstOffset = (checkNotNull(l_b).mMapOffset) + (offset);
observer->copy(slice(checkNotNull(l_b).mData, (uint64_t)(l_dstOffset), (uint64_t)((l_dstOffset) + ((GLintptr)(length)))), slice(checkNotNull(l_b).mMapPointer, (uint64_t)(offset), (uint64_t)((offset) + ((GLintptr)(length)))));
return;
}
void GlesSpy::subSetConstant(CallObserver* observer, const std::function<void()>& call, std::shared_ptr<StaticContextState> ctx, uint32_t name, Slice<uint8_t> value) {
switch (name) {
case GLenum::GL_RENDERER: {
checkNotNull(ctx).mConstants.mRenderer = observer->string(value.as<char>());
break;
}
case GLenum::GL_VENDOR: {
checkNotNull(ctx).mConstants.mVendor = observer->string(value.as<char>());
break;
}
case GLenum::GL_VERSION: {
checkNotNull(ctx).mConstants.mVersion = observer->string(value.as<char>());
break;
}
case GLenum::GL_EXTENSIONS: {
Slice<char> l_extensions = value.as<char>();
for (int32_t l_start = 0L; l_start < int32_t((value.count())); ++l_start) {
if (((l_start) == (0L)) || ((observer->string(slice(l_extensions, (uint64_t)((l_start) - (1L)), (uint64_t)(l_start)))) == (" "))) {
uint32_t l_idx = uint32_t((checkNotNull(ctx).mConstants.mExtensions.size()));
for (int32_t l_end = l_start; l_end < (int32_t((value.count()))) + (1L); ++l_end) {
if (((l_end) == (int32_t((value.count())))) || ((observer->string(slice(l_extensions, (uint64_t)(l_end), (uint64_t)((l_end) + (1L))))) == (" "))) {
if (!(checkNotNull(ctx).mConstants.mExtensions.count(l_idx) > 0)) {
checkNotNull(ctx).mConstants.mExtensions[l_idx] = observer->string(slice(l_extensions, (uint64_t)(l_start), (uint64_t)(l_end)));
}
}
}
}
}
break;
}
case GLenum::GL_SHADING_LANGUAGE_VERSION: {
checkNotNull(ctx).mConstants.mShadingLanguageVersion = observer->string(value.as<char>());
break;
}
case GLenum::GL_SUBPIXEL_BITS: {
checkNotNull(ctx).mConstants.mSubpixelBits = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_ELEMENT_INDEX: {
checkNotNull(ctx).mConstants.mMaxElementIndex = observer->read(value.as<GLint64>(), 0ULL);
break;
}
case GLenum::GL_MAX_3D_TEXTURE_SIZE: {
checkNotNull(ctx).mConstants.mMax3dTextureSize = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TEXTURE_SIZE: {
checkNotNull(ctx).mConstants.mMaxTextureSize = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_ARRAY_TEXTURE_LAYERS: {
checkNotNull(ctx).mConstants.mMaxArrayTextureLayers = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TEXTURE_LOD_BIAS: {
checkNotNull(ctx).mConstants.mMaxTextureLodBias = observer->read(value.as<GLfloat>(), 0ULL);
break;
}
case GLenum::GL_MAX_CUBE_MAP_TEXTURE_SIZE: {
checkNotNull(ctx).mConstants.mMaxCubeMapTextureSize = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_RENDERBUFFER_SIZE: {
checkNotNull(ctx).mConstants.mMaxRenderbufferSize = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_ALIASED_POINT_SIZE_RANGE: {
checkNotNull(ctx).mConstants.mAliasedPointSizeRange[0ULL] = observer->read(value.as<GLfloat>(), 0ULL);
checkNotNull(ctx).mConstants.mAliasedPointSizeRange[1ULL] = observer->read(value.as<GLfloat>(), 1ULL);
break;
}
case GLenum::GL_ALIASED_LINE_WIDTH_RANGE: {
checkNotNull(ctx).mConstants.mAliasedLineWidthRange[0ULL] = observer->read(value.as<GLfloat>(), 0ULL);
checkNotNull(ctx).mConstants.mAliasedLineWidthRange[1ULL] = observer->read(value.as<GLfloat>(), 1ULL);
break;
}
case GLenum::GL_MULTISAMPLE_LINE_WIDTH_RANGE: {
checkNotNull(ctx).mConstants.mMultisampleLineWidthRange[0ULL] = observer->read(value.as<GLfloat>(), 0ULL);
checkNotNull(ctx).mConstants.mMultisampleLineWidthRange[1ULL] = observer->read(value.as<GLfloat>(), 1ULL);
break;
}
case GLenum::GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY: {
checkNotNull(ctx).mConstants.mMultisampleLineWidthGranularity = observer->read(value.as<GLfloat>(), 0ULL);
break;
}
case GLenum::GL_MAX_DRAW_BUFFERS: {
checkNotNull(ctx).mConstants.mMaxDrawBuffers = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAMEBUFFER_WIDTH: {
checkNotNull(ctx).mConstants.mMaxFramebufferWidth = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAMEBUFFER_HEIGHT: {
checkNotNull(ctx).mConstants.mMaxFramebufferHeight = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAMEBUFFER_LAYERS: {
checkNotNull(ctx).mConstants.mMaxFramebufferLayers = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAMEBUFFER_SAMPLES: {
checkNotNull(ctx).mConstants.mMaxFramebufferSamples = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COLOR_ATTACHMENTS: {
checkNotNull(ctx).mConstants.mMaxColorAttachments = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: {
checkNotNull(ctx).mConstants.mMinFragmentInterpolationOffset = observer->read(value.as<GLfloat>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: {
checkNotNull(ctx).mConstants.mMaxFragmentInterpolationOffset = observer->read(value.as<GLfloat>(), 0ULL);
break;
}
case GLenum::GL_FRAGMENT_INTERPOLATION_OFFSET_BITS: {
checkNotNull(ctx).mConstants.mFragmentInterpolationOffsetBits = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VIEWPORT_DIMS: {
checkNotNull(ctx).mConstants.mMaxViewportDims[0ULL] = observer->read(value.as<GLint>(), 0ULL);
checkNotNull(ctx).mConstants.mMaxViewportDims[1ULL] = observer->read(value.as<GLint>(), 1ULL);
break;
}
case GLenum::GL_MAX_SAMPLE_MASK_WORDS: {
checkNotNull(ctx).mConstants.mMaxSampleMaskWords = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COLOR_TEXTURE_SAMPLES: {
checkNotNull(ctx).mConstants.mMaxColorTextureSamples = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_DEPTH_TEXTURE_SAMPLES: {
checkNotNull(ctx).mConstants.mMaxDepthTextureSamples = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_INTEGER_SAMPLES: {
checkNotNull(ctx).mConstants.mMaxIntegerSamples = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_SERVER_WAIT_TIMEOUT: {
checkNotNull(ctx).mConstants.mMaxServerWaitTimeout = observer->read(value.as<GLint64>(), 0ULL);
break;
}
case GLenum::GL_LAYER_PROVOKING_VERTEX: {
checkNotNull(ctx).mConstants.mLayerProvokingVertex = observer->read(value.as<uint32_t>(), 0ULL);
break;
}
case GLenum::GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED: {
checkNotNull(ctx).mConstants.mPrimitiveRestartForPatchesSupported = observer->read(value.as<GLboolean>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: {
checkNotNull(ctx).mConstants.mMaxVertexAttribRelativeOffset = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_ATTRIB_BINDINGS: {
checkNotNull(ctx).mConstants.mMaxVertexAttribBindings = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_ATTRIB_STRIDE: {
checkNotNull(ctx).mConstants.mMaxVertexAttribStride = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_ELEMENTS_INDICES: {
checkNotNull(ctx).mConstants.mMaxElementsIndices = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_ELEMENTS_VERTICES: {
checkNotNull(ctx).mConstants.mMaxElementsVertices = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TEXTURE_BUFFER_SIZE: {
checkNotNull(ctx).mConstants.mMaxTextureBufferSize = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_COMPRESSED_TEXTURE_FORMATS: {
Slice<uint32_t> l_formats = value.as<uint32_t>();
for (uint32_t l_i = 0UL; l_i < uint32_t((l_formats.count())); ++l_i) {
checkNotNull(ctx).mConstants.mCompressedTextureFormats[l_i] = observer->read(l_formats, (uint64_t)(l_i));
}
break;
}
case GLenum::GL_PROGRAM_BINARY_FORMATS: {
Slice<uint32_t> l_formats = value.as<uint32_t>();
for (uint32_t l_i = 0UL; l_i < uint32_t((l_formats.count())); ++l_i) {
checkNotNull(ctx).mConstants.mProgramBinaryFormats[l_i] = observer->read(l_formats, (uint64_t)(l_i));
}
break;
}
case GLenum::GL_SHADER_BINARY_FORMATS: {
Slice<uint32_t> l_formats = value.as<uint32_t>();
for (uint32_t l_i = 0UL; l_i < uint32_t((l_formats.count())); ++l_i) {
checkNotNull(ctx).mConstants.mShaderBinaryFormats[l_i] = observer->read(l_formats, (uint64_t)(l_i));
}
break;
}
case GLenum::GL_SHADER_COMPILER: {
checkNotNull(ctx).mConstants.mShaderCompiler = observer->read(value.as<GLboolean>(), 0ULL);
break;
}
case GLenum::GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT: {
checkNotNull(ctx).mConstants.mTextureBufferOffsetAlignment = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAJOR_VERSION: {
checkNotNull(ctx).mConstants.mMajorVersion = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MINOR_VERSION: {
checkNotNull(ctx).mConstants.mMinorVersion = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_CONTEXT_FLAGS: {
checkNotNull(ctx).mConstants.mContextFlags = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_ATTRIBS: {
checkNotNull(ctx).mConstants.mMaxVertexAttribs = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_UNIFORM_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxVertexUniformComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_UNIFORM_VECTORS: {
checkNotNull(ctx).mConstants.mMaxVertexUniformVectors = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_UNIFORM_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxVertexUniformBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_OUTPUT_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxVertexOutputComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: {
checkNotNull(ctx).mConstants.mMaxVertexTextureImageUnits = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: {
checkNotNull(ctx).mConstants.mMaxVertexAtomicCounterBuffers = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_ATOMIC_COUNTERS: {
checkNotNull(ctx).mConstants.mMaxVertexAtomicCounters = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxVertexShaderStorageBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_GEN_LEVEL: {
checkNotNull(ctx).mConstants.mMaxTessGenLevel = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_PATCH_VERTICES: {
checkNotNull(ctx).mConstants.mMaxPatchVertices = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxTessControlUniformComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: {
checkNotNull(ctx).mConstants.mMaxTessControlTextureImageUnits = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxTessControlOutputComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_PATCH_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxTessPatchComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxTessControlTotalOutputComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxTessControlInputComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxTessControlUniformBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS: {
checkNotNull(ctx).mConstants.mMaxTessControlAtomicCounterBuffers = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS: {
checkNotNull(ctx).mConstants.mMaxTessControlAtomicCounters = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxTessControlShaderStorageBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxTessEvaluationUniformComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: {
checkNotNull(ctx).mConstants.mMaxTessEvaluationTextureImageUnits = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxTessEvaluationOutputComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxTessEvaluationInputComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxTessEvaluationUniformBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS: {
checkNotNull(ctx).mConstants.mMaxTessEvaluationAtomicCounterBuffers = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS: {
checkNotNull(ctx).mConstants.mMaxTessEvaluationAtomicCounters = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxTessEvaluationShaderStorageBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxGeometryUniformComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_GEOMETRY_UNIFORM_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxGeometryUniformBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_GEOMETRY_INPUT_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxGeometryInputComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxGeometryOutputComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_GEOMETRY_OUTPUT_VERTICES: {
checkNotNull(ctx).mConstants.mMaxGeometryOutputVertices = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxGeometryTotalOutputComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: {
checkNotNull(ctx).mConstants.mMaxGeometryTextureImageUnits = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_GEOMETRY_SHADER_INVOCATIONS: {
checkNotNull(ctx).mConstants.mMaxGeometryShaderInvocations = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS: {
checkNotNull(ctx).mConstants.mMaxGeometryAtomicCounterBuffers = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_GEOMETRY_ATOMIC_COUNTERS: {
checkNotNull(ctx).mConstants.mMaxGeometryAtomicCounters = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxGeometryShaderStorageBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxFragmentUniformComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAGMENT_UNIFORM_VECTORS: {
checkNotNull(ctx).mConstants.mMaxFragmentUniformVectors = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAGMENT_UNIFORM_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxFragmentUniformBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAGMENT_INPUT_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxFragmentInputComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TEXTURE_IMAGE_UNITS: {
checkNotNull(ctx).mConstants.mMaxTextureImageUnits = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: {
checkNotNull(ctx).mConstants.mMaxFragmentAtomicCounterBuffers = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAGMENT_ATOMIC_COUNTERS: {
checkNotNull(ctx).mConstants.mMaxFragmentAtomicCounters = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxFragmentShaderStorageBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: {
checkNotNull(ctx).mConstants.mMinProgramTextureGatherOffset = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: {
checkNotNull(ctx).mConstants.mMaxProgramTextureGatherOffset = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MIN_PROGRAM_TEXEL_OFFSET: {
checkNotNull(ctx).mConstants.mMinProgramTexelOffset = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_PROGRAM_TEXEL_OFFSET: {
checkNotNull(ctx).mConstants.mMaxProgramTexelOffset = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMPUTE_WORK_GROUP_COUNT: {
checkNotNull(ctx).mConstants.mMaxComputeWorkGroupCount[0ULL] = observer->read(value.as<GLint>(), 0ULL);
checkNotNull(ctx).mConstants.mMaxComputeWorkGroupCount[1ULL] = observer->read(value.as<GLint>(), 1ULL);
checkNotNull(ctx).mConstants.mMaxComputeWorkGroupCount[2ULL] = observer->read(value.as<GLint>(), 2ULL);
break;
}
case GLenum::GL_MAX_COMPUTE_WORK_GROUP_SIZE: {
checkNotNull(ctx).mConstants.mMaxComputeWorkGroupSize[0ULL] = observer->read(value.as<GLint>(), 0ULL);
checkNotNull(ctx).mConstants.mMaxComputeWorkGroupSize[1ULL] = observer->read(value.as<GLint>(), 1ULL);
checkNotNull(ctx).mConstants.mMaxComputeWorkGroupSize[2ULL] = observer->read(value.as<GLint>(), 2ULL);
break;
}
case GLenum::GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS: {
checkNotNull(ctx).mConstants.mMaxComputeWorkGroupInvocations = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMPUTE_UNIFORM_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxComputeUniformBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS: {
checkNotNull(ctx).mConstants.mMaxComputeTextureImageUnits = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMPUTE_SHARED_MEMORY_SIZE: {
checkNotNull(ctx).mConstants.mMaxComputeSharedMemorySize = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMPUTE_UNIFORM_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxComputeUniformComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: {
checkNotNull(ctx).mConstants.mMaxComputeAtomicCounterBuffers = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMPUTE_ATOMIC_COUNTERS: {
checkNotNull(ctx).mConstants.mMaxComputeAtomicCounters = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxCombinedComputeUniformComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxComputeShaderStorageBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_UNIFORM_BUFFER_BINDINGS: {
checkNotNull(ctx).mConstants.mMaxUniformBufferBindings = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_UNIFORM_BLOCK_SIZE: {
checkNotNull(ctx).mConstants.mMaxUniformBlockSize = observer->read(value.as<GLint64>(), 0ULL);
break;
}
case GLenum::GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: {
checkNotNull(ctx).mConstants.mUniformBufferOffsetAlignment = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_UNIFORM_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxCombinedUniformBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxCombinedVertexUniformComponents = observer->read(value.as<GLint64>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxCombinedTessControlUniformComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxCombinedTessEvaluationUniformComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxCombinedGeometryUniformComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxCombinedFragmentUniformComponents = observer->read(value.as<GLint64>(), 0ULL);
break;
}
case GLenum::GL_MAX_VARYING_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxVaryingComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VARYING_VECTORS: {
checkNotNull(ctx).mConstants.mMaxVaryingVectors = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: {
checkNotNull(ctx).mConstants.mMaxCombinedTextureImageUnits = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: {
checkNotNull(ctx).mConstants.mMaxCombinedShaderOutputResources = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_UNIFORM_LOCATIONS: {
checkNotNull(ctx).mConstants.mMaxUniformLocations = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: {
checkNotNull(ctx).mConstants.mMaxAtomicCounterBufferBindings = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: {
checkNotNull(ctx).mConstants.mMaxAtomicCounterBufferSize = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: {
checkNotNull(ctx).mConstants.mMaxCombinedAtomicCounterBuffers = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_ATOMIC_COUNTERS: {
checkNotNull(ctx).mConstants.mMaxCombinedAtomicCounters = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_IMAGE_UNITS: {
checkNotNull(ctx).mConstants.mMaxImageUnits = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_VERTEX_IMAGE_UNIFORMS: {
checkNotNull(ctx).mConstants.mMaxVertexImageUniforms = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS: {
checkNotNull(ctx).mConstants.mMaxTessControlImageUniforms = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS: {
checkNotNull(ctx).mConstants.mMaxTessEvaluationImageUniforms = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_GEOMETRY_IMAGE_UNIFORMS: {
checkNotNull(ctx).mConstants.mMaxGeometryImageUniforms = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_FRAGMENT_IMAGE_UNIFORMS: {
checkNotNull(ctx).mConstants.mMaxFragmentImageUniforms = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMPUTE_IMAGE_UNIFORMS: {
checkNotNull(ctx).mConstants.mMaxComputeImageUniforms = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_IMAGE_UNIFORMS: {
checkNotNull(ctx).mConstants.mMaxCombinedImageUniforms = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS: {
checkNotNull(ctx).mConstants.mMaxShaderStorageBufferBindings = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_SHADER_STORAGE_BLOCK_SIZE: {
checkNotNull(ctx).mConstants.mMaxShaderStorageBlockSize = observer->read(value.as<GLint64>(), 0ULL);
break;
}
case GLenum::GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS: {
checkNotNull(ctx).mConstants.mMaxCombinedShaderStorageBlocks = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: {
checkNotNull(ctx).mConstants.mShaderStorageBufferOffsetAlignment = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_DEBUG_MESSAGE_LENGTH: {
checkNotNull(ctx).mConstants.mMaxDebugMessageLength = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_DEBUG_LOGGED_MESSAGES: {
checkNotNull(ctx).mConstants.mMaxDebugLoggedMessages = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_DEBUG_GROUP_STACK_DEPTH: {
checkNotNull(ctx).mConstants.mMaxDebugGroupStackDepth = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_LABEL_LENGTH: {
checkNotNull(ctx).mConstants.mMaxLabelLength = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxTransformFeedbackInterleavedComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: {
checkNotNull(ctx).mConstants.mMaxTransformFeedbackSeparateAttribs = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: {
checkNotNull(ctx).mConstants.mMaxTransformFeedbackSeparateComponents = observer->read(value.as<GLint>(), 0ULL);
break;
}
case GLenum::GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: {
checkNotNull(ctx).mConstants.mMaxTextureMaxAnisotropyExt = observer->read(value.as<GLfloat>(), 0ULL);
break;
}
case GLenum::GL_LOW_FLOAT: // fall-through...
case GLenum::GL_MEDIUM_FLOAT: // fall-through...
case GLenum::GL_HIGH_FLOAT: // fall-through...
case GLenum::GL_LOW_INT: // fall-through...
case GLenum::GL_MEDIUM_INT: // fall-through...
case GLenum::GL_HIGH_INT: {
PrecisionFormat l_vsPrecisionFormat = PrecisionFormat(observer->read(value.as<GLint>(), 0ULL), observer->read(value.as<GLint>(), 1ULL), observer->read(value.as<GLint>(), 2ULL));
PrecisionFormat l_fsPrecisionFormat = PrecisionFormat(observer->read(value.as<GLint>(), 3ULL), observer->read(value.as<GLint>(), 4ULL), observer->read(value.as<GLint>(), 5ULL));
switch (name) {
case GLenum::GL_LOW_FLOAT: {
checkNotNull(ctx).mConstants.mVertexShaderPrecisionFormat.mLowFloat = l_vsPrecisionFormat;
checkNotNull(ctx).mConstants.mFragmentShaderPrecisionFormat.mLowFloat = l_fsPrecisionFormat;
break;
}
case GLenum::GL_MEDIUM_FLOAT: {
checkNotNull(ctx).mConstants.mVertexShaderPrecisionFormat.mMediumFloat = l_vsPrecisionFormat;
checkNotNull(ctx).mConstants.mFragmentShaderPrecisionFormat.mMediumFloat = l_fsPrecisionFormat;
break;
}
case GLenum::GL_HIGH_FLOAT: {
checkNotNull(ctx).mConstants.mVertexShaderPrecisionFormat.mHighFloat = l_vsPrecisionFormat;
checkNotNull(ctx).mConstants.mFragmentShaderPrecisionFormat.mHighFloat = l_fsPrecisionFormat;
break;
}
case GLenum::GL_LOW_INT: {
checkNotNull(ctx).mConstants.mVertexShaderPrecisionFormat.mLowInt = l_vsPrecisionFormat;
checkNotNull(ctx).mConstants.mFragmentShaderPrecisionFormat.mLowInt = l_fsPrecisionFormat;
break;
}
case GLenum::GL_MEDIUM_INT: {
checkNotNull(ctx).mConstants.mVertexShaderPrecisionFormat.mMediumInt = l_vsPrecisionFormat;
checkNotNull(ctx).mConstants.mFragmentShaderPrecisionFormat.mMediumInt = l_fsPrecisionFormat;
break;
}
case GLenum::GL_HIGH_INT: {
checkNotNull(ctx).mConstants.mVertexShaderPrecisionFormat.mHighInt = l_vsPrecisionFormat;
checkNotNull(ctx).mConstants.mFragmentShaderPrecisionFormat.mHighInt = l_fsPrecisionFormat;
break;
}
}
break;
}
default: {
}
}
return;
}
void GlesSpy::subGetDebugMessageLog(CallObserver* observer, const std::function<void()>& call, GLuint count, GLsizei bufSize, uint32_t* sources, uint32_t* types, GLuint* ids, uint32_t* severities, GLsizei* lengths, GLchar* messageLog, GLuint gotCount) {
(void)count;
if ((sources) != (nullptr)) {
observer->write(slice(sources, (uint64_t)((GLuint)(0UL)), (uint64_t)(gotCount)));
}
if ((types) != (nullptr)) {
observer->write(slice(types, (uint64_t)((GLuint)(0UL)), (uint64_t)(gotCount)));
}
if ((ids) != (nullptr)) {
observer->write(slice(ids, (uint64_t)((GLuint)(0UL)), (uint64_t)(gotCount)));
}
if ((severities) != (nullptr)) {
observer->write(slice(severities, (uint64_t)((GLuint)(0UL)), (uint64_t)(gotCount)));
}
if ((lengths) != (nullptr)) {
observer->write(slice(lengths, (uint64_t)((GLuint)(0UL)), (uint64_t)(gotCount)));
}
if ((gotCount) > ((GLuint)(0UL))) {
observer->write(slice(messageLog, (uint64_t)((GLsizei)(0L)), (uint64_t)(bufSize)));
}
return;
}
void GlesSpy::subPushDebugGroup(CallObserver* observer, const std::function<void()>& call, uint32_t source, GLuint id, GLsizei length, GLchar* message) {
switch (source) {
case GLenum::GL_DEBUG_SOURCE_APPLICATION: // fall-through...
case GLenum::GL_DEBUG_SOURCE_THIRD_PARTY: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, source);
}
}
(void)id;
subReadString(observer, call, length, message);
return;
}
void GlesSpy::subDrawElementsBaseVertex(CallObserver* observer, const std::function<void()>& call, uint32_t draw_mode, GLsizei indices_count, uint32_t indices_type, IndicesPointer indices, GLint base_vertex) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subDrawElements(observer, call, l_ctx, draw_mode, indices_count, indices_type, indices, (GLsizei)(1L), base_vertex);
return;
}
void GlesSpy::subDrawElementsInstanced(CallObserver* observer, const std::function<void()>& call, uint32_t draw_mode, GLsizei indices_count, uint32_t indices_type, IndicesPointer indices, GLsizei instance_count) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subDrawElements(observer, call, l_ctx, draw_mode, indices_count, indices_type, indices, instance_count, (GLint)(0L));
return;
}
void GlesSpy::subPatchParameteri(CallObserver* observer, const std::function<void()>& call, uint32_t pname, GLint value) {
if ((pname) != (GLenum::GL_PATCH_VERTICES)) {
subGlErrorInvalidEnum(observer, call, pname);
}
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
checkNotNull(l_ctx).mMiscellaneous.mPatchVertices = value;
return;
}
void GlesSpy::subPrimitiveBoundingBox(CallObserver* observer, const std::function<void()>& call, GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
checkNotNull(l_ctx).mRasterization.mPrimitiveBoundingBox.mMin = {minX, minY, minZ, minW};
checkNotNull(l_ctx).mRasterization.mPrimitiveBoundingBox.mMax = {maxX, maxY, maxZ, maxW};
return;
}
void GlesSpy::subObserveAttribList(CallObserver* observer, const std::function<void()>& call, EGLint* attrib_list) {
if ((attrib_list) != (nullptr)) {
Slice<bool> l_done = make<bool>(1ULL);
observer->write<bool>(l_done, 0ULL, false);
for (int32_t l_i = 0L; l_i < 256L; ++l_i) {
if (!(observer->read(l_done, 0ULL))) {
Slice<EGLint> l_pair = slice(attrib_list, (uint64_t)((l_i) * (2L)), (uint64_t)(((l_i) * (2L)) + (2L)));
if (((uint32_t)(observer->read(l_pair, 0ULL))) != (EGLenum::EGL_NONE)) {
(void)observer->read(l_pair, 1ULL);
} else {
observer->write<bool>(l_done, 0ULL, true);
}
}
}
}
return;
}
void GlesSpy::subApplyProgramInfoExtra(CallObserver* observer, const std::function<void()>& call, ProgramId programId, std::shared_ptr<ProgramInfo> info) {
if ((info) != (std::shared_ptr<ProgramInfo>())) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
std::shared_ptr<Program> l_program = findOrZero(checkNotNull(l_ctx).mInstances.mPrograms, programId);
checkNotNull(l_program).mLinkStatus = checkNotNull(info).mLinkStatus;
checkNotNull(l_program).mInfoLog = checkNotNull(info).mInfoLog;
checkNotNull(l_program).mActiveAttributes = AttributeIndexToActiveAttribute();
checkNotNull(l_program).mActiveUniforms = UniformIndexToActiveUniform();
checkNotNull(l_program).mUniforms = UniformLocationToUniform();
for (AttributeIndex l_i = (AttributeIndex)(0UL); l_i < (AttributeIndex)(uint32_t((checkNotNull(info).mActiveAttributes.size()))); ++l_i) {
checkNotNull(l_program).mActiveAttributes[l_i] = findOrZero(checkNotNull(info).mActiveAttributes, l_i);
}
for (UniformIndex l_i = (UniformIndex)(0UL); l_i < (UniformIndex)(uint32_t((checkNotNull(info).mActiveUniforms.size()))); ++l_i) {
ActiveUniform l_u = findOrZero(checkNotNull(info).mActiveUniforms, l_i);
checkNotNull(l_program).mActiveUniforms[l_i] = l_u;
for (UniformLocation l_j = (UniformLocation)(0L); l_j < (UniformLocation)(l_u.mArraySize); ++l_j) {
checkNotNull(l_program).mUniforms[(l_u.mLocation) + (l_j)] = Uniform(make<uint8_t>(0ULL), l_u.mType);
}
}
}
return;
}
void GlesSpy::subBlendBarrier(CallObserver* observer, const std::function<void()>& call) {
return;
}
void GlesSpy::subBlendEquationi(CallObserver* observer, const std::function<void()>& call, DrawBufferIndex buf, uint32_t mode) {
subSetBlendEquation(observer, call, buf, 1L, mode, mode);
return;
}
void GlesSpy::subBlendFunci(CallObserver* observer, const std::function<void()>& call, DrawBufferIndex buf, uint32_t src, uint32_t dst) {
subSetBlendFunc(observer, call, buf, 1L, src, dst, src, dst);
return;
}
void GlesSpy::subStencilOpSeparate(CallObserver* observer, const std::function<void()>& call, uint32_t face, uint32_t fail, uint32_t pass_depth_fail, uint32_t pass_depth_pass) {
switch (face) {
case GLenum::GL_BACK: // fall-through...
case GLenum::GL_FRONT: // fall-through...
case GLenum::GL_FRONT_AND_BACK: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, face);
}
}
subCheckStencilOp(observer, call, fail);
subCheckStencilOp(observer, call, pass_depth_fail);
subCheckStencilOp(observer, call, pass_depth_pass);
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
if (((face) == (GLenum::GL_FRONT)) || ((face) == (GLenum::GL_FRONT_AND_BACK))) {
checkNotNull(l_ctx).mFragmentOperations.mStencil.mFail = fail;
checkNotNull(l_ctx).mFragmentOperations.mStencil.mPassDepthFail = pass_depth_fail;
checkNotNull(l_ctx).mFragmentOperations.mStencil.mPassDepthPass = pass_depth_pass;
}
if (((face) == (GLenum::GL_BACK)) || ((face) == (GLenum::GL_FRONT_AND_BACK))) {
checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackFail = fail;
checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackPassDepthFail = pass_depth_fail;
checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackPassDepthPass = pass_depth_pass;
}
return;
}
std::shared_ptr<Framebuffer> GlesSpy::subGetBoundFramebufferOrErrorInvalidEnum(CallObserver* observer, const std::function<void()>& call, uint32_t framebuffer_target) {
switch (framebuffer_target) {
case GLenum::GL_FRAMEBUFFER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
break;
}
case GLenum::GL_DRAW_FRAMEBUFFER: // fall-through...
case GLenum::GL_READ_FRAMEBUFFER: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, framebuffer_target);
}
}
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
FramebufferId l_framebufferId = /* switch(framebuffer_target) */
/* case GLenum::GL_FRAMEBUFFER: */(((framebuffer_target) == (GLenum::GL_FRAMEBUFFER))) ? (findOrZero(checkNotNull(l_ctx).mBoundFramebuffers, GLenum::GL_DRAW_FRAMEBUFFER)) :
/* case GLenum::GL_DRAW_FRAMEBUFFER: */(((framebuffer_target) == (GLenum::GL_DRAW_FRAMEBUFFER))) ? (findOrZero(checkNotNull(l_ctx).mBoundFramebuffers, GLenum::GL_DRAW_FRAMEBUFFER)) :
/* case GLenum::GL_READ_FRAMEBUFFER: */(((framebuffer_target) == (GLenum::GL_READ_FRAMEBUFFER))) ? (findOrZero(checkNotNull(l_ctx).mBoundFramebuffers, GLenum::GL_READ_FRAMEBUFFER)) :
/* default: */ 0;
return findOrZero(checkNotNull(l_ctx).mInstances.mFramebuffers, l_framebufferId);
}
bool GlesSpy::subIsDefaultFramebuffer(CallObserver* observer, const std::function<void()>& call, std::shared_ptr<Framebuffer> framebuffer) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
return (framebuffer) == (findOrZero(checkNotNull(l_ctx).mInstances.mFramebuffers, (FramebufferId)(0UL)));
}
void GlesSpy::subSetFramebufferAttachment(CallObserver* observer, const std::function<void()>& call, uint32_t framebuffer_target, uint32_t framebuffer_attachment, FramebufferAttachment attachment) {
std::shared_ptr<Framebuffer> l_framebuffer = subGetBoundFramebufferOrErrorInvalidEnum(observer, call, framebuffer_target);
bool l__res_0 = subIsDefaultFramebuffer(observer, call, l_framebuffer);
if (l__res_0) {
subGlErrorInvalidOperation(observer, call);
}
if ((framebuffer_attachment) == (GLenum::GL_DEPTH_STENCIL_ATTACHMENT)) {
checkNotNull(l_framebuffer).mAttachments[GLenum::GL_DEPTH_ATTACHMENT] = attachment;
checkNotNull(l_framebuffer).mAttachments[GLenum::GL_STENCIL_ATTACHMENT] = attachment;
} else {
checkNotNull(l_framebuffer).mAttachments[framebuffer_attachment] = attachment;
}
return;
}
void GlesSpy::subBlitFramebuffer(CallObserver* observer, const std::function<void()>& call, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, uint32_t mask, uint32_t filter) {
subSupportsBits(observer, call, mask, (GLbitfield::GL_COLOR_BUFFER_BIT) | ((GLbitfield::GL_DEPTH_BUFFER_BIT) | (GLbitfield::GL_STENCIL_BUFFER_BIT)));
if ((mask & GLbitfield::GL_COLOR_BUFFER_BIT) != 0) {
}
if ((mask & GLbitfield::GL_DEPTH_BUFFER_BIT) != 0) {
}
if ((mask & GLbitfield::GL_STENCIL_BUFFER_BIT) != 0) {
}
switch (filter) {
case GLenum::GL_LINEAR: // fall-through...
case GLenum::GL_NEAREST: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, filter);
}
}
(void)srcX0;
(void)srcY0;
(void)srcX1;
(void)srcY1;
(void)dstX0;
(void)dstY0;
(void)dstX1;
(void)dstY1;
return;
}
void GlesSpy::subColorMaski(CallObserver* observer, const std::function<void()>& call, DrawBufferIndex index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
checkNotNull(l_ctx).mFramebuffer.mColorWritemask[index] = {r, g, b, a};
return;
}
void GlesSpy::subFramebufferTexture(CallObserver* observer, const std::function<void()>& call, uint32_t target, uint32_t attachment, TextureId texture, GLint level) {
switch (attachment) {
case GLenum::GL_COLOR_ATTACHMENT0: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT1: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT10: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT11: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT12: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT13: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT14: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT15: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT2: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT3: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT4: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT5: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT6: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT7: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT8: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT9: // fall-through...
case GLenum::GL_DEPTH_ATTACHMENT: // fall-through...
case GLenum::GL_DEPTH_STENCIL_ATTACHMENT: // fall-through...
case GLenum::GL_STENCIL_ATTACHMENT: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, attachment);
}
}
FramebufferAttachment l_attachment_info = FramebufferAttachment(GLenum::GL_NONE, (GLuint)(0UL), (GLint)(0L), GLenum::GL_NONE, (GLint)(0L), GLbooleanLabels::GL_FALSE);
if ((texture) != ((TextureId)(0UL))) {
l_attachment_info.mObjectType = GLenum::GL_TEXTURE;
l_attachment_info.mObjectName = (GLuint)(texture);
l_attachment_info.mTextureLevel = level;
l_attachment_info.mLayered = (GLboolean)(0U);
}
subSetFramebufferAttachment(observer, call, target, attachment, l_attachment_info);
return;
}
void GlesSpy::subFramebufferTexture2D(CallObserver* observer, const std::function<void()>& call, uint32_t framebuffer_target, uint32_t framebuffer_attachment, uint32_t texture_target, TextureId texture, GLint level) {
switch (framebuffer_attachment) {
case GLenum::GL_COLOR_ATTACHMENT0: // fall-through...
case GLenum::GL_DEPTH_ATTACHMENT: // fall-through...
case GLenum::GL_STENCIL_ATTACHMENT: {
break;
}
case GLenum::GL_COLOR_ATTACHMENT1: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT10: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT11: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT12: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT13: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT14: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT15: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT2: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT3: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT4: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT5: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT6: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT7: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT8: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT9: // fall-through...
case GLenum::GL_DEPTH_STENCIL_ATTACHMENT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, framebuffer_attachment);
}
}
switch (texture_target) {
case GLenum::GL_TEXTURE_2D: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_X: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_X: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Y: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Z: {
break;
}
case GLenum::GL_TEXTURE_2D_MULTISAMPLE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, texture_target);
}
}
if ((level) != ((GLint)(0L))) {
subGlErrorInvalidValue(observer, call);
}
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
FramebufferAttachment l_attachment = FramebufferAttachment(GLenum::GL_NONE, (GLuint)(0UL), (GLint)(0L), GLenum::GL_NONE, (GLint)(0L), GLbooleanLabels::GL_FALSE);
if ((texture) != ((TextureId)(0UL))) {
if (!(checkNotNull(l_ctx).mInstances.mTextures.count(texture) > 0)) {
subGlErrorInvalidOperation(observer, call);
}
uint32_t l_kind = /* switch(texture_target) */
/* case GLenum::GL_TEXTURE_2D: */(((texture_target) == (GLenum::GL_TEXTURE_2D))) ? (GLenum::GL_TEXTURE_2D) :
/* case GLenum::GL_TEXTURE_2D_MULTISAMPLE: */(((texture_target) == (GLenum::GL_TEXTURE_2D_MULTISAMPLE))) ? (GLenum::GL_TEXTURE_2D_MULTISAMPLE) :
/* case GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_X, GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Z: */(((texture_target) == (GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_X))|| ((texture_target) == (GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Y))|| ((texture_target) == (GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Z))|| ((texture_target) == (GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_X))|| ((texture_target) == (GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Y))|| ((texture_target) == (GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Z))) ? (GLenum::GL_TEXTURE_CUBE_MAP) :
/* default: */ (uint32_t)(0L);
if ((checkNotNull(findOrZero(checkNotNull(l_ctx).mInstances.mTextures, texture)).mKind) != (l_kind)) {
subGlErrorInvalidOperation(observer, call);
}
l_attachment.mObjectType = GLenum::GL_TEXTURE;
l_attachment.mObjectName = (GLuint)(texture);
l_attachment.mTextureLevel = level;
l_attachment.mTextureCubeMapFace = /* switch(texture_target) */
/* case GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_X, GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Z: */(((texture_target) == (GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_X))|| ((texture_target) == (GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Y))|| ((texture_target) == (GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Z))|| ((texture_target) == (GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_X))|| ((texture_target) == (GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Y))|| ((texture_target) == (GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Z))) ? (texture_target) :
/* default: */ GLenum::GL_NONE;
}
subSetFramebufferAttachment(observer, call, framebuffer_target, framebuffer_attachment, l_attachment);
return;
}
void GlesSpy::subInvalidateFramebuffer(CallObserver* observer, const std::function<void()>& call, uint32_t target, GLsizei count, uint32_t* attachments) {
std::shared_ptr<Framebuffer> l_framebuffer = subGetBoundFramebufferOrErrorInvalidEnum(observer, call, target);
Slice<uint32_t> l_a = slice(attachments, (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
bool l__res_0 = subIsDefaultFramebuffer(observer, call, l_framebuffer);
if (l__res_0) {
for (GLsizei l_i = (GLsizei)(0L); l_i < count; ++l_i) {
switch (observer->read(l_a, (uint64_t)(l_i))) {
case GLenum::GL_COLOR: // fall-through...
case GLenum::GL_DEPTH: // fall-through...
case GLenum::GL_STENCIL: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, observer->read(l_a, (uint64_t)(l_i)));
}
}
}
} else {
for (GLsizei l_i = (GLsizei)(0L); l_i < count; ++l_i) {
switch (observer->read(l_a, (uint64_t)(l_i))) {
case GLenum::GL_COLOR_ATTACHMENT0: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT1: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT10: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT11: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT12: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT13: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT14: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT15: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT2: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT3: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT4: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT5: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT6: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT7: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT8: // fall-through...
case GLenum::GL_COLOR_ATTACHMENT9: // fall-through...
case GLenum::GL_DEPTH_ATTACHMENT: // fall-through...
case GLenum::GL_DEPTH_STENCIL_ATTACHMENT: // fall-through...
case GLenum::GL_STENCIL_ATTACHMENT: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, observer->read(l_a, (uint64_t)(l_i)));
}
}
}
}
return;
}
void GlesSpy::subRenderbufferStorageMultisample(CallObserver* observer, const std::function<void()>& call, uint32_t target, GLsizei samples, uint32_t internalformat, GLsizei width, GLsizei height) {
switch (target) {
case GLenum::GL_RENDERBUFFER: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, target);
}
}
switch (internalformat) {
case GLenum::GL_DEPTH_COMPONENT16: // fall-through...
case GLenum::GL_RGB565: // fall-through...
case GLenum::GL_RGB5_A1: // fall-through...
case GLenum::GL_RGBA4: // fall-through...
case GLenum::GL_STENCIL_INDEX8: {
break;
}
case GLenum::GL_DEPTH24_STENCIL8: // fall-through...
case GLenum::GL_DEPTH32F_STENCIL8: // fall-through...
case GLenum::GL_DEPTH_COMPONENT24: // fall-through...
case GLenum::GL_DEPTH_COMPONENT32F: // fall-through...
case GLenum::GL_R16I: // fall-through...
case GLenum::GL_R16UI: // fall-through...
case GLenum::GL_R32I: // fall-through...
case GLenum::GL_R32UI: // fall-through...
case GLenum::GL_R8: // fall-through...
case GLenum::GL_R8I: // fall-through...
case GLenum::GL_R8UI: // fall-through...
case GLenum::GL_RG16I: // fall-through...
case GLenum::GL_RG16UI: // fall-through...
case GLenum::GL_RG32I: // fall-through...
case GLenum::GL_RG32UI: // fall-through...
case GLenum::GL_RG8: // fall-through...
case GLenum::GL_RG8I: // fall-through...
case GLenum::GL_RG8UI: // fall-through...
case GLenum::GL_RGB10_A2: // fall-through...
case GLenum::GL_RGB10_A2UI: // fall-through...
case GLenum::GL_RGB8: // fall-through...
case GLenum::GL_RGBA16I: // fall-through...
case GLenum::GL_RGBA16UI: // fall-through...
case GLenum::GL_RGBA32I: // fall-through...
case GLenum::GL_RGBA32UI: // fall-through...
case GLenum::GL_RGBA8: // fall-through...
case GLenum::GL_RGBA8I: // fall-through...
case GLenum::GL_RGBA8UI: // fall-through...
case GLenum::GL_SRGB8_ALPHA8: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
break;
}
case GLenum::GL_R16: // fall-through...
case GLenum::GL_RG16: // fall-through...
case GLenum::GL_RGBA16: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_norm16);
break;
}
default: {
subGlErrorInvalidEnum(observer, call, internalformat);
}
}
if (((width) < ((GLsizei)(0L))) || ((height) < ((GLsizei)(0L)))) {
subGlErrorInvalidValue(observer, call);
}
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
if (((width) > ((GLsizei)(checkNotNull(l_ctx).mConstants.mMaxRenderbufferSize))) || ((height) > ((GLsizei)(checkNotNull(l_ctx).mConstants.mMaxRenderbufferSize)))) {
subGlErrorInvalidValue(observer, call);
}
RenderbufferId l_id = findOrZero(checkNotNull(l_ctx).mBoundRenderbuffers, target);
if ((l_id) == ((RenderbufferId)(0UL))) {
subGlErrorInvalidOperation(observer, call);
}
std::shared_ptr<Renderbuffer> l_rb = findOrZero(checkNotNull(l_ctx).mInstances.mRenderbuffers, l_id);
checkNotNull(l_rb).mInternalFormat = internalformat;
checkNotNull(l_rb).mWidth = width;
checkNotNull(l_rb).mHeight = height;
(void)samples;
return;
}
uint32_t GlesSpy::subImageSize(CallObserver* observer, const std::function<void()>& call, uint32_t width, uint32_t height, uint32_t format, uint32_t ty) {
uint32_t l_ups = subUncompressedPixelSize(observer, call, format, ty);
return /* switch(ty) */
/* case GLenum::GL_COMPRESSED_R11_EAC, GLenum::GL_COMPRESSED_SIGNED_R11_EAC, GLenum::GL_COMPRESSED_RGB8_ETC2, GLenum::GL_COMPRESSED_SRGB8_ETC2, GLenum::GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, GLenum::GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: */(((ty) == (GLenum::GL_COMPRESSED_R11_EAC))|| ((ty) == (GLenum::GL_COMPRESSED_SIGNED_R11_EAC))|| ((ty) == (GLenum::GL_COMPRESSED_RGB8_ETC2))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ETC2))|| ((ty) == (GLenum::GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2))) ? ((((width) + (3UL)) / (4UL)) * ((((height) + (3UL)) / (4UL)) * (8UL))) :
/* case GLenum::GL_COMPRESSED_RG11_EAC, GLenum::GL_COMPRESSED_SIGNED_RG11_EAC, GLenum::GL_COMPRESSED_RGBA8_ETC2_EAC, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, GLenum::GL_COMPRESSED_RGBA_ASTC_4x4, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4: */(((ty) == (GLenum::GL_COMPRESSED_RG11_EAC))|| ((ty) == (GLenum::GL_COMPRESSED_SIGNED_RG11_EAC))|| ((ty) == (GLenum::GL_COMPRESSED_RGBA8_ETC2_EAC))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC))|| ((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_4x4))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4))) ? ((((width) + (3UL)) / (4UL)) * ((((height) + (3UL)) / (4UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_5x4, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_5x4))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4))) ? ((((width) + (4UL)) / (5UL)) * ((((height) + (3UL)) / (4UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_5x5, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_5x5))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5))) ? ((((width) + (4UL)) / (5UL)) * ((((height) + (4UL)) / (5UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_6x5, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_6x5))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5))) ? ((((width) + (5UL)) / (6UL)) * ((((height) + (4UL)) / (5UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_6x6, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_6x6))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6))) ? ((((width) + (5UL)) / (6UL)) * ((((height) + (5UL)) / (6UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_8x5, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_8x5))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5))) ? ((((width) + (7UL)) / (8UL)) * ((((height) + (4UL)) / (5UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_8x6, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_8x6))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6))) ? ((((width) + (7UL)) / (8UL)) * ((((height) + (5UL)) / (6UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_8x8, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_8x8))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8))) ? ((((width) + (7UL)) / (8UL)) * ((((height) + (7UL)) / (8UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_10x5, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_10x5))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5))) ? ((((width) + (9UL)) / (10UL)) * ((((height) + (4UL)) / (5UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_10x6, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_10x6))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6))) ? ((((width) + (9UL)) / (10UL)) * ((((height) + (5UL)) / (6UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_10x8, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_10x8))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8))) ? ((((width) + (9UL)) / (10UL)) * ((((height) + (7UL)) / (8UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_10x10, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_10x10))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10))) ? ((((width) + (9UL)) / (10UL)) * ((((height) + (9UL)) / (10UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_12x10, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_12x10))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10))) ? ((((width) + (11UL)) / (12UL)) * ((((height) + (9UL)) / (10UL)) * (16UL))) :
/* case GLenum::GL_COMPRESSED_RGBA_ASTC_12x12, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: */(((ty) == (GLenum::GL_COMPRESSED_RGBA_ASTC_12x12))|| ((ty) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12))) ? ((((width) + (11UL)) / (12UL)) * ((((height) + (11UL)) / (12UL)) * (16UL))) :
/* case GLenum::GL_ETC1_RGB8_OES: */(((ty) == (GLenum::GL_ETC1_RGB8_OES))) ? ((((width) + (3UL)) / (4UL)) * ((((height) + (3UL)) / (4UL)) * (8UL))) :
/* default: */ (width) * ((height) * (l_ups));
}
uint32_t GlesSpy::subComponentCount(CallObserver* observer, const std::function<void()>& call, uint32_t format) {
return /* switch(format) */
/* case GLenum::GL_ALPHA: */(((format) == (GLenum::GL_ALPHA))) ? (1UL) :
/* case GLenum::GL_LUMINANCE: */(((format) == (GLenum::GL_LUMINANCE))) ? (1UL) :
/* case GLenum::GL_LUMINANCE_ALPHA: */(((format) == (GLenum::GL_LUMINANCE_ALPHA))) ? (2UL) :
/* case GLenum::GL_RED: */(((format) == (GLenum::GL_RED))) ? (1UL) :
/* case GLenum::GL_RED_INTEGER: */(((format) == (GLenum::GL_RED_INTEGER))) ? (1UL) :
/* case GLenum::GL_RG: */(((format) == (GLenum::GL_RG))) ? (2UL) :
/* case GLenum::GL_RG_INTEGER: */(((format) == (GLenum::GL_RG_INTEGER))) ? (2UL) :
/* case GLenum::GL_RGB: */(((format) == (GLenum::GL_RGB))) ? (3UL) :
/* case GLenum::GL_RGB_INTEGER: */(((format) == (GLenum::GL_RGB_INTEGER))) ? (3UL) :
/* case GLenum::GL_RGBA: */(((format) == (GLenum::GL_RGBA))) ? (4UL) :
/* case GLenum::GL_RGBA_INTEGER: */(((format) == (GLenum::GL_RGBA_INTEGER))) ? (4UL) :
/* case GLenum::GL_DEPTH_COMPONENT: */(((format) == (GLenum::GL_DEPTH_COMPONENT))) ? (1UL) :
/* case GLenum::GL_DEPTH_STENCIL: */(((format) == (GLenum::GL_DEPTH_STENCIL))) ? (2UL) :
/* case GLenum::GL_STENCIL_INDEX: */(((format) == (GLenum::GL_STENCIL_INDEX))) ? (1UL) :
/* case GLenum::GL_BGRA_EXT: */(((format) == (GLenum::GL_BGRA_EXT))) ? (4UL) :
/* default: */ 0;
}
uint32_t GlesSpy::subImageFormat(CallObserver* observer, const std::function<void()>& call, uint32_t internalFormat) {
return /* switch(internalFormat) */
/* case GLenum::GL_ALPHA8_EXT: */(((internalFormat) == (GLenum::GL_ALPHA8_EXT))) ? (GLenum::GL_ALPHA) :
/* case GLenum::GL_R8, GLenum::GL_R8_SNORM, GLenum::GL_R16, GLenum::GL_R16_SNORM, GLenum::GL_R16F, GLenum::GL_R32F, GLenum::GL_COMPRESSED_R11_EAC, GLenum::GL_COMPRESSED_SIGNED_R11_EAC: */(((internalFormat) == (GLenum::GL_R8))|| ((internalFormat) == (GLenum::GL_R8_SNORM))|| ((internalFormat) == (GLenum::GL_R16))|| ((internalFormat) == (GLenum::GL_R16_SNORM))|| ((internalFormat) == (GLenum::GL_R16F))|| ((internalFormat) == (GLenum::GL_R32F))|| ((internalFormat) == (GLenum::GL_COMPRESSED_R11_EAC))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SIGNED_R11_EAC))) ? (GLenum::GL_RED) :
/* case GLenum::GL_R8UI, GLenum::GL_R8I, GLenum::GL_R16UI, GLenum::GL_R16I, GLenum::GL_R32UI, GLenum::GL_R32I: */(((internalFormat) == (GLenum::GL_R8UI))|| ((internalFormat) == (GLenum::GL_R8I))|| ((internalFormat) == (GLenum::GL_R16UI))|| ((internalFormat) == (GLenum::GL_R16I))|| ((internalFormat) == (GLenum::GL_R32UI))|| ((internalFormat) == (GLenum::GL_R32I))) ? (GLenum::GL_RED_INTEGER) :
/* case GLenum::GL_RG8, GLenum::GL_RG8_SNORM, GLenum::GL_RG16, GLenum::GL_RG16_SNORM, GLenum::GL_RG16F, GLenum::GL_RG32F, GLenum::GL_COMPRESSED_RG11_EAC, GLenum::GL_COMPRESSED_SIGNED_RG11_EAC: */(((internalFormat) == (GLenum::GL_RG8))|| ((internalFormat) == (GLenum::GL_RG8_SNORM))|| ((internalFormat) == (GLenum::GL_RG16))|| ((internalFormat) == (GLenum::GL_RG16_SNORM))|| ((internalFormat) == (GLenum::GL_RG16F))|| ((internalFormat) == (GLenum::GL_RG32F))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RG11_EAC))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SIGNED_RG11_EAC))) ? (GLenum::GL_RG) :
/* case GLenum::GL_RG8UI, GLenum::GL_RG8I, GLenum::GL_RG16UI, GLenum::GL_RG16I, GLenum::GL_RG32UI, GLenum::GL_RG32I: */(((internalFormat) == (GLenum::GL_RG8UI))|| ((internalFormat) == (GLenum::GL_RG8I))|| ((internalFormat) == (GLenum::GL_RG16UI))|| ((internalFormat) == (GLenum::GL_RG16I))|| ((internalFormat) == (GLenum::GL_RG32UI))|| ((internalFormat) == (GLenum::GL_RG32I))) ? (GLenum::GL_RG_INTEGER) :
/* case GLenum::GL_RGB8, GLenum::GL_SRGB8, GLenum::GL_RGB8_SNORM, GLenum::GL_RGB16, GLenum::GL_RGB16_SNORM, GLenum::GL_RGB565, GLenum::GL_R11F_G11F_B10F, GLenum::GL_RGB9_E5, GLenum::GL_RGB16F, GLenum::GL_RGB32F, GLenum::GL_COMPRESSED_RGB8_ETC2, GLenum::GL_COMPRESSED_SRGB8_ETC2, GLenum::GL_ETC1_RGB8_OES: */(((internalFormat) == (GLenum::GL_RGB8))|| ((internalFormat) == (GLenum::GL_SRGB8))|| ((internalFormat) == (GLenum::GL_RGB8_SNORM))|| ((internalFormat) == (GLenum::GL_RGB16))|| ((internalFormat) == (GLenum::GL_RGB16_SNORM))|| ((internalFormat) == (GLenum::GL_RGB565))|| ((internalFormat) == (GLenum::GL_R11F_G11F_B10F))|| ((internalFormat) == (GLenum::GL_RGB9_E5))|| ((internalFormat) == (GLenum::GL_RGB16F))|| ((internalFormat) == (GLenum::GL_RGB32F))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGB8_ETC2))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ETC2))|| ((internalFormat) == (GLenum::GL_ETC1_RGB8_OES))) ? (GLenum::GL_RGB) :
/* case GLenum::GL_RGB8UI, GLenum::GL_RGB8I, GLenum::GL_RGB16UI, GLenum::GL_RGB16I, GLenum::GL_RGB32UI, GLenum::GL_RGB32I: */(((internalFormat) == (GLenum::GL_RGB8UI))|| ((internalFormat) == (GLenum::GL_RGB8I))|| ((internalFormat) == (GLenum::GL_RGB16UI))|| ((internalFormat) == (GLenum::GL_RGB16I))|| ((internalFormat) == (GLenum::GL_RGB32UI))|| ((internalFormat) == (GLenum::GL_RGB32I))) ? (GLenum::GL_RGB_INTEGER) :
/* case GLenum::GL_RGBA8, GLenum::GL_SRGB8_ALPHA8, GLenum::GL_RGBA8_SNORM, GLenum::GL_RGBA16, GLenum::GL_RGBA16_SNORM, GLenum::GL_RGB5_A1, GLenum::GL_RGBA4, GLenum::GL_RGB10_A2, GLenum::GL_RGBA16F, GLenum::GL_RGBA32F, GLenum::GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, GLenum::GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, GLenum::GL_COMPRESSED_RGBA8_ETC2_EAC, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, GLenum::GL_COMPRESSED_RGBA_ASTC_4x4, GLenum::GL_COMPRESSED_RGBA_ASTC_5x4, GLenum::GL_COMPRESSED_RGBA_ASTC_5x5, GLenum::GL_COMPRESSED_RGBA_ASTC_6x5, GLenum::GL_COMPRESSED_RGBA_ASTC_6x6, GLenum::GL_COMPRESSED_RGBA_ASTC_8x5, GLenum::GL_COMPRESSED_RGBA_ASTC_8x6, GLenum::GL_COMPRESSED_RGBA_ASTC_8x8, GLenum::GL_COMPRESSED_RGBA_ASTC_10x5, GLenum::GL_COMPRESSED_RGBA_ASTC_10x6, GLenum::GL_COMPRESSED_RGBA_ASTC_10x8, GLenum::GL_COMPRESSED_RGBA_ASTC_10x10, GLenum::GL_COMPRESSED_RGBA_ASTC_12x10, GLenum::GL_COMPRESSED_RGBA_ASTC_12x12, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10, GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: */(((internalFormat) == (GLenum::GL_RGBA8))|| ((internalFormat) == (GLenum::GL_SRGB8_ALPHA8))|| ((internalFormat) == (GLenum::GL_RGBA8_SNORM))|| ((internalFormat) == (GLenum::GL_RGBA16))|| ((internalFormat) == (GLenum::GL_RGBA16_SNORM))|| ((internalFormat) == (GLenum::GL_RGB5_A1))|| ((internalFormat) == (GLenum::GL_RGBA4))|| ((internalFormat) == (GLenum::GL_RGB10_A2))|| ((internalFormat) == (GLenum::GL_RGBA16F))|| ((internalFormat) == (GLenum::GL_RGBA32F))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA8_ETC2_EAC))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_4x4))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_5x4))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_5x5))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_6x5))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_6x6))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_8x5))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_8x6))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_8x8))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_10x5))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_10x6))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_10x8))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_10x10))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_12x10))|| ((internalFormat) == (GLenum::GL_COMPRESSED_RGBA_ASTC_12x12))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10))|| ((internalFormat) == (GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12))) ? (GLenum::GL_RGBA) :
/* case GLenum::GL_RGBA8UI, GLenum::GL_RGBA8I, GLenum::GL_RGB10_A2UI, GLenum::GL_RGBA16UI, GLenum::GL_RGBA16I, GLenum::GL_RGBA32I, GLenum::GL_RGBA32UI: */(((internalFormat) == (GLenum::GL_RGBA8UI))|| ((internalFormat) == (GLenum::GL_RGBA8I))|| ((internalFormat) == (GLenum::GL_RGB10_A2UI))|| ((internalFormat) == (GLenum::GL_RGBA16UI))|| ((internalFormat) == (GLenum::GL_RGBA16I))|| ((internalFormat) == (GLenum::GL_RGBA32I))|| ((internalFormat) == (GLenum::GL_RGBA32UI))) ? (GLenum::GL_RGBA_INTEGER) :
/* case GLenum::GL_DEPTH_COMPONENT16, GLenum::GL_DEPTH_COMPONENT24, GLenum::GL_DEPTH_COMPONENT32F: */(((internalFormat) == (GLenum::GL_DEPTH_COMPONENT16))|| ((internalFormat) == (GLenum::GL_DEPTH_COMPONENT24))|| ((internalFormat) == (GLenum::GL_DEPTH_COMPONENT32F))) ? (GLenum::GL_DEPTH_COMPONENT) :
/* case GLenum::GL_DEPTH24_STENCIL8, GLenum::GL_DEPTH32F_STENCIL8: */(((internalFormat) == (GLenum::GL_DEPTH24_STENCIL8))|| ((internalFormat) == (GLenum::GL_DEPTH32F_STENCIL8))) ? (GLenum::GL_DEPTH_STENCIL) :
/* default: */ internalFormat;
}
void GlesSpy::subSetCapability(CallObserver* observer, const std::function<void()>& call, uint32_t capability, bool isIndexed, GLuint index, GLboolean enabled) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
switch (capability) {
case GLenum::GL_BLEND: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
if (isIndexed) {
BlendState l_blend = findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, (DrawBufferIndex)(index));
l_blend.mEnabled = enabled;
checkNotNull(l_ctx).mFragmentOperations.mBlend[(DrawBufferIndex)(index)] = l_blend;
} else {
for (DrawBufferIndex l_i = (DrawBufferIndex)(0UL); l_i < (DrawBufferIndex)(uint32_t((checkNotNull(l_ctx).mFragmentOperations.mBlend.size()))); ++l_i) {
BlendState l_blend = findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i);
l_blend.mEnabled = enabled;
checkNotNull(l_ctx).mFragmentOperations.mBlend[l_i] = l_blend;
}
}
break;
}
case GLenum::GL_CULL_FACE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
checkNotNull(l_ctx).mRasterization.mCullFace = enabled;
break;
}
case GLenum::GL_DEPTH_TEST: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
checkNotNull(l_ctx).mFragmentOperations.mDepth.mTest = enabled;
break;
}
case GLenum::GL_DITHER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
checkNotNull(l_ctx).mFragmentOperations.mDither = enabled;
break;
}
case GLenum::GL_POLYGON_OFFSET_FILL: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
checkNotNull(l_ctx).mRasterization.mPolygonOffsetFill = enabled;
break;
}
case GLenum::GL_SAMPLE_ALPHA_TO_COVERAGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
checkNotNull(l_ctx).mRasterization.mSampleAlphaToCoverage = enabled;
break;
}
case GLenum::GL_SAMPLE_COVERAGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
checkNotNull(l_ctx).mRasterization.mSampleCoverage = enabled;
break;
}
case GLenum::GL_SCISSOR_TEST: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
checkNotNull(l_ctx).mFragmentOperations.mScissor.mTest = enabled;
break;
}
case GLenum::GL_STENCIL_TEST: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
checkNotNull(l_ctx).mFragmentOperations.mStencil.mTest = enabled;
break;
}
case GLenum::GL_PRIMITIVE_RESTART_FIXED_INDEX: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
checkNotNull(l_ctx).mMiscellaneous.mPrimitiveRestartFixedIndex = enabled;
break;
}
case GLenum::GL_RASTERIZER_DISCARD: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
checkNotNull(l_ctx).mRasterization.mRasterizerDiscard = enabled;
break;
}
case GLenum::GL_SAMPLE_MASK: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
checkNotNull(l_ctx).mRasterization.mSampleMask = enabled;
break;
}
case GLenum::GL_DEBUG_OUTPUT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
checkNotNull(l_ctx).mDebug.mOutput = enabled;
break;
}
case GLenum::GL_DEBUG_OUTPUT_SYNCHRONOUS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
checkNotNull(l_ctx).mDebug.mOutputSynchronous = enabled;
break;
}
case GLenum::GL_ALPHA_TEST_QCOM: {
subRequiresExtension(observer, call, ExtensionId::GL_QCOM_alpha_test);
break;
}
case GLenum::GL_FRAMEBUFFER_SRGB_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_sRGB_write_control);
checkNotNull(l_ctx).mFragmentOperations.mFramebufferSrgb = enabled;
break;
}
default: {
subGlErrorInvalidEnum(observer, call, capability);
}
}
return;
}
GLboolean GlesSpy::subGetCapability(CallObserver* observer, const std::function<void()>& call, uint32_t capability, GLuint index) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
switch (capability) {
case GLenum::GL_BLEND: {
break;
}
case GLenum::GL_CULL_FACE: // fall-through...
case GLenum::GL_DEPTH_TEST: // fall-through...
case GLenum::GL_DITHER: // fall-through...
case GLenum::GL_POLYGON_OFFSET_FILL: // fall-through...
case GLenum::GL_SAMPLE_ALPHA_TO_COVERAGE: // fall-through...
case GLenum::GL_SAMPLE_COVERAGE: // fall-through...
case GLenum::GL_SCISSOR_TEST: // fall-through...
case GLenum::GL_STENCIL_TEST: {
if ((index) > ((GLuint)(0UL))) {
subGlErrorInvalidValue(observer, call);
}
break;
}
case GLenum::GL_PRIMITIVE_RESTART_FIXED_INDEX: // fall-through...
case GLenum::GL_RASTERIZER_DISCARD: {
if ((index) > ((GLuint)(0UL))) {
subGlErrorInvalidValue(observer, call);
}
break;
}
case GLenum::GL_SAMPLE_MASK: {
if ((index) > ((GLuint)(0UL))) {
subGlErrorInvalidValue(observer, call);
}
break;
}
case GLenum::GL_DEBUG_OUTPUT: // fall-through...
case GLenum::GL_DEBUG_OUTPUT_SYNCHRONOUS: {
if ((index) > ((GLuint)(0UL))) {
subGlErrorInvalidValue(observer, call);
}
break;
}
default: {
}
}
return /* switch(capability) */
/* case GLenum::GL_BLEND: */(((capability) == (GLenum::GL_BLEND))) ? (findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, (DrawBufferIndex)(index)).mEnabled) :
/* case GLenum::GL_CULL_FACE: */(((capability) == (GLenum::GL_CULL_FACE))) ? (checkNotNull(l_ctx).mRasterization.mCullFace) :
/* case GLenum::GL_DEPTH_TEST: */(((capability) == (GLenum::GL_DEPTH_TEST))) ? (checkNotNull(l_ctx).mFragmentOperations.mDepth.mTest) :
/* case GLenum::GL_DITHER: */(((capability) == (GLenum::GL_DITHER))) ? (checkNotNull(l_ctx).mFragmentOperations.mDither) :
/* case GLenum::GL_POLYGON_OFFSET_FILL: */(((capability) == (GLenum::GL_POLYGON_OFFSET_FILL))) ? (checkNotNull(l_ctx).mRasterization.mPolygonOffsetFill) :
/* case GLenum::GL_SAMPLE_ALPHA_TO_COVERAGE: */(((capability) == (GLenum::GL_SAMPLE_ALPHA_TO_COVERAGE))) ? (checkNotNull(l_ctx).mRasterization.mSampleAlphaToCoverage) :
/* case GLenum::GL_SAMPLE_COVERAGE: */(((capability) == (GLenum::GL_SAMPLE_COVERAGE))) ? (checkNotNull(l_ctx).mRasterization.mSampleCoverage) :
/* case GLenum::GL_SCISSOR_TEST: */(((capability) == (GLenum::GL_SCISSOR_TEST))) ? (checkNotNull(l_ctx).mFragmentOperations.mScissor.mTest) :
/* case GLenum::GL_STENCIL_TEST: */(((capability) == (GLenum::GL_STENCIL_TEST))) ? (checkNotNull(l_ctx).mFragmentOperations.mStencil.mTest) :
/* case GLenum::GL_PRIMITIVE_RESTART_FIXED_INDEX: */(((capability) == (GLenum::GL_PRIMITIVE_RESTART_FIXED_INDEX))) ? (checkNotNull(l_ctx).mMiscellaneous.mPrimitiveRestartFixedIndex) :
/* case GLenum::GL_RASTERIZER_DISCARD: */(((capability) == (GLenum::GL_RASTERIZER_DISCARD))) ? (checkNotNull(l_ctx).mRasterization.mRasterizerDiscard) :
/* case GLenum::GL_SAMPLE_MASK: */(((capability) == (GLenum::GL_SAMPLE_MASK))) ? (checkNotNull(l_ctx).mRasterization.mSampleMask) :
/* case GLenum::GL_DEBUG_OUTPUT: */(((capability) == (GLenum::GL_DEBUG_OUTPUT))) ? (checkNotNull(l_ctx).mDebug.mOutput) :
/* case GLenum::GL_DEBUG_OUTPUT_SYNCHRONOUS: */(((capability) == (GLenum::GL_DEBUG_OUTPUT_SYNCHRONOUS))) ? (checkNotNull(l_ctx).mDebug.mOutputSynchronous) :
/* case GLenum::GL_ALPHA_TEST_QCOM: */(((capability) == (GLenum::GL_ALPHA_TEST_QCOM))) ? (GLbooleanLabels::GL_FALSE) :
/* case GLenum::GL_FRAMEBUFFER_SRGB_EXT: */(((capability) == (GLenum::GL_FRAMEBUFFER_SRGB_EXT))) ? (checkNotNull(l_ctx).mFragmentOperations.mFramebufferSrgb) :
/* default: */ GLbooleanLabels::GL_FALSE;
}
void GlesSpy::subEnablei(CallObserver* observer, const std::function<void()>& call, uint32_t capability, GLuint index) {
subSetCapability(observer, call, capability, true, index, GLbooleanLabels::GL_TRUE);
return;
}
void GlesSpy::subGetGraphicsResetStatus(CallObserver* observer, const std::function<void()>& call) {
return;
}
void GlesSpy::subWriteString(CallObserver* observer, const std::function<void()>& call, GLsizei buffer_size, GLsizei* buffer_bytes_written, GLchar* buffer) {
if (((buffer) != (nullptr)) && ((buffer_size) > ((GLsizei)(0L)))) {
if ((buffer_bytes_written) != (nullptr)) {
GLsizei l_length = (GLsizei)(slice(buffer_bytes_written, 0ULL, 1ULL)[0ULL]);
observer->write<GLsizei>(slice(buffer_bytes_written, 0ULL, 1ULL), 0ULL, l_length);
observer->write(slice(buffer, (uint64_t)((GLsizei)(0L)), (uint64_t)((l_length) + ((GLsizei)(1L)))));
} else {
observer->write(slice(buffer, (uint64_t)((GLsizei)(0L)), (uint64_t)(buffer_size)));
}
}
return;
}
void GlesSpy::subCheckProgram(CallObserver* observer, const std::function<void()>& call, std::shared_ptr<Context> ctx, ProgramId program) {
if (!(checkNotNull(ctx).mInstances.mPrograms.count(program) > 0)) {
if (!(checkNotNull(ctx).mInstances.mShaders.count((ShaderId)(program)) > 0)) {
subGlErrorInvalidValue(observer, call);
} else {
subGlErrorInvalidOperation(observer, call);
}
}
return;
}
void GlesSpy::subReapProgram(CallObserver* observer, const std::function<void()>& call, std::shared_ptr<Context> ctx, ProgramId program) {
if ((program) != ((ProgramId)(0UL))) {
std::shared_ptr<Program> l_p = findOrZero(checkNotNull(ctx).mInstances.mPrograms, program);
if (checkNotNull(l_p).mDeleteStatus) {
{
int32_t l__ = 0;
for (GLenumToShaderId::iterator it = checkNotNull(l_p).mShaders.begin(); it != checkNotNull(l_p).mShaders.end(); ++it, ++l__) {
uint32_t l__ = it->first;
ShaderId l_v = it->second;
std::shared_ptr<Shader> l_s = findOrZero(checkNotNull(ctx).mInstances.mShaders, l_v);
checkNotNull(l_s).mRefCount -= (GLuint)(1UL);
subReapShader(observer, call, ctx, l_v, l_s);
}
}
checkNotNull(ctx).mInstances.mPrograms.erase(program);
}
}
return;
}
void GlesSpy::subSetProgramUniform(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, Slice<uint8_t> value, uint32_t type) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subCheckProgram(observer, call, l_ctx, program);
std::shared_ptr<Program> l_p = findOrZero(checkNotNull(l_ctx).mInstances.mPrograms, program);
if ((location) != ((UniformLocation)(-1L))) {
if (!(checkNotNull(l_p).mUniforms.count(location) > 0)) {
subGlErrorInvalidOperation(observer, call);
}
Uniform l_u = findOrZero(checkNotNull(l_p).mUniforms, location);
if ((int32_t((l_u.mValue.count()))) == (int32_t((value.count())))) {
observer->copy(l_u.mValue, value);
} else {
l_u.mValue = observer->clone(value);
}
l_u.mType = type;
checkNotNull(l_p).mUniforms[location] = l_u;
}
return;
}
void GlesSpy::subGetnUniformuiv(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei bufSize, GLuint* values) {
subGetnUniformfv_GLuint__P(observer, call, program, location, bufSize, values);
return;
}
void GlesSpy::subProgramParameteri(CallObserver* observer, const std::function<void()>& call, ProgramId program, uint32_t pname, GLint value) {
switch (pname) {
case GLenum::GL_PROGRAM_BINARY_RETRIEVABLE_HINT: {
break;
}
case GLenum::GL_PROGRAM_SEPARABLE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
}
(void)program;
(void)value;
return;
}
void GlesSpy::subProgramUniform1i(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLint value0) {
Slice<GLint> l_v = make<GLint>(1ULL);
observer->write<GLint>(l_v, 0ULL, value0);
subProgramUniformv_GLint__S(observer, call, program, location, l_v, GLenum::GL_INT);
return;
}
void GlesSpy::subProgramUniform1iv(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei count, GLint* values) {
Slice<GLint> l_v = slice(values, (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subProgramUniformv_GLint__S(observer, call, program, location, l_v, GLenum::GL_INT);
return;
}
void GlesSpy::subProgramUniform2f(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLfloat value0, GLfloat value1) {
Slice<Vec2f> l_v = make<Vec2f>(1ULL);
observer->write<Vec2f>(l_v, 0ULL, {value0, value1});
subProgramUniformv_Vec2f__S(observer, call, program, location, l_v, GLenum::GL_FLOAT_VEC2);
return;
}
void GlesSpy::subProgramUniform2fv(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei count, GLfloat* values) {
Slice<Vec2f> l_v = slice((Vec2f*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subProgramUniformv_Vec2f__S(observer, call, program, location, l_v, GLenum::GL_FLOAT_VEC2);
return;
}
void GlesSpy::subProgramUniform2ui(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLuint value0, GLuint value1) {
Slice<Vec2u> l_v = make<Vec2u>(1ULL);
observer->write<Vec2u>(l_v, 0ULL, {value0, value1});
subProgramUniformv_Vec2u__S(observer, call, program, location, l_v, GLenum::GL_UNSIGNED_INT_VEC2);
return;
}
void GlesSpy::subProgramUniform2uiv(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei count, GLuint* values) {
Slice<Vec2u> l_v = slice((Vec2u*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subProgramUniformv_Vec2u__S(observer, call, program, location, l_v, GLenum::GL_UNSIGNED_INT_VEC2);
return;
}
void GlesSpy::subProgramUniform3i(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLint value0, GLint value1, GLint value2) {
Slice<Vec3i> l_v = make<Vec3i>(1ULL);
observer->write<Vec3i>(l_v, 0ULL, {value0, value1, value2});
subProgramUniformv_Vec3i__S(observer, call, program, location, l_v, GLenum::GL_INT_VEC3);
return;
}
void GlesSpy::subProgramUniform3iv(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei count, GLint* values) {
Slice<Vec3i> l_v = slice((Vec3i*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subProgramUniformv_Vec3i__S(observer, call, program, location, l_v, GLenum::GL_INT_VEC3);
return;
}
void GlesSpy::subProgramUniform4f(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLfloat value0, GLfloat value1, GLfloat value2, GLfloat value3) {
Slice<Vec4f> l_v = make<Vec4f>(1ULL);
observer->write<Vec4f>(l_v, 0ULL, {value0, value1, value2, value3});
subProgramUniformv_Vec4f__S(observer, call, program, location, l_v, GLenum::GL_FLOAT_VEC4);
return;
}
void GlesSpy::subProgramUniform4fv(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei count, GLfloat* values) {
Slice<Vec4f> l_v = slice((Vec4f*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subProgramUniformv_Vec4f__S(observer, call, program, location, l_v, GLenum::GL_FLOAT_VEC4);
return;
}
void GlesSpy::subProgramUniform4ui(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLuint value0, GLuint value1, GLuint value2, GLuint value3) {
Slice<Vec4u> l_v = make<Vec4u>(1ULL);
observer->write<Vec4u>(l_v, 0ULL, {value0, value1, value2, value3});
subProgramUniformv_Vec4u__S(observer, call, program, location, l_v, GLenum::GL_UNSIGNED_INT_VEC4);
return;
}
void GlesSpy::subProgramUniform4uiv(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei count, GLuint* values) {
Slice<Vec4u> l_v = slice((Vec4u*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subProgramUniformv_Vec4u__S(observer, call, program, location, l_v, GLenum::GL_UNSIGNED_INT_VEC4);
return;
}
void GlesSpy::subProgramUniformMatrix2x3fv(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei count, GLboolean transpose, GLfloat* values) {
Slice<Mat2x3f> l_v = slice((Mat2x3f*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subProgramUniformMatrixv_Mat2x3f__S(observer, call, program, location, transpose, l_v, GLenum::GL_FLOAT_MAT2x3);
return;
}
void GlesSpy::subProgramUniformMatrix3fv(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei count, GLboolean transpose, GLfloat* values) {
Slice<Mat3f> l_v = slice((Mat3f*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subProgramUniformMatrixv_Mat3f__S(observer, call, program, location, transpose, l_v, GLenum::GL_FLOAT_MAT3);
return;
}
void GlesSpy::subProgramUniformMatrix3x2fv(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei count, GLboolean transpose, GLfloat* values) {
Slice<Mat3x2f> l_v = slice((Mat3x2f*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subProgramUniformMatrixv_Mat3x2f__S(observer, call, program, location, transpose, l_v, GLenum::GL_FLOAT_MAT3x2);
return;
}
void GlesSpy::subProgramUniformMatrix3x4fv(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei count, GLboolean transpose, GLfloat* values) {
Slice<Mat3x4f> l_v = slice((Mat3x4f*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subProgramUniformMatrixv_Mat3x4f__S(observer, call, program, location, transpose, l_v, GLenum::GL_FLOAT_MAT3x4);
return;
}
void GlesSpy::subProgramUniformMatrix4x3fv(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei count, GLboolean transpose, GLfloat* values) {
Slice<Mat4x3f> l_v = slice((Mat4x3f*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subProgramUniformMatrixv_Mat4x3f__S(observer, call, program, location, transpose, l_v, GLenum::GL_FLOAT_MAT4x3);
return;
}
void GlesSpy::subUniformMatrix2x3fv(CallObserver* observer, const std::function<void()>& call, UniformLocation location, GLsizei count, GLboolean transpose, GLfloat* values) {
Slice<Mat2x3f> l_v = slice((Mat2x3f*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subUniformMatrixv_Mat2x3f__S(observer, call, location, transpose, l_v, GLenum::GL_FLOAT_MAT2x3);
return;
}
void GlesSpy::subUniformMatrix3x2fv(CallObserver* observer, const std::function<void()>& call, UniformLocation location, GLsizei count, GLboolean transpose, GLfloat* values) {
Slice<Mat3x2f> l_v = slice((Mat3x2f*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subUniformMatrixv_Mat3x2f__S(observer, call, location, transpose, l_v, GLenum::GL_FLOAT_MAT3x2);
return;
}
void GlesSpy::subUniformMatrix3x4fv(CallObserver* observer, const std::function<void()>& call, UniformLocation location, GLsizei count, GLboolean transpose, GLfloat* values) {
Slice<Mat3x4f> l_v = slice((Mat3x4f*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subUniformMatrixv_Mat3x4f__S(observer, call, location, transpose, l_v, GLenum::GL_FLOAT_MAT3x4);
return;
}
void GlesSpy::subUniformMatrix4x3fv(CallObserver* observer, const std::function<void()>& call, UniformLocation location, GLsizei count, GLboolean transpose, GLfloat* values) {
Slice<Mat4x3f> l_v = slice((Mat4x3f*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
subUniformMatrixv_Mat4x3f__S(observer, call, location, transpose, l_v, GLenum::GL_FLOAT_MAT4x3);
return;
}
void GlesSpy::subMinSampleShading(CallObserver* observer, const std::function<void()>& call, GLfloat value) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
checkNotNull(l_ctx).mRasterization.mMinSampleShadingValue = value;
return;
}
void GlesSpy::subGetInteger64v(CallObserver* observer, const std::function<void()>& call, uint32_t param, GLint64* values) {
subGetStateVariable_GLint64(observer, call, param, false, (GLuint)(0UL), values);
return;
}
GLboolean GlesSpy::subIsEnabledi(CallObserver* observer, const std::function<void()>& call, uint32_t capability, GLuint index) {
GLboolean l__res_0 = subGetCapability(observer, call, capability, index);
return l__res_0;
}
void GlesSpy::subDeleteSync(CallObserver* observer, const std::function<void()>& call, GLsync sync) {
if ((sync) != (nullptr)) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
if (!(checkNotNull(l_ctx).mInstances.mSyncObjects.count(sync) > 0)) {
subGlErrorInvalidValue(observer, call);
}
checkNotNull(l_ctx).mInstances.mSyncObjects.erase(sync);
}
return;
}
void GlesSpy::subFenceSync(CallObserver* observer, const std::function<void()>& call, uint32_t condition, uint32_t syncFlags, GLsync sync) {
if ((condition) != (GLenum::GL_SYNC_GPU_COMMANDS_COMPLETE)) {
subGlErrorInvalidEnum(observer, call, condition);
}
if ((syncFlags) != ((uint32_t)(0L))) {
subGlErrorInvalidValue(observer, call);
}
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
if ((sync) != (nullptr)) {
checkNotNull(l_ctx).mInstances.mSyncObjects[sync] = std::shared_ptr<SyncObject>(new SyncObject());
}
return;
}
void GlesSpy::subGetSynciv(CallObserver* observer, const std::function<void()>& call, GLsync sync, uint32_t pname, GLsizei bufSize, GLsizei* length, GLint* values) {
(void)sync;
switch (pname) {
case GLenum::GL_OBJECT_TYPE: // fall-through...
case GLenum::GL_SYNC_CONDITION: // fall-through...
case GLenum::GL_SYNC_FLAGS: // fall-through...
case GLenum::GL_SYNC_STATUS: {
if (((values) != (nullptr)) && ((bufSize) > ((GLsizei)(0L)))) {
observer->write<GLint>(slice(values, 0ULL, 1ULL), 0ULL, slice(values, 0ULL, 1ULL)[0ULL]);
if ((length) != (nullptr)) {
observer->write<GLsizei>(slice(length, 0ULL, 1ULL), 0ULL, (GLsizei)(1L));
}
}
break;
}
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
}
return;
}
void GlesSpy::subWaitSync(CallObserver* observer, const std::function<void()>& call, GLsync sync, uint32_t syncFlags, GLuint64 timeout) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
if (!(checkNotNull(l_ctx).mInstances.mSyncObjects.count(sync) > 0)) {
subGlErrorInvalidOperation(observer, call);
}
if ((timeout) != ((GLuint64)(18446744073709551615ULL))) {
subGlErrorInvalidValue(observer, call);
}
if ((syncFlags) != ((uint32_t)(0L))) {
subGlErrorInvalidValue(observer, call);
}
return;
}
std::shared_ptr<Texture> GlesSpy::subGetBoundTextureOrErrorInvalidEnum(CallObserver* observer, const std::function<void()>& call, uint32_t target) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
std::shared_ptr<TextureUnit> l_tu = findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit);
return /* switch(target) */
/* case GLenum::GL_TEXTURE_2D: */(((target) == (GLenum::GL_TEXTURE_2D))) ? (/* switch((checkNotNull(l_tu).mBinding2d) != ((TextureId)(0UL))) */
/* case true: */((((checkNotNull(l_tu).mBinding2d) != ((TextureId)(0UL))) == (true))) ? (findOrZero(checkNotNull(l_ctx).mInstances.mTextures, checkNotNull(l_tu).mBinding2d)) :
/* case false: */((((checkNotNull(l_tu).mBinding2d) != ((TextureId)(0UL))) == (false))) ? (checkNotNull(l_ctx).mInstances.mDefaultTextures.mTexture2d) :
/* default: */ std::shared_ptr<Texture>()) :
/* case GLenum::GL_TEXTURE_EXTERNAL_OES: */(((target) == (GLenum::GL_TEXTURE_EXTERNAL_OES))) ? (/* switch((checkNotNull(l_tu).mBindingExternalOes) != ((TextureId)(0UL))) */
/* case true: */((((checkNotNull(l_tu).mBindingExternalOes) != ((TextureId)(0UL))) == (true))) ? (findOrZero(checkNotNull(l_ctx).mInstances.mTextures, checkNotNull(l_tu).mBindingExternalOes)) :
/* case false: */((((checkNotNull(l_tu).mBindingExternalOes) != ((TextureId)(0UL))) == (false))) ? (checkNotNull(l_ctx).mInstances.mDefaultTextures.mTextureExternalOes) :
/* default: */ std::shared_ptr<Texture>()) :
/* case GLenum::GL_TEXTURE_2D_ARRAY: */(((target) == (GLenum::GL_TEXTURE_2D_ARRAY))) ? (/* switch((checkNotNull(l_tu).mBinding2dArray) != ((TextureId)(0UL))) */
/* case true: */((((checkNotNull(l_tu).mBinding2dArray) != ((TextureId)(0UL))) == (true))) ? (findOrZero(checkNotNull(l_ctx).mInstances.mTextures, checkNotNull(l_tu).mBinding2dArray)) :
/* case false: */((((checkNotNull(l_tu).mBinding2dArray) != ((TextureId)(0UL))) == (false))) ? (checkNotNull(l_ctx).mInstances.mDefaultTextures.mTexture2dArray) :
/* default: */ std::shared_ptr<Texture>()) :
/* case GLenum::GL_TEXTURE_2D_MULTISAMPLE: */(((target) == (GLenum::GL_TEXTURE_2D_MULTISAMPLE))) ? (/* switch((checkNotNull(l_tu).mBinding2dMultisample) != ((TextureId)(0UL))) */
/* case true: */((((checkNotNull(l_tu).mBinding2dMultisample) != ((TextureId)(0UL))) == (true))) ? (findOrZero(checkNotNull(l_ctx).mInstances.mTextures, checkNotNull(l_tu).mBinding2dMultisample)) :
/* case false: */((((checkNotNull(l_tu).mBinding2dMultisample) != ((TextureId)(0UL))) == (false))) ? (checkNotNull(l_ctx).mInstances.mDefaultTextures.mTexture2dMultisample) :
/* default: */ std::shared_ptr<Texture>()) :
/* case GLenum::GL_TEXTURE_2D_MULTISAMPLE_ARRAY: */(((target) == (GLenum::GL_TEXTURE_2D_MULTISAMPLE_ARRAY))) ? (/* switch((checkNotNull(l_tu).mBinding2dMultisampleArray) != ((TextureId)(0UL))) */
/* case true: */((((checkNotNull(l_tu).mBinding2dMultisampleArray) != ((TextureId)(0UL))) == (true))) ? (findOrZero(checkNotNull(l_ctx).mInstances.mTextures, checkNotNull(l_tu).mBinding2dMultisampleArray)) :
/* case false: */((((checkNotNull(l_tu).mBinding2dMultisampleArray) != ((TextureId)(0UL))) == (false))) ? (checkNotNull(l_ctx).mInstances.mDefaultTextures.mTexture2dMultisampleArray) :
/* default: */ std::shared_ptr<Texture>()) :
/* case GLenum::GL_TEXTURE_3D: */(((target) == (GLenum::GL_TEXTURE_3D))) ? (/* switch((checkNotNull(l_tu).mBinding3d) != ((TextureId)(0UL))) */
/* case true: */((((checkNotNull(l_tu).mBinding3d) != ((TextureId)(0UL))) == (true))) ? (findOrZero(checkNotNull(l_ctx).mInstances.mTextures, checkNotNull(l_tu).mBinding3d)) :
/* case false: */((((checkNotNull(l_tu).mBinding3d) != ((TextureId)(0UL))) == (false))) ? (checkNotNull(l_ctx).mInstances.mDefaultTextures.mTexture3d) :
/* default: */ std::shared_ptr<Texture>()) :
/* case GLenum::GL_TEXTURE_BUFFER: */(((target) == (GLenum::GL_TEXTURE_BUFFER))) ? (/* switch((checkNotNull(l_tu).mBindingBuffer) != ((TextureId)(0UL))) */
/* case true: */((((checkNotNull(l_tu).mBindingBuffer) != ((TextureId)(0UL))) == (true))) ? (findOrZero(checkNotNull(l_ctx).mInstances.mTextures, checkNotNull(l_tu).mBindingBuffer)) :
/* case false: */((((checkNotNull(l_tu).mBindingBuffer) != ((TextureId)(0UL))) == (false))) ? (checkNotNull(l_ctx).mInstances.mDefaultTextures.mTextureBuffer) :
/* default: */ std::shared_ptr<Texture>()) :
/* case GLenum::GL_TEXTURE_CUBE_MAP: */(((target) == (GLenum::GL_TEXTURE_CUBE_MAP))) ? (/* switch((checkNotNull(l_tu).mBindingCubeMap) != ((TextureId)(0UL))) */
/* case true: */((((checkNotNull(l_tu).mBindingCubeMap) != ((TextureId)(0UL))) == (true))) ? (findOrZero(checkNotNull(l_ctx).mInstances.mTextures, checkNotNull(l_tu).mBindingCubeMap)) :
/* case false: */((((checkNotNull(l_tu).mBindingCubeMap) != ((TextureId)(0UL))) == (false))) ? (checkNotNull(l_ctx).mInstances.mDefaultTextures.mTextureCubeMap) :
/* default: */ std::shared_ptr<Texture>()) :
/* case GLenum::GL_TEXTURE_CUBE_MAP_ARRAY: */(((target) == (GLenum::GL_TEXTURE_CUBE_MAP_ARRAY))) ? (/* switch((checkNotNull(l_tu).mBindingCubeMapArray) != ((TextureId)(0UL))) */
/* case true: */((((checkNotNull(l_tu).mBindingCubeMapArray) != ((TextureId)(0UL))) == (true))) ? (findOrZero(checkNotNull(l_ctx).mInstances.mTextures, checkNotNull(l_tu).mBindingCubeMapArray)) :
/* case false: */((((checkNotNull(l_tu).mBindingCubeMapArray) != ((TextureId)(0UL))) == (false))) ? (checkNotNull(l_ctx).mInstances.mDefaultTextures.mTextureCubeMapArray) :
/* default: */ std::shared_ptr<Texture>()) :
/* default: */ checkNotNull(l_ctx).mInstances.mDefaultTextures.mTexture2d;
}
void GlesSpy::subCheckInternalFormat(CallObserver* observer, const std::function<void()>& call, uint32_t internalformat) {
switch (internalformat) {
case GLenum::GL_RGB: // fall-through...
case GLenum::GL_RGBA: // fall-through...
case GLenum::GL_LUMINANCE_ALPHA: // fall-through...
case GLenum::GL_LUMINANCE: // fall-through...
case GLenum::GL_ALPHA: // fall-through...
case GLenum::GL_R8: // fall-through...
case GLenum::GL_R8_SNORM: // fall-through...
case GLenum::GL_R16F: // fall-through...
case GLenum::GL_R32F: // fall-through...
case GLenum::GL_R8UI: // fall-through...
case GLenum::GL_R8I: // fall-through...
case GLenum::GL_R16UI: // fall-through...
case GLenum::GL_R16I: // fall-through...
case GLenum::GL_R32UI: // fall-through...
case GLenum::GL_R32I: // fall-through...
case GLenum::GL_RG8: // fall-through...
case GLenum::GL_RG8_SNORM: // fall-through...
case GLenum::GL_RG16F: // fall-through...
case GLenum::GL_RG32F: // fall-through...
case GLenum::GL_RG8UI: // fall-through...
case GLenum::GL_RG8I: // fall-through...
case GLenum::GL_RG16UI: // fall-through...
case GLenum::GL_RG16I: // fall-through...
case GLenum::GL_RG32UI: // fall-through...
case GLenum::GL_RG32I: // fall-through...
case GLenum::GL_RGB8: // fall-through...
case GLenum::GL_SRGB8: // fall-through...
case GLenum::GL_RGB565: // fall-through...
case GLenum::GL_RGB8_SNORM: // fall-through...
case GLenum::GL_R11F_G11F_B10F: // fall-through...
case GLenum::GL_RGB9_E5: // fall-through...
case GLenum::GL_RGB16F: // fall-through...
case GLenum::GL_RGB32F: // fall-through...
case GLenum::GL_RGB8UI: // fall-through...
case GLenum::GL_RGB8I: // fall-through...
case GLenum::GL_RGB16UI: // fall-through...
case GLenum::GL_RGB16I: // fall-through...
case GLenum::GL_RGB32UI: // fall-through...
case GLenum::GL_RGB32I: // fall-through...
case GLenum::GL_RGBA8: // fall-through...
case GLenum::GL_SRGB8_ALPHA8: // fall-through...
case GLenum::GL_RGBA8_SNORM: // fall-through...
case GLenum::GL_RGB5_A1: // fall-through...
case GLenum::GL_RGBA4: // fall-through...
case GLenum::GL_RGB10_A2: // fall-through...
case GLenum::GL_RGBA16F: // fall-through...
case GLenum::GL_RGBA32F: // fall-through...
case GLenum::GL_RGBA8UI: // fall-through...
case GLenum::GL_RGBA8I: // fall-through...
case GLenum::GL_RGB10_A2UI: // fall-through...
case GLenum::GL_RGBA16UI: // fall-through...
case GLenum::GL_RGBA16I: // fall-through...
case GLenum::GL_RGBA32I: // fall-through...
case GLenum::GL_RGBA32UI: // fall-through...
case GLenum::GL_DEPTH_COMPONENT16: // fall-through...
case GLenum::GL_DEPTH_COMPONENT24: // fall-through...
case GLenum::GL_DEPTH_COMPONENT32F: // fall-through...
case GLenum::GL_DEPTH24_STENCIL8: // fall-through...
case GLenum::GL_DEPTH32F_STENCIL8: // fall-through...
case GLenum::GL_STENCIL_INDEX8: {
break;
}
case GLenum::GL_DEPTH_COMPONENT: {
subRequiresExtension(observer, call, ExtensionId::GL_OES_depth_texture);
break;
}
case GLenum::GL_DEPTH_STENCIL: {
subRequiresExtension(observer, call, ExtensionId::GL_OES_packed_depth_stencil);
break;
}
case GLenum::GL_RED_EXT: // fall-through...
case GLenum::GL_RG_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_rg);
break;
}
case GLenum::GL_BGRA_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_format_BGRA8888);
break;
}
default: {
subGlErrorInvalidValue(observer, call);
}
}
return;
}
void GlesSpy::subCheckMaxTextureSize(CallObserver* observer, const std::function<void()>& call, std::shared_ptr<Context> ctx, uint32_t target, GLint level, GLsizei width, GLsizei height) {
GLint l_maxSize = /* switch(target) */
/* case GLenum::GL_TEXTURE_2D: */(((target) == (GLenum::GL_TEXTURE_2D))) ? (checkNotNull(ctx).mConstants.mMaxTextureSize) :
/* case GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_X, GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: */(((target) == (GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_X))|| ((target) == (GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Y))|| ((target) == (GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Z))|| ((target) == (GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_X))|| ((target) == (GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Y))|| ((target) == (GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Z))) ? (checkNotNull(ctx).mConstants.mMaxCubeMapTextureSize) :
/* default: */ 0;
if (((level) < ((GLint)(0L))) || (((width) < ((GLsizei)(0L))) || (((height) < ((GLsizei)(0L))) || (((width) > ((GLsizei)(l_maxSize))) || (((height) > ((GLsizei)(l_maxSize))) || ((((uint32_t)(level)) > (31UL)) || (((1UL) << ((uint32_t)(level))) > ((uint32_t)(l_maxSize))))))))) {
subGlErrorInvalidValue(observer, call);
}
return;
}
void GlesSpy::subCompressedTexImage3D(CallObserver* observer, const std::function<void()>& call, uint32_t target, GLint level, uint32_t internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei image_size, TexturePointer data) {
switch (target) {
case GLenum::GL_TEXTURE_2D_ARRAY: // fall-through...
case GLenum::GL_TEXTURE_3D: {
break;
}
case GLenum::GL_TEXTURE_CUBE_MAP_ARRAY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, target);
}
}
switch (internalformat) {
case GLenum::GL_COMPRESSED_R11_EAC: // fall-through...
case GLenum::GL_COMPRESSED_RG11_EAC: // fall-through...
case GLenum::GL_COMPRESSED_RGB8_ETC2: // fall-through...
case GLenum::GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: // fall-through...
case GLenum::GL_COMPRESSED_RGBA8_ETC2_EAC: // fall-through...
case GLenum::GL_COMPRESSED_SIGNED_R11_EAC: // fall-through...
case GLenum::GL_COMPRESSED_SIGNED_RG11_EAC: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ETC2: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: {
break;
}
case GLenum::GL_COMPRESSED_RGBA_ASTC_10x10: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_10x5: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_10x6: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_10x8: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_12x10: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_12x12: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_4x4: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_5x4: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_5x5: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_6x5: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_6x6: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_8x5: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_8x6: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_8x8: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
case GLenum::GL_COMPRESSED_RGB_S3TC_DXT1_EXT: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_compression_s3tc);
break;
}
default: {
subGlErrorInvalidEnum(observer, call, internalformat);
}
}
(void)level;
(void)width;
(void)height;
(void)depth;
(void)border;
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
if (((checkNotNull(l_ctx).mBoundBuffers.mPixelUnpackBuffer) == ((BufferId)(0UL))) && ((data) != (nullptr))) {
observer->read(slice((uint8_t*)(data), (uint64_t)((GLsizei)(0L)), (uint64_t)(image_size)));
}
return;
}
void GlesSpy::subCompressedTexSubImage3D(CallObserver* observer, const std::function<void()>& call, uint32_t target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, uint32_t format, GLsizei image_size, TexturePointer data) {
switch (target) {
case GLenum::GL_TEXTURE_2D_ARRAY: // fall-through...
case GLenum::GL_TEXTURE_3D: {
break;
}
case GLenum::GL_TEXTURE_CUBE_MAP_ARRAY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, target);
}
}
switch (format) {
case GLenum::GL_COMPRESSED_R11_EAC: // fall-through...
case GLenum::GL_COMPRESSED_RG11_EAC: // fall-through...
case GLenum::GL_COMPRESSED_RGB8_ETC2: // fall-through...
case GLenum::GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: // fall-through...
case GLenum::GL_COMPRESSED_RGBA8_ETC2_EAC: // fall-through...
case GLenum::GL_COMPRESSED_SIGNED_R11_EAC: // fall-through...
case GLenum::GL_COMPRESSED_SIGNED_RG11_EAC: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ETC2: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: {
break;
}
case GLenum::GL_COMPRESSED_RGBA_ASTC_10x10: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_10x5: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_10x6: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_10x8: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_12x10: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_12x12: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_4x4: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_5x4: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_5x5: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_6x5: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_6x6: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_8x5: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_8x6: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_8x8: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
case GLenum::GL_COMPRESSED_RGB_S3TC_DXT1_EXT: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_compression_s3tc);
break;
}
default: {
subGlErrorInvalidEnum(observer, call, format);
}
}
(void)level;
(void)xoffset;
(void)yoffset;
(void)zoffset;
(void)width;
(void)height;
(void)depth;
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
if (((checkNotNull(l_ctx).mBoundBuffers.mPixelUnpackBuffer) == ((BufferId)(0UL))) && ((data) != (nullptr))) {
observer->read(slice((uint8_t*)(data), (uint64_t)((GLsizei)(0L)), (uint64_t)(image_size)));
}
return;
}
void GlesSpy::subCopyImageSubData(CallObserver* observer, const std::function<void()>& call, GLuint srcName, uint32_t srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, uint32_t dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) {
switch (srcTarget) {
case GLenum::GL_RENDERBUFFER: // fall-through...
case GLenum::GL_TEXTURE_2D: // fall-through...
case GLenum::GL_TEXTURE_2D_ARRAY: // fall-through...
case GLenum::GL_TEXTURE_2D_MULTISAMPLE: // fall-through...
case GLenum::GL_TEXTURE_2D_MULTISAMPLE_ARRAY: // fall-through...
case GLenum::GL_TEXTURE_3D: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP_ARRAY: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, srcTarget);
}
}
switch (dstTarget) {
case GLenum::GL_RENDERBUFFER: // fall-through...
case GLenum::GL_TEXTURE_2D: // fall-through...
case GLenum::GL_TEXTURE_2D_ARRAY: // fall-through...
case GLenum::GL_TEXTURE_2D_MULTISAMPLE: // fall-through...
case GLenum::GL_TEXTURE_2D_MULTISAMPLE_ARRAY: // fall-through...
case GLenum::GL_TEXTURE_3D: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP_ARRAY: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, dstTarget);
}
}
(void)srcName;
(void)srcLevel;
(void)srcX;
(void)srcY;
(void)srcZ;
(void)dstName;
(void)dstLevel;
(void)dstX;
(void)dstY;
(void)dstZ;
(void)srcWidth;
(void)srcHeight;
(void)srcDepth;
return;
}
void GlesSpy::subCopyTexSubImage3D(CallObserver* observer, const std::function<void()>& call, uint32_t target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
switch (target) {
case GLenum::GL_TEXTURE_2D_ARRAY: // fall-through...
case GLenum::GL_TEXTURE_3D: {
break;
}
case GLenum::GL_TEXTURE_CUBE_MAP_ARRAY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, target);
}
}
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subCheckMaxTextureSize(observer, call, l_ctx, target, level, width, height);
std::shared_ptr<Texture> l_t = subGetBoundTextureOrErrorInvalidEnum(observer, call, target);
if (!(checkNotNull(l_t).mTexture2D.count(level) > 0)) {
subGlErrorInvalidValue(observer, call);
}
Image l_l = findOrZero(checkNotNull(l_t).mTexture2D, level);
if (((xoffset) < ((GLint)(0L))) || (((yoffset) < ((GLint)(0L))) || ((zoffset) < ((GLint)(0L))))) {
subGlErrorInvalidValue(observer, call);
}
if (((((GLsizei)(xoffset)) + (width)) > (l_l.mWidth)) || ((((GLsizei)(yoffset)) + (height)) > (l_l.mHeight))) {
subGlErrorInvalidValue(observer, call);
}
(void)level;
(void)xoffset;
(void)yoffset;
(void)zoffset;
(void)x;
(void)y;
(void)width;
(void)height;
return;
}
void GlesSpy::subGetSamplerParameterIuiv(CallObserver* observer, const std::function<void()>& call, SamplerId sampler, uint32_t pname, GLuint* params) {
subGetSamplerParameterv_GLuint(observer, call, sampler, pname, params);
return;
}
void GlesSpy::subGetTexParameterIiv(CallObserver* observer, const std::function<void()>& call, uint32_t target, uint32_t pname, GLint* params) {
subGetTexParameter_GLint(observer, call, target, pname, params);
return;
}
void GlesSpy::subSamplerParameterIuiv(CallObserver* observer, const std::function<void()>& call, SamplerId sampler, uint32_t pname, GLuint* param) {
subSamplerParameterv_GLuint__CP(observer, call, sampler, pname, param);
return;
}
void GlesSpy::subTexBufferRange(CallObserver* observer, const std::function<void()>& call, uint32_t target, uint32_t internalformat, BufferId buffer, GLintptr offset, GLsizeiptr size) {
switch (target) {
case GLenum::GL_TEXTURE_BUFFER: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, target);
}
}
switch (internalformat) {
case GLenum::GL_R16: // fall-through...
case GLenum::GL_R16F: // fall-through...
case GLenum::GL_R16I: // fall-through...
case GLenum::GL_R16UI: // fall-through...
case GLenum::GL_R32F: // fall-through...
case GLenum::GL_R32I: // fall-through...
case GLenum::GL_R32UI: // fall-through...
case GLenum::GL_R8: // fall-through...
case GLenum::GL_R8I: // fall-through...
case GLenum::GL_R8UI: // fall-through...
case GLenum::GL_RG16: // fall-through...
case GLenum::GL_RG16F: // fall-through...
case GLenum::GL_RG16I: // fall-through...
case GLenum::GL_RG16UI: // fall-through...
case GLenum::GL_RG32F: // fall-through...
case GLenum::GL_RG32I: // fall-through...
case GLenum::GL_RG32UI: // fall-through...
case GLenum::GL_RG8: // fall-through...
case GLenum::GL_RG8I: // fall-through...
case GLenum::GL_RG8UI: // fall-through...
case GLenum::GL_RGB32F: // fall-through...
case GLenum::GL_RGB32I: // fall-through...
case GLenum::GL_RGB32UI: // fall-through...
case GLenum::GL_RGBA16: // fall-through...
case GLenum::GL_RGBA16F: // fall-through...
case GLenum::GL_RGBA16I: // fall-through...
case GLenum::GL_RGBA16UI: // fall-through...
case GLenum::GL_RGBA32F: // fall-through...
case GLenum::GL_RGBA32I: // fall-through...
case GLenum::GL_RGBA32UI: // fall-through...
case GLenum::GL_RGBA8: // fall-through...
case GLenum::GL_RGBA8I: // fall-through...
case GLenum::GL_RGBA8UI: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, internalformat);
}
}
(void)buffer;
(void)offset;
(void)size;
return;
}
void GlesSpy::subTexParameterIiv(CallObserver* observer, const std::function<void()>& call, uint32_t target, uint32_t pname, GLint* params) {
subTexParameterv_GLint__CP(observer, call, target, pname, params);
return;
}
void GlesSpy::subTexStorage2D(CallObserver* observer, const std::function<void()>& call, uint32_t target, GLsizei levels, uint32_t internalformat, GLsizei width, GLsizei height) {
switch (target) {
case GLenum::GL_TEXTURE_2D: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, target);
}
}
if ((levels) < ((GLsizei)(1L))) {
subGlErrorInvalidValue(observer, call);
}
switch (internalformat) {
case GLenum::GL_COMPRESSED_R11_EAC: // fall-through...
case GLenum::GL_COMPRESSED_RG11_EAC: // fall-through...
case GLenum::GL_COMPRESSED_RGB8_ETC2: // fall-through...
case GLenum::GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: // fall-through...
case GLenum::GL_COMPRESSED_RGBA8_ETC2_EAC: // fall-through...
case GLenum::GL_COMPRESSED_SIGNED_R11_EAC: // fall-through...
case GLenum::GL_COMPRESSED_SIGNED_RG11_EAC: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ETC2: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: // fall-through...
case GLenum::GL_DEPTH24_STENCIL8: // fall-through...
case GLenum::GL_DEPTH32F_STENCIL8: // fall-through...
case GLenum::GL_DEPTH_COMPONENT16: // fall-through...
case GLenum::GL_DEPTH_COMPONENT24: // fall-through...
case GLenum::GL_DEPTH_COMPONENT32F: // fall-through...
case GLenum::GL_R11F_G11F_B10F: // fall-through...
case GLenum::GL_R16F: // fall-through...
case GLenum::GL_R16I: // fall-through...
case GLenum::GL_R16UI: // fall-through...
case GLenum::GL_R32F: // fall-through...
case GLenum::GL_R32I: // fall-through...
case GLenum::GL_R32UI: // fall-through...
case GLenum::GL_R8: // fall-through...
case GLenum::GL_R8I: // fall-through...
case GLenum::GL_R8UI: // fall-through...
case GLenum::GL_R8_SNORM: // fall-through...
case GLenum::GL_RG16F: // fall-through...
case GLenum::GL_RG16I: // fall-through...
case GLenum::GL_RG16UI: // fall-through...
case GLenum::GL_RG32F: // fall-through...
case GLenum::GL_RG32I: // fall-through...
case GLenum::GL_RG32UI: // fall-through...
case GLenum::GL_RG8: // fall-through...
case GLenum::GL_RG8I: // fall-through...
case GLenum::GL_RG8UI: // fall-through...
case GLenum::GL_RG8_SNORM: // fall-through...
case GLenum::GL_RGB10_A2: // fall-through...
case GLenum::GL_RGB10_A2UI: // fall-through...
case GLenum::GL_RGB16F: // fall-through...
case GLenum::GL_RGB16I: // fall-through...
case GLenum::GL_RGB16UI: // fall-through...
case GLenum::GL_RGB32F: // fall-through...
case GLenum::GL_RGB32I: // fall-through...
case GLenum::GL_RGB32UI: // fall-through...
case GLenum::GL_RGB565: // fall-through...
case GLenum::GL_RGB5_A1: // fall-through...
case GLenum::GL_RGB8: // fall-through...
case GLenum::GL_RGB8I: // fall-through...
case GLenum::GL_RGB8UI: // fall-through...
case GLenum::GL_RGB8_SNORM: // fall-through...
case GLenum::GL_RGB9_E5: // fall-through...
case GLenum::GL_RGBA16F: // fall-through...
case GLenum::GL_RGBA16I: // fall-through...
case GLenum::GL_RGBA16UI: // fall-through...
case GLenum::GL_RGBA32F: // fall-through...
case GLenum::GL_RGBA32I: // fall-through...
case GLenum::GL_RGBA32UI: // fall-through...
case GLenum::GL_RGBA4: // fall-through...
case GLenum::GL_RGBA8: // fall-through...
case GLenum::GL_RGBA8I: // fall-through...
case GLenum::GL_RGBA8UI: // fall-through...
case GLenum::GL_RGBA8_SNORM: // fall-through...
case GLenum::GL_SRGB8: // fall-through...
case GLenum::GL_SRGB8_ALPHA8: {
break;
}
case GLenum::GL_R16: // fall-through...
case GLenum::GL_R16_SNORM: // fall-through...
case GLenum::GL_RG16: // fall-through...
case GLenum::GL_RG16_SNORM: // fall-through...
case GLenum::GL_RGB16: // fall-through...
case GLenum::GL_RGB16_SNORM: // fall-through...
case GLenum::GL_RGBA16: // fall-through...
case GLenum::GL_RGBA16_SNORM: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_norm16);
break;
}
case GLenum::GL_COMPRESSED_RGBA_ASTC_10x10: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_10x5: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_10x6: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_10x8: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_12x10: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_12x12: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_4x4: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_5x4: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_5x5: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_6x5: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_6x6: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_8x5: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_8x6: // fall-through...
case GLenum::GL_COMPRESSED_RGBA_ASTC_8x8: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6: // fall-through...
case GLenum::GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8: // fall-through...
case GLenum::GL_STENCIL_INDEX8: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
case GLenum::GL_ALPHA8_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_storage);
break;
}
case GLenum::GL_ETC1_RGB8_OES: {
subRequiresExtension(observer, call, ExtensionId::GL_OES_compressed_ETC1_RGB8_texture);
break;
}
default: {
subGlErrorInvalidEnum(observer, call, internalformat);
}
}
uint32_t l_fm = subImageFormat(observer, call, internalformat);
uint32_t l_ty = subImageType(observer, call, internalformat);
switch (target) {
case GLenum::GL_TEXTURE_2D: {
std::shared_ptr<Texture> l_t = subGetBoundTextureOrErrorInvalidEnum(observer, call, GLenum::GL_TEXTURE_2D);
for (GLint l_i = (GLint)(0L); l_i < (GLint)(levels); ++l_i) {
GLsizei l_w = subMax_GLsizei(observer, call, (width) >> ((uint32_t)(l_i)), (GLsizei)(1L));
GLsizei l_h = subMax_GLsizei(observer, call, (height) >> ((uint32_t)(l_i)), (GLsizei)(1L));
uint32_t l_s = subImageSize(observer, call, (uint32_t)(l_w), (uint32_t)(l_h), l_fm, l_ty);
Image l_l = Image(l_w, l_h, make<uint8_t>((uint64_t)(l_s)), l_s, l_fm, l_ty);
checkNotNull(l_t).mTexture2D[l_i] = l_l;
}
checkNotNull(l_t).mTexelFormat = l_fm;
checkNotNull(l_t).mTexelType = l_ty;
checkNotNull(l_t).mImmutableFormat = GLbooleanLabels::GL_TRUE;
break;
}
case GLenum::GL_TEXTURE_CUBE_MAP: {
std::shared_ptr<Texture> l_t = subGetBoundTextureOrErrorInvalidEnum(observer, call, GLenum::GL_TEXTURE_CUBE_MAP);
for (GLint l_i = (GLint)(0L); l_i < (GLint)(levels); ++l_i) {
GLsizei l_w = subMax_GLsizei(observer, call, (width) >> ((uint32_t)(l_i)), (GLsizei)(1L));
GLsizei l_h = subMax_GLsizei(observer, call, (height) >> ((uint32_t)(l_i)), (GLsizei)(1L));
uint32_t l_s = subImageSize(observer, call, (uint32_t)(l_w), (uint32_t)(l_h), l_fm, l_ty);
CubemapLevel l_cube = findOrZero(checkNotNull(l_t).mCubemap, l_i);
l_cube.mFaces[GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_X] = Image(l_w, l_h, make<uint8_t>((uint64_t)(l_s)), l_s, l_fm, l_ty);
l_cube.mFaces[GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Y] = Image(l_w, l_h, make<uint8_t>((uint64_t)(l_s)), l_s, l_fm, l_ty);
l_cube.mFaces[GLenum::GL_TEXTURE_CUBE_MAP_POSITIVE_Z] = Image(l_w, l_h, make<uint8_t>((uint64_t)(l_s)), l_s, l_fm, l_ty);
l_cube.mFaces[GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_X] = Image(l_w, l_h, make<uint8_t>((uint64_t)(l_s)), l_s, l_fm, l_ty);
l_cube.mFaces[GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Y] = Image(l_w, l_h, make<uint8_t>((uint64_t)(l_s)), l_s, l_fm, l_ty);
l_cube.mFaces[GLenum::GL_TEXTURE_CUBE_MAP_NEGATIVE_Z] = Image(l_w, l_h, make<uint8_t>((uint64_t)(l_s)), l_s, l_fm, l_ty);
checkNotNull(l_t).mCubemap[l_i] = l_cube;
}
checkNotNull(l_t).mTexelFormat = l_fm;
checkNotNull(l_t).mTexelType = l_ty;
checkNotNull(l_t).mImmutableFormat = GLbooleanLabels::GL_TRUE;
break;
}
default: {
subGlErrorInvalidEnum(observer, call, target);
}
}
return;
}
void GlesSpy::subTexStorage3DMultisample(CallObserver* observer, const std::function<void()>& call, uint32_t target, GLsizei samples, uint32_t internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) {
switch (target) {
case GLenum::GL_TEXTURE_2D_MULTISAMPLE_ARRAY: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, target);
}
}
switch (internalformat) {
case GLenum::GL_DEPTH24_STENCIL8: // fall-through...
case GLenum::GL_DEPTH32F_STENCIL8: // fall-through...
case GLenum::GL_DEPTH_COMPONENT16: // fall-through...
case GLenum::GL_DEPTH_COMPONENT24: // fall-through...
case GLenum::GL_DEPTH_COMPONENT32F: // fall-through...
case GLenum::GL_R11F_G11F_B10F: // fall-through...
case GLenum::GL_R16F: // fall-through...
case GLenum::GL_R16I: // fall-through...
case GLenum::GL_R16UI: // fall-through...
case GLenum::GL_R32F: // fall-through...
case GLenum::GL_R32I: // fall-through...
case GLenum::GL_R32UI: // fall-through...
case GLenum::GL_R8: // fall-through...
case GLenum::GL_R8I: // fall-through...
case GLenum::GL_R8UI: // fall-through...
case GLenum::GL_R8_SNORM: // fall-through...
case GLenum::GL_RG16F: // fall-through...
case GLenum::GL_RG16I: // fall-through...
case GLenum::GL_RG16UI: // fall-through...
case GLenum::GL_RG32F: // fall-through...
case GLenum::GL_RG32I: // fall-through...
case GLenum::GL_RG32UI: // fall-through...
case GLenum::GL_RG8: // fall-through...
case GLenum::GL_RG8I: // fall-through...
case GLenum::GL_RG8UI: // fall-through...
case GLenum::GL_RG8_SNORM: // fall-through...
case GLenum::GL_RGB10_A2: // fall-through...
case GLenum::GL_RGB10_A2UI: // fall-through...
case GLenum::GL_RGB16F: // fall-through...
case GLenum::GL_RGB16I: // fall-through...
case GLenum::GL_RGB16UI: // fall-through...
case GLenum::GL_RGB32F: // fall-through...
case GLenum::GL_RGB32I: // fall-through...
case GLenum::GL_RGB32UI: // fall-through...
case GLenum::GL_RGB565: // fall-through...
case GLenum::GL_RGB5_A1: // fall-through...
case GLenum::GL_RGB8: // fall-through...
case GLenum::GL_RGB8I: // fall-through...
case GLenum::GL_RGB8UI: // fall-through...
case GLenum::GL_RGB8_SNORM: // fall-through...
case GLenum::GL_RGB9_E5: // fall-through...
case GLenum::GL_RGBA16F: // fall-through...
case GLenum::GL_RGBA16I: // fall-through...
case GLenum::GL_RGBA16UI: // fall-through...
case GLenum::GL_RGBA32F: // fall-through...
case GLenum::GL_RGBA32I: // fall-through...
case GLenum::GL_RGBA32UI: // fall-through...
case GLenum::GL_RGBA4: // fall-through...
case GLenum::GL_RGBA8: // fall-through...
case GLenum::GL_RGBA8I: // fall-through...
case GLenum::GL_RGBA8UI: // fall-through...
case GLenum::GL_RGBA8_SNORM: // fall-through...
case GLenum::GL_SRGB8: // fall-through...
case GLenum::GL_SRGB8_ALPHA8: // fall-through...
case GLenum::GL_STENCIL_INDEX8: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, internalformat);
}
}
(void)samples;
(void)width;
(void)height;
(void)depth;
(void)fixedsamplelocations;
return;
}
uint64_t GlesSpy::subGetVertexAttrib(CallObserver* observer, const std::function<void()>& call, std::shared_ptr<Context> ctx, AttributeLocation index, uint32_t pname) {
std::shared_ptr<VertexArray> l_vao = findOrZero(checkNotNull(ctx).mInstances.mVertexArrays, checkNotNull(ctx).mBoundVertexArray);
std::shared_ptr<VertexAttributeArray> l_array = findOrZero(checkNotNull(l_vao).mVertexAttributeArrays, index);
return /* switch(pname) */
/* case GLenum::GL_VERTEX_ATTRIB_ARRAY_ENABLED: */(((pname) == (GLenum::GL_VERTEX_ATTRIB_ARRAY_ENABLED))) ? ((uint64_t)(checkNotNull(l_array).mEnabled)) :
/* case GLenum::GL_VERTEX_ATTRIB_ARRAY_SIZE: */(((pname) == (GLenum::GL_VERTEX_ATTRIB_ARRAY_SIZE))) ? ((uint64_t)(checkNotNull(l_array).mSize)) :
/* case GLenum::GL_VERTEX_ATTRIB_ARRAY_TYPE: */(((pname) == (GLenum::GL_VERTEX_ATTRIB_ARRAY_TYPE))) ? ((uint64_t)(checkNotNull(l_array).mType)) :
/* case GLenum::GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: */(((pname) == (GLenum::GL_VERTEX_ATTRIB_ARRAY_NORMALIZED))) ? ((uint64_t)(checkNotNull(l_array).mNormalized)) :
/* case GLenum::GL_VERTEX_ATTRIB_ARRAY_STRIDE: */(((pname) == (GLenum::GL_VERTEX_ATTRIB_ARRAY_STRIDE))) ? ((uint64_t)(checkNotNull(l_array).mStride)) :
/* case GLenum::GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: */(((pname) == (GLenum::GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING))) ? ((uint64_t)(checkNotNull(findOrZero(checkNotNull(l_vao).mVertexBufferBindings, checkNotNull(l_array).mBinding)).mBuffer)) :
/* case GLenum::GL_VERTEX_ATTRIB_ARRAY_DIVISOR: */(((pname) == (GLenum::GL_VERTEX_ATTRIB_ARRAY_DIVISOR))) ? ((uint64_t)(checkNotNull(findOrZero(checkNotNull(l_vao).mVertexBufferBindings, checkNotNull(l_array).mBinding)).mDivisor)) :
/* case GLenum::GL_VERTEX_ATTRIB_ARRAY_INTEGER: */(((pname) == (GLenum::GL_VERTEX_ATTRIB_ARRAY_INTEGER))) ? ((uint64_t)(checkNotNull(l_array).mInteger)) :
/* case GLenum::GL_VERTEX_ATTRIB_BINDING: */(((pname) == (GLenum::GL_VERTEX_ATTRIB_BINDING))) ? ((uint64_t)(checkNotNull(l_array).mBinding)) :
/* case GLenum::GL_VERTEX_ATTRIB_RELATIVE_OFFSET: */(((pname) == (GLenum::GL_VERTEX_ATTRIB_RELATIVE_OFFSET))) ? ((uint64_t)(checkNotNull(l_array).mRelativeOffset)) :
/* default: */ 0ULL;
}
void GlesSpy::subReadVertexArrays(CallObserver* observer, const std::function<void()>& call, std::shared_ptr<Context> ctx, uint32_t first_index, uint32_t index_count, uint32_t instance_count) {
if (((index_count) > (0UL)) && ((instance_count) > (0UL))) {
if ((checkNotNull(ctx).mBoundVertexArray) == ((VertexArrayId)(0UL))) {
std::shared_ptr<VertexArray> l_vao = findOrZero(checkNotNull(ctx).mInstances.mVertexArrays, (VertexArrayId)(0UL));
for (AttributeLocation l_i = (AttributeLocation)(0UL); l_i < (AttributeLocation)(checkNotNull(ctx).mConstants.mMaxVertexAttribs); ++l_i) {
std::shared_ptr<VertexAttributeArray> l_arr = findOrZero(checkNotNull(l_vao).mVertexAttributeArrays, l_i);
if ((checkNotNull(l_arr).mEnabled) == (GLbooleanLabels::GL_TRUE)) {
std::shared_ptr<VertexBufferBinding> l_binding = findOrZero(checkNotNull(l_vao).mVertexBufferBindings, checkNotNull(l_arr).mBinding);
if (((checkNotNull(l_binding).mBuffer) == ((BufferId)(0UL))) && ((checkNotNull(l_arr).mPointer) != (nullptr))) {
GLsizei l_stride = checkNotNull(l_binding).mStride;
GLint l__res_0 = subVertexAttribTypeSize(observer, call, checkNotNull(l_arr).mType);
GLint l_size = (l__res_0) * (checkNotNull(l_arr).mSize);
uint32_t l_divisor = (uint32_t)(checkNotNull(l_binding).mDivisor);
if ((l_divisor) == (0UL)) {
for (uint32_t l_v = first_index; l_v < (first_index) + (index_count); ++l_v) {
GLint l_offset = ((GLint)(l_stride)) * ((GLint)(l_v));
observer->read(slice(checkNotNull(l_arr).mPointer, (uint64_t)(l_offset), (uint64_t)((l_offset) + (l_size))));
}
} else {
uint32_t l_last_instance = (instance_count) - (1UL);
uint32_t l_last_index = (l_last_instance) / (l_divisor);
for (uint32_t l_v = 0UL; l_v < (l_last_index) + (1UL); ++l_v) {
GLint l_offset = ((GLint)(l_stride)) * ((GLint)(l_v));
observer->read(slice(checkNotNull(l_arr).mPointer, (uint64_t)(l_offset), (uint64_t)((l_offset) + (l_size))));
}
}
}
}
}
}
}
return;
}
void GlesSpy::subBindVertexArray(CallObserver* observer, const std::function<void()>& call, VertexArrayId array) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
if (!(checkNotNull(l_ctx).mInstances.mVertexArrays.count(array) > 0)) {
std::shared_ptr<VertexArray> l__res_0 = subNewVertexArray(observer, call, l_ctx);
checkNotNull(l_ctx).mInstances.mVertexArrays[array] = l__res_0;
}
checkNotNull(l_ctx).mBoundVertexArray = array;
return;
}
void GlesSpy::subGenVertexArrays(CallObserver* observer, const std::function<void()>& call, GLsizei count, VertexArrayId* arrays) {
if ((count) < ((GLsizei)(0L))) {
subGlErrorInvalidValue(observer, call);
}
Slice<VertexArrayId> l_a = slice(arrays, (uint64_t)((GLsizei)(0L)), (uint64_t)(count));
for (GLsizei l_i = (GLsizei)(0L); l_i < count; ++l_i) {
VertexArrayId l_id = (VertexArrayId)(slice(arrays, (uint64_t)((GLsizei)(0L)), (uint64_t)(count))[(uint64_t)(l_i)]);
observer->write<VertexArrayId>(l_a, (uint64_t)(l_i), l_id);
}
return;
}
void GlesSpy::subVertexAttribF(CallObserver* observer, const std::function<void()>& call, AttributeLocation location, Vec4f value) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
if ((location) >= ((AttributeLocation)(checkNotNull(l_ctx).mConstants.mMaxVertexAttribs))) {
subGlErrorInvalidValue(observer, call);
}
Slice<Vec4f> l_vals = make<Vec4f>(1ULL);
observer->write<Vec4f>(l_vals, 0ULL, value);
checkNotNull(l_ctx).mVertexAttributes[location] = VertexAttributeValue(l_vals.as<uint8_t>());
return;
}
void GlesSpy::subVertexAttribDivisor(CallObserver* observer, const std::function<void()>& call, AttributeLocation index, GLuint divisor) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
VertexBufferBindingIndex l_binding_index = (VertexBufferBindingIndex)(index);
subVertexAttribBinding(observer, call, l_ctx, index, l_binding_index);
std::shared_ptr<VertexArray> l_vao = findOrZero(checkNotNull(l_ctx).mInstances.mVertexArrays, checkNotNull(l_ctx).mBoundVertexArray);
checkNotNull(findOrZero(checkNotNull(l_vao).mVertexBufferBindings, l_binding_index)).mDivisor = divisor;
return;
}
void GlesSpy::subSupportsBits(CallObserver* observer, const std::function<void()>& call, uint32_t seenBits, uint32_t validBits) {
if (((seenBits) & (validBits)) != (seenBits)) {
subGlErrorInvalidValue(observer, call);
}
return;
}
void GlesSpy::subRequiresExtension3(CallObserver* observer, const std::function<void()>& call, uint32_t ext, uint32_t ext2, uint32_t ext3) {
return;
}
void GlesSpy::subGlErrorInvalidOperationMsg(CallObserver* observer, const std::function<void()>& call, const char* m) {
onGlError(observer, GLenum::GL_INVALID_OPERATION);
(void)newMsg(observer, Severity::SEVERITY_ERROR, m);
abort();
return;
}
void GlesSpy::subGlErrorInvalidValueMsg(CallObserver* observer, const std::function<void()>& call, const char* m) {
onGlError(observer, GLenum::GL_INVALID_VALUE);
(void)newMsg(observer, Severity::SEVERITY_ERROR, m);
abort();
return;
}
int32_t GlesSpy::subMin(CallObserver* observer, const std::function<void()>& call, int32_t a, int32_t b) {
return /* switch((a) < (b)) */
/* case true: */((((a) < (b)) == (true))) ? (a) :
/* case false: */((((a) < (b)) == (false))) ? (b) :
/* default: */ 0;
}
void GlesSpy::subApplyStaticContextState(CallObserver* observer, const std::function<void()>& call, std::shared_ptr<Context> ctx, std::shared_ptr<StaticContextState> staticState) {
if ((staticState) != (std::shared_ptr<StaticContextState>())) {
RenderbufferId l_color_id = (RenderbufferId)(4294967295UL);
RenderbufferId l_depth_id = (RenderbufferId)(4294967294UL);
RenderbufferId l_stencil_id = (RenderbufferId)(4294967293UL);
checkNotNull(ctx).mConstants = checkNotNull(staticState).mConstants;
checkNotNull(ctx).mInstances.mFramebuffers[(FramebufferId)(0UL)] = std::shared_ptr<Framebuffer>(new Framebuffer(GLenumToFramebufferAttachment(), GLintToGLenum(), GLenum::GL_BACK, (GLint)(0L), (GLint)(0L), (GLint)(0L), (GLint)(0L), GLbooleanLabels::GL_FALSE, ""));
checkNotNull(ctx).mInstances.mBuffers[(BufferId)(0UL)] = std::shared_ptr<Buffer>(new Buffer(Slice<uint8_t>(), (GLsizeiptr)(0L), GLenum::GL_STATIC_DRAW, 0, GLbooleanLabels::GL_FALSE, nullptr, (GLintptr)(0L), (GLsizeiptr)(0L), ""));
checkNotNull(ctx).mInstances.mRenderbuffers[(RenderbufferId)(0UL)] = std::shared_ptr<Renderbuffer>(new Renderbuffer(Slice<uint8_t>(), (GLsizei)(0L), (GLsizei)(0L), GLenum::GL_RGBA4, ""));
checkNotNull(ctx).mInstances.mTransformFeedbacks[(TransformFeedbackId)(0UL)] = std::shared_ptr<TransformFeedback>(new TransformFeedback(GLuintToBufferBinding(), GLbooleanLabels::GL_FALSE, GLbooleanLabels::GL_FALSE, ""));
std::shared_ptr<VertexArray> l__res_0 = subNewVertexArray(observer, call, ctx);
checkNotNull(ctx).mInstances.mVertexArrays[(VertexArrayId)(0UL)] = l__res_0;
checkNotNull(ctx).mTextureUnits[GLenum::GL_TEXTURE0] = std::shared_ptr<TextureUnit>(new TextureUnit((TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (SamplerId)(0UL)));
checkNotNull(ctx).mInstances.mDefaultTextures.mTexture2d = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_2D, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
checkNotNull(ctx).mInstances.mDefaultTextures.mTexture2dArray = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_2D_ARRAY, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
checkNotNull(ctx).mInstances.mDefaultTextures.mTexture2dMultisample = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_2D_MULTISAMPLE, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
checkNotNull(ctx).mInstances.mDefaultTextures.mTexture2dMultisampleArray = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
checkNotNull(ctx).mInstances.mDefaultTextures.mTexture3d = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_3D, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
checkNotNull(ctx).mInstances.mDefaultTextures.mTextureBuffer = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_BUFFER, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
checkNotNull(ctx).mInstances.mDefaultTextures.mTextureCubeMap = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_CUBE_MAP, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
checkNotNull(ctx).mInstances.mDefaultTextures.mTextureCubeMapArray = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_CUBE_MAP_ARRAY, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
checkNotNull(ctx).mInstances.mDefaultTextures.mTextureExternalOes = std::shared_ptr<Texture>(new Texture(0, GLenum::GL_TEXTURE_EXTERNAL_OES, 0, 0, GLintToImage(), GLintToCubemapLevel(), GLenum::GL_RED, GLenum::GL_GREEN, GLenum::GL_BLUE, GLenum::GL_ALPHA, std::move(Vec4f{(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f)}), GLenum::GL_NEAREST_MIPMAP_LINEAR, GLenum::GL_LINEAR, GLenum::GL_REPEAT, GLenum::GL_REPEAT, GLenum::GL_REPEAT, (GLfloat)(-1000.f), (GLfloat)(1000.f), (GLint)(0L), (GLint)(1000L), GLenum::GL_DEPTH_COMPONENT, GLenum::GL_NONE, GLenum::GL_LEQUAL, GLbooleanLabels::GL_FALSE, (GLuint)(0UL), "", (GLfloat)(1.f), nullptr));
checkNotNull(ctx).mInstances.mRenderbuffers[l_color_id] = std::shared_ptr<Renderbuffer>(new Renderbuffer(Slice<uint8_t>(), (GLsizei)(0L), (GLsizei)(0L), GLenum::GL_RGBA4, ""));
checkNotNull(ctx).mInstances.mRenderbuffers[l_depth_id] = std::shared_ptr<Renderbuffer>(new Renderbuffer(Slice<uint8_t>(), (GLsizei)(0L), (GLsizei)(0L), GLenum::GL_RGBA4, ""));
checkNotNull(ctx).mInstances.mRenderbuffers[l_stencil_id] = std::shared_ptr<Renderbuffer>(new Renderbuffer(Slice<uint8_t>(), (GLsizei)(0L), (GLsizei)(0L), GLenum::GL_RGBA4, ""));
std::shared_ptr<Framebuffer> l_backbuffer = findOrZero(checkNotNull(ctx).mInstances.mFramebuffers, (FramebufferId)(0UL));
checkNotNull(l_backbuffer).mAttachments[GLenum::GL_COLOR_ATTACHMENT0] = FramebufferAttachment(GLenum::GL_RENDERBUFFER, (GLuint)(l_color_id), (GLint)(0L), GLenum::GL_NONE, (GLint)(0L), GLbooleanLabels::GL_FALSE);
checkNotNull(l_backbuffer).mAttachments[GLenum::GL_DEPTH_ATTACHMENT] = FramebufferAttachment(GLenum::GL_RENDERBUFFER, (GLuint)(l_depth_id), (GLint)(0L), GLenum::GL_NONE, (GLint)(0L), GLbooleanLabels::GL_FALSE);
checkNotNull(l_backbuffer).mAttachments[GLenum::GL_STENCIL_ATTACHMENT] = FramebufferAttachment(GLenum::GL_RENDERBUFFER, (GLuint)(l_stencil_id), (GLint)(0L), GLenum::GL_NONE, (GLint)(0L), GLbooleanLabels::GL_FALSE);
checkNotNull(ctx).mBoundFramebuffers[GLenum::GL_DRAW_FRAMEBUFFER] = (FramebufferId)(0UL);
checkNotNull(ctx).mBoundFramebuffers[GLenum::GL_READ_FRAMEBUFFER] = (FramebufferId)(0UL);
for (AttributeLocation l_i = (AttributeLocation)(0UL); l_i < (AttributeLocation)(checkNotNull(staticState).mConstants.mMaxVertexAttribs); ++l_i) {
Slice<Vec4f> l_v = make<Vec4f>(1ULL);
observer->write<Vec4f>(l_v, 0ULL, {(GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(0.f), (GLfloat)(1.f)});
checkNotNull(ctx).mVertexAttributes[l_i] = VertexAttributeValue(l_v.as<uint8_t>());
}
for (GLint l_i = (GLint)(0L); l_i < checkNotNull(staticState).mConstants.mMaxCombinedTextureImageUnits; ++l_i) {
uint32_t l_name = (GLenum::GL_TEXTURE0) + ((uint32_t)(l_i));
checkNotNull(ctx).mTextureUnits[l_name] = std::shared_ptr<TextureUnit>(new TextureUnit((TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (TextureId)(0UL), (SamplerId)(0UL)));
}
for (GLuint l_i = (GLuint)(0UL); l_i < (GLuint)(checkNotNull(staticState).mConstants.mMaxImageUnits); ++l_i) {
checkNotNull(ctx).mImageUnits[l_i] = ImageUnit((TextureId)(0UL), (GLint)(0L), GLbooleanLabels::GL_FALSE, (GLint)(0L), GLenum::GL_READ_ONLY, GLenum::GL_R32UI);
}
for (DrawBufferIndex l_i = (DrawBufferIndex)(0UL); l_i < (DrawBufferIndex)(checkNotNull(ctx).mConstants.mMaxDrawBuffers); ++l_i) {
checkNotNull(ctx).mFragmentOperations.mBlend[l_i] = BlendState(GLbooleanLabels::GL_FALSE, GLenum::GL_ONE, GLenum::GL_ONE, GLenum::GL_ZERO, GLenum::GL_ZERO, GLenum::GL_FUNC_ADD, GLenum::GL_FUNC_ADD);
checkNotNull(ctx).mFramebuffer.mColorWritemask[l_i] = {GLbooleanLabels::GL_TRUE, GLbooleanLabels::GL_TRUE, GLbooleanLabels::GL_TRUE, GLbooleanLabels::GL_TRUE};
}
checkNotNull(ctx).mInfo.mInitialized = true;
}
return;
}
void GlesSpy::subGetnUniformfv_GLuint__P(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei bufSize, GLuint* values) {
(void)program;
(void)location;
observer->write(slice((char*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(bufSize)));
return;
}
void GlesSpy::subProgramUniformv_GLint__S(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, Slice<GLint> values, uint32_t type) {
subSetProgramUniform(observer, call, program, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subProgramUniformv_Vec2f__S(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, Slice<Vec2f> values, uint32_t type) {
subSetProgramUniform(observer, call, program, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subProgramUniformv_Vec3i__S(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, Slice<Vec3i> values, uint32_t type) {
subSetProgramUniform(observer, call, program, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subProgramUniformv_Vec3u__S(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, Slice<Vec3u> values, uint32_t type) {
subSetProgramUniform(observer, call, program, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subProgramUniformv_Vec4f__S(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, Slice<Vec4f> values, uint32_t type) {
subSetProgramUniform(observer, call, program, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subProgramUniformMatrixv_Mat2x3f__S(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLboolean transpose, Slice<Mat2x3f> values, uint32_t type) {
(void)transpose;
subSetProgramUniform(observer, call, program, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subProgramUniformMatrixv_Mat3f__S(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLboolean transpose, Slice<Mat3f> values, uint32_t type) {
(void)transpose;
subSetProgramUniform(observer, call, program, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subProgramUniformMatrixv_Mat3x2f__S(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLboolean transpose, Slice<Mat3x2f> values, uint32_t type) {
(void)transpose;
subSetProgramUniform(observer, call, program, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subProgramUniformMatrixv_Mat3x4f__S(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLboolean transpose, Slice<Mat3x4f> values, uint32_t type) {
(void)transpose;
subSetProgramUniform(observer, call, program, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subProgramUniformMatrixv_Mat4x3f__S(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLboolean transpose, Slice<Mat4x3f> values, uint32_t type) {
(void)transpose;
subSetProgramUniform(observer, call, program, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subUniformMatrixv_Mat2x3f__S(CallObserver* observer, const std::function<void()>& call, UniformLocation location, GLboolean transpose, Slice<Mat2x3f> values, uint32_t type) {
(void)transpose;
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subSetProgramUniform(observer, call, checkNotNull(l_ctx).mBoundProgram, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subUniformMatrixv_Mat3x2f__S(CallObserver* observer, const std::function<void()>& call, UniformLocation location, GLboolean transpose, Slice<Mat3x2f> values, uint32_t type) {
(void)transpose;
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subSetProgramUniform(observer, call, checkNotNull(l_ctx).mBoundProgram, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subUniformMatrixv_Mat3x4f__S(CallObserver* observer, const std::function<void()>& call, UniformLocation location, GLboolean transpose, Slice<Mat3x4f> values, uint32_t type) {
(void)transpose;
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subSetProgramUniform(observer, call, checkNotNull(l_ctx).mBoundProgram, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subUniformMatrixv_Mat4x3f__S(CallObserver* observer, const std::function<void()>& call, UniformLocation location, GLboolean transpose, Slice<Mat4x3f> values, uint32_t type) {
(void)transpose;
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subSetProgramUniform(observer, call, checkNotNull(l_ctx).mBoundProgram, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subGetStateVariable_GLint64(CallObserver* observer, const std::function<void()>& call, uint32_t name, bool isIndexed, GLuint index, GLint64* v) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
switch (name) {
case GLenum::GL_ACTIVE_TEXTURE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mActiveTextureUnit));
break;
}
case GLenum::GL_ALIASED_LINE_WIDTH_RANGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint64> l_s = slice(v, 0ULL, 2ULL);
observer->write<GLint64>(l_s, 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mAliasedLineWidthRange[0ULL]));
observer->write<GLint64>(l_s, 1ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mAliasedLineWidthRange[1ULL]));
break;
}
case GLenum::GL_ALIASED_POINT_SIZE_RANGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint64> l_s = slice(v, 0ULL, 2ULL);
observer->write<GLint64>(l_s, 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mAliasedPointSizeRange[0ULL]));
observer->write<GLint64>(l_s, 1ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mAliasedPointSizeRange[1ULL]));
break;
}
case GLenum::GL_ALPHA_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_ARRAY_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundBuffers.mArrayBuffer));
break;
}
case GLenum::GL_ATOMIC_COUNTER_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mAtomicCounterBuffers, index).mBinding));
} else {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundBuffers.mAtomicCounterBuffer));
}
break;
}
case GLenum::GL_ATOMIC_COUNTER_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mAtomicCounterBuffers, index).mSize));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_ATOMIC_COUNTER_BUFFER_START: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mAtomicCounterBuffers, index).mStart));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_BLEND: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mEnabled));
break;
}
case GLenum::GL_BLEND_COLOR: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint64> l_s = slice(v, 0ULL, 4ULL);
observer->write<GLint64>(l_s, 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mBlendColor.mRed));
observer->write<GLint64>(l_s, 1ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mBlendColor.mGreen));
observer->write<GLint64>(l_s, 2ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mBlendColor.mBlue));
observer->write<GLint64>(l_s, 3ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mBlendColor.mAlpha));
break;
}
case GLenum::GL_BLEND_DST_ALPHA: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mDstAlpha));
break;
}
case GLenum::GL_BLEND_DST_RGB: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mDstRgb));
break;
}
case GLenum::GL_BLEND_EQUATION_ALPHA: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mEquationAlpha));
break;
}
case GLenum::GL_BLEND_EQUATION_RGB: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mEquationRgb));
break;
}
case GLenum::GL_BLEND_SRC_ALPHA: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mSrcAlpha));
break;
}
case GLenum::GL_BLEND_SRC_RGB: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mSrcRgb));
break;
}
case GLenum::GL_BLUE_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_COLOR_CLEAR_VALUE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint64> l_s = slice(v, 0ULL, 4ULL);
observer->write<GLint64>(l_s, 0ULL, (GLint64)(checkNotNull(l_ctx).mFramebuffer.mColorClearValue[0ULL]));
observer->write<GLint64>(l_s, 1ULL, (GLint64)(checkNotNull(l_ctx).mFramebuffer.mColorClearValue[1ULL]));
observer->write<GLint64>(l_s, 2ULL, (GLint64)(checkNotNull(l_ctx).mFramebuffer.mColorClearValue[2ULL]));
observer->write<GLint64>(l_s, 3ULL, (GLint64)(checkNotNull(l_ctx).mFramebuffer.mColorClearValue[3ULL]));
break;
}
case GLenum::GL_COLOR_WRITEMASK: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint64> l_s = slice(v, 0ULL, 4ULL);
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint64>(l_s, 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mFramebuffer.mColorWritemask, l_i)[0ULL]));
observer->write<GLint64>(l_s, 1ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mFramebuffer.mColorWritemask, l_i)[1ULL]));
observer->write<GLint64>(l_s, 2ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mFramebuffer.mColorWritemask, l_i)[2ULL]));
observer->write<GLint64>(l_s, 3ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mFramebuffer.mColorWritemask, l_i)[3ULL]));
break;
}
case GLenum::GL_COMPRESSED_TEXTURE_FORMATS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint64> l_s = slice(v, 0ULL, uint64_t((checkNotNull(l_ctx).mConstants.mCompressedTextureFormats.size())));
{
int32_t l__ = 0;
for (U32ToGLenum::iterator it = checkNotNull(l_ctx).mConstants.mCompressedTextureFormats.begin(); it != checkNotNull(l_ctx).mConstants.mCompressedTextureFormats.end(); ++it, ++l__) {
uint32_t l_i = it->first;
uint32_t l_f = it->second;
observer->write<GLint64>(l_s, (uint64_t)(l_i), (GLint64)(l_f));
}
}
break;
}
case GLenum::GL_CONTEXT_FLAGS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mContextFlags));
break;
}
case GLenum::GL_CONTEXT_ROBUST_ACCESS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_COPY_READ_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundBuffers.mCopyReadBuffer));
break;
}
case GLenum::GL_COPY_WRITE_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundBuffers.mCopyWriteBuffer));
break;
}
case GLenum::GL_CULL_FACE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mCullFace));
break;
}
case GLenum::GL_CULL_FACE_MODE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mCullFaceMode));
break;
}
case GLenum::GL_CURRENT_PROGRAM: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundProgram));
break;
}
case GLenum::GL_DEBUG_GROUP_STACK_DEPTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_DEBUG_LOGGED_MESSAGES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_DEPTH_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_DEPTH_CLEAR_VALUE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFramebuffer.mDepthClearValue));
break;
}
case GLenum::GL_DEPTH_FUNC: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mDepth.mFunc));
break;
}
case GLenum::GL_DEPTH_RANGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint64> l_s = slice(v, 0ULL, 2ULL);
observer->write<GLint64>(l_s, 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mDepthRange[0ULL]));
observer->write<GLint64>(l_s, 1ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mDepthRange[1ULL]));
break;
}
case GLenum::GL_DEPTH_TEST: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mDepth.mTest));
break;
}
case GLenum::GL_DEPTH_WRITEMASK: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFramebuffer.mDepthWritemask));
break;
}
case GLenum::GL_DISPATCH_INDIRECT_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundBuffers.mDispatchIndirectBuffer));
break;
}
case GLenum::GL_DITHER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mDither));
break;
}
case GLenum::GL_DRAW_BUFFER: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_DRAW_BUFFER0: // fall-through...
case GLenum::GL_DRAW_BUFFER1: // fall-through...
case GLenum::GL_DRAW_BUFFER2: // fall-through...
case GLenum::GL_DRAW_BUFFER3: // fall-through...
case GLenum::GL_DRAW_BUFFER4: // fall-through...
case GLenum::GL_DRAW_BUFFER5: // fall-through...
case GLenum::GL_DRAW_BUFFER6: // fall-through...
case GLenum::GL_DRAW_BUFFER7: // fall-through...
case GLenum::GL_DRAW_BUFFER8: // fall-through...
case GLenum::GL_DRAW_BUFFER9: // fall-through...
case GLenum::GL_DRAW_BUFFER10: // fall-through...
case GLenum::GL_DRAW_BUFFER11: // fall-through...
case GLenum::GL_DRAW_BUFFER12: // fall-through...
case GLenum::GL_DRAW_BUFFER13: // fall-through...
case GLenum::GL_DRAW_BUFFER14: // fall-through...
case GLenum::GL_DRAW_BUFFER15: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
std::shared_ptr<Framebuffer> l_framebuffer = subGetBoundFramebufferOrErrorInvalidEnum(observer, call, GLenum::GL_DRAW_FRAMEBUFFER);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_framebuffer).mDrawBuffer, (GLint)((name) - (GLenum::GL_DRAW_BUFFER0)))));
break;
}
case GLenum::GL_DRAW_FRAMEBUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mBoundFramebuffers, GLenum::GL_FRAMEBUFFER)));
break;
}
case GLenum::GL_ELEMENT_ARRAY_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(l_ctx).mInstances.mVertexArrays, checkNotNull(l_ctx).mBoundVertexArray)).mElementArrayBuffer));
break;
}
case GLenum::GL_FRAGMENT_INTERPOLATION_OFFSET_BITS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mFragmentInterpolationOffsetBits));
break;
}
case GLenum::GL_FRAGMENT_SHADER_DERIVATIVE_HINT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_FRONT_FACE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mFrontFace));
break;
}
case GLenum::GL_GENERATE_MIPMAP_HINT: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mMiscellaneous.mGenerateMipmapHint));
break;
}
case GLenum::GL_GREEN_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_IMAGE_BINDING_NAME: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mImageUnits, index).mName));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_IMAGE_BINDING_LEVEL: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mImageUnits, index).mLevel));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_IMAGE_BINDING_LAYERED: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mImageUnits, index).mLayered));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_IMAGE_BINDING_LAYER: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mImageUnits, index).mLayer));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_IMAGE_BINDING_ACCESS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mImageUnits, index).mAccess));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_IMAGE_BINDING_FORMAT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mImageUnits, index).mFormat));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_IMPLEMENTATION_COLOR_READ_FORMAT: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_IMPLEMENTATION_COLOR_READ_TYPE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_LAYER_PROVOKING_VERTEX: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mLayerProvokingVertex));
break;
}
case GLenum::GL_LINE_WIDTH: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mLineWidth));
break;
}
case GLenum::GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mPrimitiveRestartForPatchesSupported));
break;
}
case GLenum::GL_MAJOR_VERSION: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMajorVersion));
break;
}
case GLenum::GL_MAX_3D_TEXTURE_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMax3dTextureSize));
break;
}
case GLenum::GL_MAX_ARRAY_TEXTURE_LAYERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxArrayTextureLayers));
break;
}
case GLenum::GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxAtomicCounterBufferBindings));
break;
}
case GLenum::GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxAtomicCounterBufferSize));
break;
}
case GLenum::GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxCombinedAtomicCounterBuffers));
break;
}
case GLenum::GL_MAX_COLOR_ATTACHMENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxColorAttachments));
break;
}
case GLenum::GL_MAX_COLOR_TEXTURE_SAMPLES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxColorTextureSamples));
break;
}
case GLenum::GL_MAX_DEPTH_TEXTURE_SAMPLES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxDepthTextureSamples));
break;
}
case GLenum::GL_MAX_COMBINED_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxCombinedAtomicCounters));
break;
}
case GLenum::GL_MAX_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxImageUnits));
break;
}
case GLenum::GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxCombinedComputeUniformComponents));
break;
}
case GLenum::GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedFragmentUniformComponents);
break;
}
case GLenum::GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxCombinedGeometryUniformComponents));
break;
}
case GLenum::GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxCombinedShaderStorageBlocks));
break;
}
case GLenum::GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxCombinedTessControlUniformComponents));
break;
}
case GLenum::GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxCombinedTessEvaluationUniformComponents));
break;
}
case GLenum::GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxCombinedTextureImageUnits));
break;
}
case GLenum::GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxCombinedShaderOutputResources));
break;
}
case GLenum::GL_MAX_COMBINED_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxCombinedUniformBlocks));
break;
}
case GLenum::GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedVertexUniformComponents);
break;
}
case GLenum::GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxComputeAtomicCounterBuffers));
break;
}
case GLenum::GL_MAX_COMPUTE_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxComputeAtomicCounters));
break;
}
case GLenum::GL_MAX_COMPUTE_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxComputeImageUniforms));
break;
}
case GLenum::GL_MAX_COMBINED_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxCombinedImageUniforms));
break;
}
case GLenum::GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxComputeShaderStorageBlocks));
break;
}
case GLenum::GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxComputeTextureImageUnits));
break;
}
case GLenum::GL_MAX_COMPUTE_SHARED_MEMORY_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxComputeSharedMemorySize));
break;
}
case GLenum::GL_MAX_COMPUTE_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxComputeUniformBlocks));
break;
}
case GLenum::GL_MAX_COMPUTE_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxComputeUniformComponents));
break;
}
case GLenum::GL_MAX_COMPUTE_WORK_GROUP_COUNT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxComputeWorkGroupCount[index]));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxComputeWorkGroupInvocations));
break;
}
case GLenum::GL_MAX_COMPUTE_WORK_GROUP_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxComputeWorkGroupSize[index]));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_MAX_CUBE_MAP_TEXTURE_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxCubeMapTextureSize));
break;
}
case GLenum::GL_MAX_DEBUG_GROUP_STACK_DEPTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxDebugGroupStackDepth));
break;
}
case GLenum::GL_MAX_DEBUG_LOGGED_MESSAGES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxDebugLoggedMessages));
break;
}
case GLenum::GL_MAX_DEBUG_MESSAGE_LENGTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxDebugMessageLength));
break;
}
case GLenum::GL_MAX_DRAW_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxDrawBuffers));
break;
}
case GLenum::GL_MAX_ELEMENT_INDEX: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxElementIndex);
break;
}
case GLenum::GL_MAX_ELEMENTS_INDICES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxElementsIndices));
break;
}
case GLenum::GL_MAX_ELEMENTS_VERTICES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxElementsVertices));
break;
}
case GLenum::GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFragmentAtomicCounterBuffers));
break;
}
case GLenum::GL_MAX_FRAGMENT_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFragmentAtomicCounters));
break;
}
case GLenum::GL_MAX_FRAGMENT_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFragmentImageUniforms));
break;
}
case GLenum::GL_MAX_FRAGMENT_INPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFragmentInputComponents));
break;
}
case GLenum::GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFragmentInterpolationOffset));
break;
}
case GLenum::GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFragmentShaderStorageBlocks));
break;
}
case GLenum::GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMinProgramTextureGatherOffset));
break;
}
case GLenum::GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxProgramTextureGatherOffset));
break;
}
case GLenum::GL_MAX_FRAGMENT_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFragmentUniformBlocks));
break;
}
case GLenum::GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFragmentUniformComponents));
break;
}
case GLenum::GL_MAX_FRAGMENT_UNIFORM_VECTORS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFragmentUniformVectors));
break;
}
case GLenum::GL_MAX_FRAMEBUFFER_HEIGHT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFramebufferHeight));
break;
}
case GLenum::GL_MAX_FRAMEBUFFER_LAYERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFramebufferLayers));
break;
}
case GLenum::GL_MAX_FRAMEBUFFER_SAMPLES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFramebufferSamples));
break;
}
case GLenum::GL_MAX_FRAMEBUFFER_WIDTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxFramebufferWidth));
break;
}
case GLenum::GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxGeometryAtomicCounterBuffers));
break;
}
case GLenum::GL_MAX_GEOMETRY_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxGeometryAtomicCounters));
break;
}
case GLenum::GL_MAX_GEOMETRY_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxGeometryImageUniforms));
break;
}
case GLenum::GL_MAX_GEOMETRY_INPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxGeometryInputComponents));
break;
}
case GLenum::GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxGeometryOutputComponents));
break;
}
case GLenum::GL_MAX_GEOMETRY_OUTPUT_VERTICES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxGeometryOutputVertices));
break;
}
case GLenum::GL_MAX_GEOMETRY_SHADER_INVOCATIONS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxGeometryShaderInvocations));
break;
}
case GLenum::GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxGeometryShaderStorageBlocks));
break;
}
case GLenum::GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxGeometryTextureImageUnits));
break;
}
case GLenum::GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxGeometryTotalOutputComponents));
break;
}
case GLenum::GL_MAX_GEOMETRY_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxGeometryUniformBlocks));
break;
}
case GLenum::GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxGeometryUniformComponents));
break;
}
case GLenum::GL_MAX_INTEGER_SAMPLES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxIntegerSamples));
break;
}
case GLenum::GL_MAX_LABEL_LENGTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxLabelLength));
break;
}
case GLenum::GL_MAX_PROGRAM_TEXEL_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxProgramTexelOffset));
break;
}
case GLenum::GL_MAX_RENDERBUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxRenderbufferSize));
break;
}
case GLenum::GL_MAX_SAMPLE_MASK_WORDS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxSampleMaskWords));
break;
}
case GLenum::GL_MAX_SAMPLES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_MAX_SERVER_WAIT_TIMEOUT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxServerWaitTimeout);
break;
}
case GLenum::GL_MAX_SHADER_STORAGE_BLOCK_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxShaderStorageBlockSize);
break;
}
case GLenum::GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxShaderStorageBufferBindings));
break;
}
case GLenum::GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessControlAtomicCounterBuffers));
break;
}
case GLenum::GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessControlAtomicCounters));
break;
}
case GLenum::GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessControlImageUniforms));
break;
}
case GLenum::GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessControlInputComponents));
break;
}
case GLenum::GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessControlOutputComponents));
break;
}
case GLenum::GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessControlShaderStorageBlocks));
break;
}
case GLenum::GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessControlTextureImageUnits));
break;
}
case GLenum::GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessControlTotalOutputComponents));
break;
}
case GLenum::GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessControlUniformBlocks));
break;
}
case GLenum::GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessControlUniformComponents));
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessEvaluationAtomicCounterBuffers));
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessEvaluationAtomicCounters));
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessEvaluationImageUniforms));
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessEvaluationInputComponents));
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessEvaluationOutputComponents));
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessEvaluationShaderStorageBlocks));
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessEvaluationTextureImageUnits));
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessEvaluationUniformBlocks));
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessEvaluationUniformComponents));
break;
}
case GLenum::GL_MAX_TESS_GEN_LEVEL: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessGenLevel));
break;
}
case GLenum::GL_MAX_PATCH_VERTICES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxPatchVertices));
break;
}
case GLenum::GL_MAX_TESS_PATCH_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTessPatchComponents));
break;
}
case GLenum::GL_MAX_TEXTURE_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTextureBufferSize));
break;
}
case GLenum::GL_MAX_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTextureImageUnits));
break;
}
case GLenum::GL_MAX_TEXTURE_LOD_BIAS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTextureLodBias));
break;
}
case GLenum::GL_MAX_TEXTURE_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTextureSize));
break;
}
case GLenum::GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTransformFeedbackInterleavedComponents));
break;
}
case GLenum::GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTransformFeedbackSeparateAttribs));
break;
}
case GLenum::GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTransformFeedbackSeparateComponents));
break;
}
case GLenum::GL_MAX_UNIFORM_BLOCK_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxUniformBlockSize);
break;
}
case GLenum::GL_MAX_UNIFORM_BUFFER_BINDINGS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxUniformBufferBindings));
break;
}
case GLenum::GL_MAX_UNIFORM_LOCATIONS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxUniformLocations));
break;
}
case GLenum::GL_MAX_VARYING_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVaryingComponents));
break;
}
case GLenum::GL_MAX_VARYING_VECTORS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVaryingVectors));
break;
}
case GLenum::GL_MAX_VERTEX_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexAtomicCounters));
break;
}
case GLenum::GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexAtomicCounterBuffers));
break;
}
case GLenum::GL_MAX_VERTEX_ATTRIB_BINDINGS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexAttribBindings));
break;
}
case GLenum::GL_MAX_VERTEX_ATTRIB_STRIDE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexAttribStride));
break;
}
case GLenum::GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexAttribRelativeOffset));
break;
}
case GLenum::GL_MAX_VERTEX_ATTRIBS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexAttribs));
break;
}
case GLenum::GL_MAX_VERTEX_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexImageUniforms));
break;
}
case GLenum::GL_MAX_VERTEX_OUTPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexOutputComponents));
break;
}
case GLenum::GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexShaderStorageBlocks));
break;
}
case GLenum::GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexTextureImageUnits));
break;
}
case GLenum::GL_MAX_VERTEX_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexUniformBlocks));
break;
}
case GLenum::GL_MAX_VERTEX_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexUniformComponents));
break;
}
case GLenum::GL_MAX_VERTEX_UNIFORM_VECTORS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxVertexUniformVectors));
break;
}
case GLenum::GL_MAX_VIEWPORT_DIMS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint64> l_s = slice(v, 0ULL, 2ULL);
observer->write<GLint64>(l_s, 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxViewportDims[0ULL]));
observer->write<GLint64>(l_s, 1ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxViewportDims[1ULL]));
break;
}
case GLenum::GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMinFragmentInterpolationOffset));
break;
}
case GLenum::GL_MIN_PROGRAM_TEXEL_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMinProgramTexelOffset));
break;
}
case GLenum::GL_MIN_SAMPLE_SHADING_VALUE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mMinSampleShadingValue));
break;
}
case GLenum::GL_MINOR_VERSION: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMinorVersion));
break;
}
case GLenum::GL_MULTISAMPLE_LINE_WIDTH_RANGE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
Slice<GLint64> l_s = slice(v, 0ULL, 2ULL);
observer->write<GLint64>(l_s, 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMultisampleLineWidthRange[0ULL]));
observer->write<GLint64>(l_s, 1ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMultisampleLineWidthRange[1ULL]));
break;
}
case GLenum::GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMultisampleLineWidthGranularity));
break;
}
case GLenum::GL_NUM_COMPRESSED_TEXTURE_FORMATS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(int64_t((checkNotNull(l_ctx).mConstants.mCompressedTextureFormats.size()))));
break;
}
case GLenum::GL_NUM_EXTENSIONS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(int64_t((checkNotNull(l_ctx).mConstants.mExtensions.size()))));
break;
}
case GLenum::GL_NUM_PROGRAM_BINARY_FORMATS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(int64_t((checkNotNull(l_ctx).mConstants.mProgramBinaryFormats.size()))));
break;
}
case GLenum::GL_NUM_SHADER_BINARY_FORMATS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(int64_t((checkNotNull(l_ctx).mConstants.mShaderBinaryFormats.size()))));
break;
}
case GLenum::GL_PACK_ALIGNMENT: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mPixelStorage.mPackAlignment));
break;
}
case GLenum::GL_PACK_IMAGE_HEIGHT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mPixelStorage.mPackImageHeight));
break;
}
case GLenum::GL_PACK_ROW_LENGTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mPixelStorage.mPackRowLength));
break;
}
case GLenum::GL_PACK_SKIP_IMAGES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mPixelStorage.mPackSkipImages));
break;
}
case GLenum::GL_PACK_SKIP_PIXELS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mPixelStorage.mPackSkipPixels));
break;
}
case GLenum::GL_PACK_SKIP_ROWS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mPixelStorage.mPackSkipRows));
break;
}
case GLenum::GL_PATCH_VERTICES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_PIXEL_PACK_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundBuffers.mPixelPackBuffer));
break;
}
case GLenum::GL_PIXEL_UNPACK_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundBuffers.mPixelUnpackBuffer));
break;
}
case GLenum::GL_POLYGON_OFFSET_FACTOR: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mPolygonOffsetFactor));
break;
}
case GLenum::GL_POLYGON_OFFSET_FILL: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mPolygonOffsetFill));
break;
}
case GLenum::GL_POLYGON_OFFSET_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mPolygonOffsetUnits));
break;
}
case GLenum::GL_PRIMITIVE_BOUNDING_BOX: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 8ULL));
break;
}
case GLenum::GL_PRIMITIVE_RESTART_FIXED_INDEX: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mMiscellaneous.mPrimitiveRestartFixedIndex));
break;
}
case GLenum::GL_PROGRAM_BINARY_FORMATS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
Slice<GLint64> l_s = slice(v, 0ULL, uint64_t((checkNotNull(l_ctx).mConstants.mProgramBinaryFormats.size())));
{
int32_t l__ = 0;
for (U32ToGLenum::iterator it = checkNotNull(l_ctx).mConstants.mProgramBinaryFormats.begin(); it != checkNotNull(l_ctx).mConstants.mProgramBinaryFormats.end(); ++it, ++l__) {
uint32_t l_i = it->first;
uint32_t l_f = it->second;
observer->write<GLint64>(l_s, (uint64_t)(l_i), (GLint64)(l_f));
}
}
break;
}
case GLenum::GL_PROGRAM_PIPELINE_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_RASTERIZER_DISCARD: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mRasterizerDiscard));
break;
}
case GLenum::GL_READ_BUFFER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_READ_FRAMEBUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mBoundFramebuffers, GLenum::GL_READ_FRAMEBUFFER)));
break;
}
case GLenum::GL_RED_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_RENDERBUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mBoundRenderbuffers, GLenum::GL_RENDERBUFFER)));
break;
}
case GLenum::GL_RESET_NOTIFICATION_STRATEGY: {
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_SAMPLE_ALPHA_TO_COVERAGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mSampleAlphaToCoverage));
break;
}
case GLenum::GL_SAMPLE_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_SAMPLE_COVERAGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mSampleCoverage));
break;
}
case GLenum::GL_SAMPLE_COVERAGE_INVERT: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mSampleCoverageInvert));
break;
}
case GLenum::GL_SAMPLE_COVERAGE_VALUE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mSampleCoverageValue));
break;
}
case GLenum::GL_SAMPLE_SHADING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_SAMPLER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_SAMPLES: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_SCISSOR_BOX: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint64> l_s = slice(v, 0ULL, 4ULL);
observer->write<GLint64>(l_s, 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mScissor.mBox.mX));
observer->write<GLint64>(l_s, 1ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mScissor.mBox.mY));
observer->write<GLint64>(l_s, 2ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mScissor.mBox.mWidth));
observer->write<GLint64>(l_s, 3ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mScissor.mBox.mHeight));
break;
}
case GLenum::GL_SCISSOR_TEST: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mScissor.mTest));
break;
}
case GLenum::GL_SHADER_BINARY_FORMATS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint64> l_s = slice(v, 0ULL, uint64_t((checkNotNull(l_ctx).mConstants.mShaderBinaryFormats.size())));
{
int32_t l__ = 0;
for (U32ToGLenum::iterator it = checkNotNull(l_ctx).mConstants.mShaderBinaryFormats.begin(); it != checkNotNull(l_ctx).mConstants.mShaderBinaryFormats.end(); ++it, ++l__) {
uint32_t l_i = it->first;
uint32_t l_f = it->second;
observer->write<GLint64>(l_s, (uint64_t)(l_i), (GLint64)(l_f));
}
}
break;
}
case GLenum::GL_SHADER_COMPILER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mShaderCompiler));
break;
}
case GLenum::GL_SHADER_STORAGE_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mShaderStorageBuffers, index).mBinding));
} else {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundBuffers.mShaderStorageBuffer));
}
break;
}
case GLenum::GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mShaderStorageBufferOffsetAlignment));
break;
}
case GLenum::GL_SHADER_STORAGE_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mShaderStorageBuffers, index).mSize));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_SHADER_STORAGE_BUFFER_START: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mShaderStorageBuffers, index).mStart));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_STENCIL_BACK_FAIL: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackFail));
break;
}
case GLenum::GL_STENCIL_BACK_FUNC: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackFunc));
break;
}
case GLenum::GL_STENCIL_BACK_PASS_DEPTH_FAIL: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackPassDepthFail));
break;
}
case GLenum::GL_STENCIL_BACK_PASS_DEPTH_PASS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackPassDepthPass));
break;
}
case GLenum::GL_STENCIL_BACK_REF: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackRef));
break;
}
case GLenum::GL_STENCIL_BACK_VALUE_MASK: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackValueMask));
break;
}
case GLenum::GL_STENCIL_BACK_WRITEMASK: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFramebuffer.mStencilBackWritemask));
break;
}
case GLenum::GL_STENCIL_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_STENCIL_CLEAR_VALUE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFramebuffer.mStencilClearValue));
break;
}
case GLenum::GL_STENCIL_FAIL: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mFail));
break;
}
case GLenum::GL_STENCIL_FUNC: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mFunc));
break;
}
case GLenum::GL_STENCIL_PASS_DEPTH_FAIL: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mPassDepthFail));
break;
}
case GLenum::GL_STENCIL_PASS_DEPTH_PASS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mPassDepthPass));
break;
}
case GLenum::GL_STENCIL_REF: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mRef));
break;
}
case GLenum::GL_STENCIL_TEST: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mTest));
break;
}
case GLenum::GL_STENCIL_VALUE_MASK: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mValueMask));
break;
}
case GLenum::GL_STENCIL_WRITEMASK: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mFramebuffer.mStencilWritemask));
break;
}
case GLenum::GL_SUBPIXEL_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mSubpixelBits));
break;
}
case GLenum::GL_TEXTURE_BINDING_2D: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBinding2d));
break;
}
case GLenum::GL_TEXTURE_BINDING_EXTERNAL_OES: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBindingExternalOes));
break;
}
case GLenum::GL_TEXTURE_BINDING_2D_ARRAY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBinding2dArray));
break;
}
case GLenum::GL_TEXTURE_BINDING_2D_MULTISAMPLE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBinding2dMultisample));
break;
}
case GLenum::GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBinding2dMultisampleArray));
break;
}
case GLenum::GL_TEXTURE_BINDING_3D: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBinding3d));
break;
}
case GLenum::GL_TEXTURE_BINDING_BUFFER: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBindingBuffer));
break;
}
case GLenum::GL_TEXTURE_BINDING_CUBE_MAP: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBindingCubeMap));
break;
}
case GLenum::GL_TEXTURE_BINDING_CUBE_MAP_ARRAY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBindingCubeMapArray));
break;
}
case GLenum::GL_TEXTURE_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mTextureBufferOffsetAlignment));
break;
}
case GLenum::GL_TRANSFORM_FEEDBACK_ACTIVE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
std::shared_ptr<TransformFeedback> l__res_0 = subGetBoundTransformFeedback(observer, call);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l__res_0).mActive));
break;
}
case GLenum::GL_TRANSFORM_FEEDBACK_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundTransformFeedback));
break;
}
case GLenum::GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
if (isIndexed) {
std::shared_ptr<TransformFeedback> l__res_0 = subGetBoundTransformFeedback(observer, call);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l__res_0).mBuffers, index).mBinding));
} else {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundBuffers.mTransformFeedbackBuffer));
}
break;
}
case GLenum::GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
if (isIndexed) {
std::shared_ptr<TransformFeedback> l__res_0 = subGetBoundTransformFeedback(observer, call);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l__res_0).mBuffers, index).mSize));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_TRANSFORM_FEEDBACK_BUFFER_START: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
if (isIndexed) {
std::shared_ptr<TransformFeedback> l__res_0 = subGetBoundTransformFeedback(observer, call);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l__res_0).mBuffers, index).mStart));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_TRANSFORM_FEEDBACK_PAUSED: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
std::shared_ptr<TransformFeedback> l__res_0 = subGetBoundTransformFeedback(observer, call);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l__res_0).mPaused));
break;
}
case GLenum::GL_UNIFORM_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mUniformBuffers, index).mBinding));
} else {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundBuffers.mUniformBuffer));
}
break;
}
case GLenum::GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mUniformBufferOffsetAlignment));
break;
}
case GLenum::GL_UNIFORM_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mUniformBuffers, index).mSize));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_UNIFORM_BUFFER_START: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
if (isIndexed) {
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mUniformBuffers, index).mStart));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_UNPACK_ALIGNMENT: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mPixelStorage.mUnpackAlignment));
break;
}
case GLenum::GL_UNPACK_IMAGE_HEIGHT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mPixelStorage.mUnpackImageHeight));
break;
}
case GLenum::GL_UNPACK_ROW_LENGTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mPixelStorage.mUnpackRowLength));
break;
}
case GLenum::GL_UNPACK_SKIP_IMAGES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mPixelStorage.mUnpackSkipImages));
break;
}
case GLenum::GL_UNPACK_SKIP_PIXELS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mPixelStorage.mUnpackSkipPixels));
break;
}
case GLenum::GL_UNPACK_SKIP_ROWS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mPixelStorage.mUnpackSkipRows));
break;
}
case GLenum::GL_VERTEX_ARRAY_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mBoundVertexArray));
break;
}
case GLenum::GL_VERTEX_BINDING_DIVISOR: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
VertexBufferBindingIndex l_i = (VertexBufferBindingIndex)(index);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(findOrZero(checkNotNull(l_ctx).mInstances.mVertexArrays, checkNotNull(l_ctx).mBoundVertexArray)).mVertexBufferBindings, l_i)).mDivisor));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_VERTEX_BINDING_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
VertexBufferBindingIndex l_i = (VertexBufferBindingIndex)(index);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(findOrZero(checkNotNull(l_ctx).mInstances.mVertexArrays, checkNotNull(l_ctx).mBoundVertexArray)).mVertexBufferBindings, l_i)).mOffset));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_VERTEX_BINDING_STRIDE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
VertexBufferBindingIndex l_i = (VertexBufferBindingIndex)(index);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(findOrZero(checkNotNull(findOrZero(checkNotNull(l_ctx).mInstances.mVertexArrays, checkNotNull(l_ctx).mBoundVertexArray)).mVertexBufferBindings, l_i)).mStride));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_VIEWPORT: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint64> l_s = slice(v, 0ULL, 4ULL);
observer->write<GLint64>(l_s, 0ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mViewport.mX));
observer->write<GLint64>(l_s, 1ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mViewport.mY));
observer->write<GLint64>(l_s, 2ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mViewport.mWidth));
observer->write<GLint64>(l_s, 3ULL, (GLint64)(checkNotNull(l_ctx).mRasterization.mViewport.mHeight));
break;
}
case GLenum::GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
observer->write<GLint64>(slice(v, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_ctx).mConstants.mMaxTextureMaxAnisotropyExt));
break;
}
case GLenum::GL_GPU_DISJOINT_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_disjoint_timer_query);
observer->write(slice(v, 0ULL, 1ULL));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, name);
}
}
return;
}
void GlesSpy::subGetSamplerParameterv_GLint(CallObserver* observer, const std::function<void()>& call, SamplerId sampler, uint32_t pname, GLint* params) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
std::shared_ptr<Sampler> l_s = findOrZero(checkNotNull(l_ctx).mInstances.mSamplers, sampler);
switch (pname) {
case GLenum::GL_TEXTURE_COMPARE_FUNC: {
observer->write<GLint>(slice(params, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_s).mCompareFunc));
break;
}
case GLenum::GL_TEXTURE_COMPARE_MODE: {
observer->write<GLint>(slice(params, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_s).mCompareMode));
break;
}
case GLenum::GL_TEXTURE_MIN_FILTER: {
observer->write<GLint>(slice(params, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_s).mMinFilter));
break;
}
case GLenum::GL_TEXTURE_MAG_FILTER: {
observer->write<GLint>(slice(params, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_s).mMagFilter));
break;
}
case GLenum::GL_TEXTURE_MIN_LOD: {
observer->write<GLint>(slice(params, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_s).mMinLod));
break;
}
case GLenum::GL_TEXTURE_MAX_LOD: {
observer->write<GLint>(slice(params, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_s).mMaxLod));
break;
}
case GLenum::GL_TEXTURE_WRAP_R: {
observer->write<GLint>(slice(params, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_s).mWrapR));
break;
}
case GLenum::GL_TEXTURE_WRAP_S: {
observer->write<GLint>(slice(params, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_s).mWrapS));
break;
}
case GLenum::GL_TEXTURE_WRAP_T: {
observer->write<GLint>(slice(params, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_s).mWrapT));
break;
}
case GLenum::GL_TEXTURE_BORDER_COLOR: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
Slice<GLint> l_p = slice(params, 0ULL, 4ULL);
observer->write<GLint>(l_p, 0ULL, (GLint)(checkNotNull(l_s).mBorderColor[0ULL]));
observer->write<GLint>(l_p, 1ULL, (GLint)(checkNotNull(l_s).mBorderColor[1ULL]));
observer->write<GLint>(l_p, 2ULL, (GLint)(checkNotNull(l_s).mBorderColor[2ULL]));
observer->write<GLint>(l_p, 3ULL, (GLint)(checkNotNull(l_s).mBorderColor[3ULL]));
break;
}
case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
observer->write<GLint>(slice(params, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_s).mMaxAnisotropy));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
}
return;
}
void GlesSpy::subGetTexParameter_GLuint(CallObserver* observer, const std::function<void()>& call, uint32_t target, uint32_t parameter, GLuint* params) {
switch (target) {
case GLenum::GL_TEXTURE_2D: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP: {
break;
}
case GLenum::GL_TEXTURE_2D_ARRAY: // fall-through...
case GLenum::GL_TEXTURE_3D: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
break;
}
case GLenum::GL_TEXTURE_2D_MULTISAMPLE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
break;
}
case GLenum::GL_TEXTURE_2D_MULTISAMPLE_ARRAY: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP_ARRAY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, target);
}
}
std::shared_ptr<Texture> l_t = subGetBoundTextureOrErrorInvalidEnum(observer, call, target);
switch (parameter) {
case GLenum::GL_TEXTURE_MAG_FILTER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mMagFilter));
break;
}
case GLenum::GL_TEXTURE_MIN_FILTER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mMinFilter));
break;
}
case GLenum::GL_TEXTURE_WRAP_S: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mWrapS));
break;
}
case GLenum::GL_TEXTURE_WRAP_T: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mWrapT));
break;
}
case GLenum::GL_TEXTURE_BASE_LEVEL: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mBaseLevel));
break;
}
case GLenum::GL_TEXTURE_COMPARE_FUNC: {
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mCompareFunc));
break;
}
case GLenum::GL_TEXTURE_COMPARE_MODE: {
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mCompareMode));
break;
}
case GLenum::GL_TEXTURE_IMMUTABLE_FORMAT: {
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mImmutableFormat));
break;
}
case GLenum::GL_TEXTURE_MAX_LEVEL: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mMaxLevel));
break;
}
case GLenum::GL_TEXTURE_MAX_LOD: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mMaxLod));
break;
}
case GLenum::GL_TEXTURE_MIN_LOD: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mMinLod));
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_A: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mSwizzleA));
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_B: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mSwizzleB));
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_G: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mSwizzleG));
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_R: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mSwizzleR));
break;
}
case GLenum::GL_TEXTURE_WRAP_R: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mWrapR));
break;
}
case GLenum::GL_DEPTH_STENCIL_TEXTURE_MODE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mDepthStencilTextureMode));
break;
}
case GLenum::GL_IMAGE_FORMAT_COMPATIBILITY_TYPE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, slice(params, 0ULL, 1ULL)[0ULL]);
break;
}
case GLenum::GL_TEXTURE_IMMUTABLE_LEVELS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, checkNotNull(l_t).mImmutableLevels);
break;
}
case GLenum::GL_TEXTURE_BORDER_COLOR: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
Slice<GLuint> l_p = slice(params, 0ULL, 4ULL);
observer->write<GLuint>(l_p, 0ULL, (GLuint)(checkNotNull(l_t).mBorderColor[0ULL]));
observer->write<GLuint>(l_p, 1ULL, (GLuint)(checkNotNull(l_t).mBorderColor[1ULL]));
observer->write<GLuint>(l_p, 2ULL, (GLuint)(checkNotNull(l_t).mBorderColor[2ULL]));
observer->write<GLuint>(l_p, 3ULL, (GLuint)(checkNotNull(l_t).mBorderColor[3ULL]));
break;
}
case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
observer->write<GLuint>(slice(params, 0ULL, 1ULL), 0ULL, (GLuint)(checkNotNull(l_t).mMaxAnisotropy));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, parameter);
}
}
return;
}
void GlesSpy::subSamplerParameterv_GLuint__CP(CallObserver* observer, const std::function<void()>& call, SamplerId sampler, uint32_t pname, GLuint* params) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
std::shared_ptr<Sampler> l_s = findOrZero(checkNotNull(l_ctx).mInstances.mSamplers, sampler);
switch (pname) {
case GLenum::GL_TEXTURE_COMPARE_FUNC: {
checkNotNull(l_s).mCompareFunc = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_COMPARE_MODE: {
checkNotNull(l_s).mCompareMode = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_MIN_FILTER: {
checkNotNull(l_s).mMinFilter = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_MAG_FILTER: {
checkNotNull(l_s).mMagFilter = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_MIN_LOD: {
checkNotNull(l_s).mMinLod = (GLfloat)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_MAX_LOD: {
checkNotNull(l_s).mMaxLod = (GLfloat)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_WRAP_R: {
checkNotNull(l_s).mWrapR = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_WRAP_S: {
checkNotNull(l_s).mWrapS = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_WRAP_T: {
checkNotNull(l_s).mWrapT = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_BORDER_COLOR: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
checkNotNull(l_s).mMaxAnisotropy = (GLfloat)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
}
return;
}
void GlesSpy::subTexParameterv_GLint__CP(CallObserver* observer, const std::function<void()>& call, uint32_t target, uint32_t pname, GLint* params) {
if ((target) == (GLenum::GL_TEXTURE_BUFFER)) {
subGlErrorInvalidEnum(observer, call, target);
}
std::shared_ptr<Texture> l_t = subGetBoundTextureOrErrorInvalidEnum(observer, call, target);
switch (pname) {
case GLenum::GL_TEXTURE_MAG_FILTER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
uint32_t l_magFilter = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
switch (l_magFilter) {
case GLenum::GL_NEAREST: // fall-through...
case GLenum::GL_LINEAR: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, l_magFilter);
}
}
checkNotNull(l_t).mMagFilter = l_magFilter;
break;
}
case GLenum::GL_TEXTURE_MIN_FILTER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
uint32_t l_minFilter = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
switch (l_minFilter) {
case GLenum::GL_NEAREST: // fall-through...
case GLenum::GL_LINEAR: // fall-through...
case GLenum::GL_NEAREST_MIPMAP_NEAREST: // fall-through...
case GLenum::GL_LINEAR_MIPMAP_NEAREST: // fall-through...
case GLenum::GL_NEAREST_MIPMAP_LINEAR: // fall-through...
case GLenum::GL_LINEAR_MIPMAP_LINEAR: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, l_minFilter);
}
}
checkNotNull(l_t).mMinFilter = l_minFilter;
break;
}
case GLenum::GL_TEXTURE_WRAP_S: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
uint32_t l__res_0 = subCheckWrapParam(observer, call, (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL)));
checkNotNull(l_t).mWrapS = l__res_0;
break;
}
case GLenum::GL_TEXTURE_WRAP_T: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
uint32_t l__res_0 = subCheckWrapParam(observer, call, (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL)));
checkNotNull(l_t).mWrapT = l__res_0;
break;
}
case GLenum::GL_TEXTURE_BASE_LEVEL: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
GLint l_baseLevel = observer->read(slice(params, 0ULL, 1ULL), 0ULL);
if ((l_baseLevel) < ((GLint)(0L))) {
subGlErrorInvalidValue(observer, call);
}
checkNotNull(l_t).mBaseLevel = l_baseLevel;
break;
}
case GLenum::GL_TEXTURE_COMPARE_FUNC: {
checkNotNull(l_t).mCompareFunc = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_COMPARE_MODE: {
checkNotNull(l_t).mCompareMode = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_MAX_LEVEL: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
GLint l_maxLevel = observer->read(slice(params, 0ULL, 1ULL), 0ULL);
if ((l_maxLevel) < ((GLint)(0L))) {
subGlErrorInvalidValue(observer, call);
}
checkNotNull(l_t).mMaxLevel = l_maxLevel;
break;
}
case GLenum::GL_TEXTURE_MAX_LOD: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
checkNotNull(l_t).mMaxLod = (GLfloat)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_MIN_LOD: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
checkNotNull(l_t).mMinLod = (GLfloat)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_A: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
uint32_t l__res_0 = subCheckSwizzleParam(observer, call, (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL)));
checkNotNull(l_t).mSwizzleA = l__res_0;
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_B: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
uint32_t l__res_0 = subCheckSwizzleParam(observer, call, (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL)));
checkNotNull(l_t).mSwizzleB = l__res_0;
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_G: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
uint32_t l__res_0 = subCheckSwizzleParam(observer, call, (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL)));
checkNotNull(l_t).mSwizzleG = l__res_0;
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_R: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
uint32_t l__res_0 = subCheckSwizzleParam(observer, call, (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL)));
checkNotNull(l_t).mSwizzleR = l__res_0;
break;
}
case GLenum::GL_TEXTURE_WRAP_R: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
checkNotNull(l_t).mWrapR = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_DEPTH_STENCIL_TEXTURE_MODE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
checkNotNull(l_t).mDepthStencilTextureMode = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_BORDER_COLOR: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
checkNotNull(l_t).mMaxAnisotropy = (GLfloat)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_SRGB_DECODE_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_sRGB_decode);
break;
}
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
}
return;
}
GLsizei GlesSpy::subMax_GLsizei(CallObserver* observer, const std::function<void()>& call, GLsizei a, GLsizei b) {
return /* switch((a) > (b)) */
/* case true: */((((a) > (b)) == (true))) ? (a) :
/* case false: */((((a) > (b)) == (false))) ? (b) :
/* default: */ 0;
}
void GlesSpy::subGetBufferParameter_GLint64(CallObserver* observer, const std::function<void()>& call, uint32_t target, uint32_t parameter, GLint64* value) {
std::shared_ptr<Buffer> l_b = subGetBoundBufferOrError(observer, call, target);
switch (parameter) {
case GLenum::GL_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(value, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_b).mSize));
break;
}
case GLenum::GL_BUFFER_USAGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint64>(slice(value, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_b).mUsage));
break;
}
case GLenum::GL_BUFFER_ACCESS_FLAGS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(value, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_b).mAccessFlags));
break;
}
case GLenum::GL_BUFFER_MAPPED: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(value, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_b).mMapped));
break;
}
case GLenum::GL_BUFFER_MAP_LENGTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(value, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_b).mMapLength));
break;
}
case GLenum::GL_BUFFER_MAP_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint64>(slice(value, 0ULL, 1ULL), 0ULL, (GLint64)(checkNotNull(l_b).mMapOffset));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, parameter);
}
}
return;
}
void GlesSpy::subGetBufferParameter_GLint(CallObserver* observer, const std::function<void()>& call, uint32_t target, uint32_t parameter, GLint* value) {
std::shared_ptr<Buffer> l_b = subGetBoundBufferOrError(observer, call, target);
switch (parameter) {
case GLenum::GL_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(value, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_b).mSize));
break;
}
case GLenum::GL_BUFFER_USAGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(value, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_b).mUsage));
break;
}
case GLenum::GL_BUFFER_ACCESS_FLAGS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(value, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_b).mAccessFlags));
break;
}
case GLenum::GL_BUFFER_MAPPED: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(value, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_b).mMapped));
break;
}
case GLenum::GL_BUFFER_MAP_LENGTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(value, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_b).mMapLength));
break;
}
case GLenum::GL_BUFFER_MAP_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(value, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_b).mMapOffset));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, parameter);
}
}
return;
}
void GlesSpy::subGetnUniformfv_GLfloat__P(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLsizei bufSize, GLfloat* values) {
(void)program;
(void)location;
observer->write(slice((char*)(values), (uint64_t)((GLsizei)(0L)), (uint64_t)(bufSize)));
return;
}
void GlesSpy::subGetUniformv_GLfloat__P(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLfloat* values) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subCheckProgram(observer, call, l_ctx, program);
(void)program;
(void)location;
observer->write(slice(values, 0ULL, 16ULL));
return;
}
void GlesSpy::subGetUniformv_GLuint__P(CallObserver* observer, const std::function<void()>& call, ProgramId program, UniformLocation location, GLuint* values) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subCheckProgram(observer, call, l_ctx, program);
(void)program;
(void)location;
observer->write(slice(values, 0ULL, 16ULL));
return;
}
void GlesSpy::subUniformv_GLint__S(CallObserver* observer, const std::function<void()>& call, UniformLocation location, Slice<GLint> values, uint32_t type) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subSetProgramUniform(observer, call, checkNotNull(l_ctx).mBoundProgram, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subUniformv_Vec2f__S(CallObserver* observer, const std::function<void()>& call, UniformLocation location, Slice<Vec2f> values, uint32_t type) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subSetProgramUniform(observer, call, checkNotNull(l_ctx).mBoundProgram, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subUniformv_Vec3i__S(CallObserver* observer, const std::function<void()>& call, UniformLocation location, Slice<Vec3i> values, uint32_t type) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subSetProgramUniform(observer, call, checkNotNull(l_ctx).mBoundProgram, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subUniformv_Vec3u__S(CallObserver* observer, const std::function<void()>& call, UniformLocation location, Slice<Vec3u> values, uint32_t type) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subSetProgramUniform(observer, call, checkNotNull(l_ctx).mBoundProgram, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subUniformv_Vec4f__S(CallObserver* observer, const std::function<void()>& call, UniformLocation location, Slice<Vec4f> values, uint32_t type) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subSetProgramUniform(observer, call, checkNotNull(l_ctx).mBoundProgram, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subUniformMatrixv_Mat3f__S(CallObserver* observer, const std::function<void()>& call, UniformLocation location, GLboolean transpose, Slice<Mat3f> values, uint32_t type) {
(void)transpose;
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
subSetProgramUniform(observer, call, checkNotNull(l_ctx).mBoundProgram, location, values.as<uint8_t>(), type);
return;
}
void GlesSpy::subGetStateVariable_GLint(CallObserver* observer, const std::function<void()>& call, uint32_t name, bool isIndexed, GLuint index, GLint* v) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
switch (name) {
case GLenum::GL_ACTIVE_TEXTURE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mActiveTextureUnit));
break;
}
case GLenum::GL_ALIASED_LINE_WIDTH_RANGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint> l_s = slice(v, 0ULL, 2ULL);
observer->write<GLint>(l_s, 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mAliasedLineWidthRange[0ULL]));
observer->write<GLint>(l_s, 1ULL, (GLint)(checkNotNull(l_ctx).mConstants.mAliasedLineWidthRange[1ULL]));
break;
}
case GLenum::GL_ALIASED_POINT_SIZE_RANGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint> l_s = slice(v, 0ULL, 2ULL);
observer->write<GLint>(l_s, 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mAliasedPointSizeRange[0ULL]));
observer->write<GLint>(l_s, 1ULL, (GLint)(checkNotNull(l_ctx).mConstants.mAliasedPointSizeRange[1ULL]));
break;
}
case GLenum::GL_ALPHA_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_ARRAY_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundBuffers.mArrayBuffer));
break;
}
case GLenum::GL_ATOMIC_COUNTER_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mAtomicCounterBuffers, index).mBinding));
} else {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundBuffers.mAtomicCounterBuffer));
}
break;
}
case GLenum::GL_ATOMIC_COUNTER_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mAtomicCounterBuffers, index).mSize));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_ATOMIC_COUNTER_BUFFER_START: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mAtomicCounterBuffers, index).mStart));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_BLEND: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mEnabled));
break;
}
case GLenum::GL_BLEND_COLOR: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint> l_s = slice(v, 0ULL, 4ULL);
observer->write<GLint>(l_s, 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mBlendColor.mRed));
observer->write<GLint>(l_s, 1ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mBlendColor.mGreen));
observer->write<GLint>(l_s, 2ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mBlendColor.mBlue));
observer->write<GLint>(l_s, 3ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mBlendColor.mAlpha));
break;
}
case GLenum::GL_BLEND_DST_ALPHA: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mDstAlpha));
break;
}
case GLenum::GL_BLEND_DST_RGB: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mDstRgb));
break;
}
case GLenum::GL_BLEND_EQUATION_ALPHA: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mEquationAlpha));
break;
}
case GLenum::GL_BLEND_EQUATION_RGB: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mEquationRgb));
break;
}
case GLenum::GL_BLEND_SRC_ALPHA: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mSrcAlpha));
break;
}
case GLenum::GL_BLEND_SRC_RGB: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mFragmentOperations.mBlend, l_i).mSrcRgb));
break;
}
case GLenum::GL_BLUE_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_COLOR_CLEAR_VALUE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint> l_s = slice(v, 0ULL, 4ULL);
observer->write<GLint>(l_s, 0ULL, (GLint)(checkNotNull(l_ctx).mFramebuffer.mColorClearValue[0ULL]));
observer->write<GLint>(l_s, 1ULL, (GLint)(checkNotNull(l_ctx).mFramebuffer.mColorClearValue[1ULL]));
observer->write<GLint>(l_s, 2ULL, (GLint)(checkNotNull(l_ctx).mFramebuffer.mColorClearValue[2ULL]));
observer->write<GLint>(l_s, 3ULL, (GLint)(checkNotNull(l_ctx).mFramebuffer.mColorClearValue[3ULL]));
break;
}
case GLenum::GL_COLOR_WRITEMASK: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint> l_s = slice(v, 0ULL, 4ULL);
DrawBufferIndex l_i = (DrawBufferIndex)(index);
observer->write<GLint>(l_s, 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mFramebuffer.mColorWritemask, l_i)[0ULL]));
observer->write<GLint>(l_s, 1ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mFramebuffer.mColorWritemask, l_i)[1ULL]));
observer->write<GLint>(l_s, 2ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mFramebuffer.mColorWritemask, l_i)[2ULL]));
observer->write<GLint>(l_s, 3ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mFramebuffer.mColorWritemask, l_i)[3ULL]));
break;
}
case GLenum::GL_COMPRESSED_TEXTURE_FORMATS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint> l_s = slice(v, 0ULL, uint64_t((checkNotNull(l_ctx).mConstants.mCompressedTextureFormats.size())));
{
int32_t l__ = 0;
for (U32ToGLenum::iterator it = checkNotNull(l_ctx).mConstants.mCompressedTextureFormats.begin(); it != checkNotNull(l_ctx).mConstants.mCompressedTextureFormats.end(); ++it, ++l__) {
uint32_t l_i = it->first;
uint32_t l_f = it->second;
observer->write<GLint>(l_s, (uint64_t)(l_i), (GLint)(l_f));
}
}
break;
}
case GLenum::GL_CONTEXT_FLAGS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mContextFlags);
break;
}
case GLenum::GL_CONTEXT_ROBUST_ACCESS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_COPY_READ_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundBuffers.mCopyReadBuffer));
break;
}
case GLenum::GL_COPY_WRITE_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundBuffers.mCopyWriteBuffer));
break;
}
case GLenum::GL_CULL_FACE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mCullFace));
break;
}
case GLenum::GL_CULL_FACE_MODE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mCullFaceMode));
break;
}
case GLenum::GL_CURRENT_PROGRAM: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundProgram));
break;
}
case GLenum::GL_DEBUG_GROUP_STACK_DEPTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_DEBUG_LOGGED_MESSAGES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_DEPTH_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_DEPTH_CLEAR_VALUE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFramebuffer.mDepthClearValue));
break;
}
case GLenum::GL_DEPTH_FUNC: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mDepth.mFunc));
break;
}
case GLenum::GL_DEPTH_RANGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint> l_s = slice(v, 0ULL, 2ULL);
observer->write<GLint>(l_s, 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mDepthRange[0ULL]));
observer->write<GLint>(l_s, 1ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mDepthRange[1ULL]));
break;
}
case GLenum::GL_DEPTH_TEST: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mDepth.mTest));
break;
}
case GLenum::GL_DEPTH_WRITEMASK: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFramebuffer.mDepthWritemask));
break;
}
case GLenum::GL_DISPATCH_INDIRECT_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundBuffers.mDispatchIndirectBuffer));
break;
}
case GLenum::GL_DITHER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mDither));
break;
}
case GLenum::GL_DRAW_BUFFER: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_DRAW_BUFFER0: // fall-through...
case GLenum::GL_DRAW_BUFFER1: // fall-through...
case GLenum::GL_DRAW_BUFFER2: // fall-through...
case GLenum::GL_DRAW_BUFFER3: // fall-through...
case GLenum::GL_DRAW_BUFFER4: // fall-through...
case GLenum::GL_DRAW_BUFFER5: // fall-through...
case GLenum::GL_DRAW_BUFFER6: // fall-through...
case GLenum::GL_DRAW_BUFFER7: // fall-through...
case GLenum::GL_DRAW_BUFFER8: // fall-through...
case GLenum::GL_DRAW_BUFFER9: // fall-through...
case GLenum::GL_DRAW_BUFFER10: // fall-through...
case GLenum::GL_DRAW_BUFFER11: // fall-through...
case GLenum::GL_DRAW_BUFFER12: // fall-through...
case GLenum::GL_DRAW_BUFFER13: // fall-through...
case GLenum::GL_DRAW_BUFFER14: // fall-through...
case GLenum::GL_DRAW_BUFFER15: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
std::shared_ptr<Framebuffer> l_framebuffer = subGetBoundFramebufferOrErrorInvalidEnum(observer, call, GLenum::GL_DRAW_FRAMEBUFFER);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_framebuffer).mDrawBuffer, (GLint)((name) - (GLenum::GL_DRAW_BUFFER0)))));
break;
}
case GLenum::GL_DRAW_FRAMEBUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mBoundFramebuffers, GLenum::GL_FRAMEBUFFER)));
break;
}
case GLenum::GL_ELEMENT_ARRAY_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(l_ctx).mInstances.mVertexArrays, checkNotNull(l_ctx).mBoundVertexArray)).mElementArrayBuffer));
break;
}
case GLenum::GL_FRAGMENT_INTERPOLATION_OFFSET_BITS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mFragmentInterpolationOffsetBits);
break;
}
case GLenum::GL_FRAGMENT_SHADER_DERIVATIVE_HINT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_FRONT_FACE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mFrontFace));
break;
}
case GLenum::GL_GENERATE_MIPMAP_HINT: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mMiscellaneous.mGenerateMipmapHint));
break;
}
case GLenum::GL_GREEN_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_IMAGE_BINDING_NAME: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mImageUnits, index).mName));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_IMAGE_BINDING_LEVEL: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, findOrZero(checkNotNull(l_ctx).mImageUnits, index).mLevel);
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_IMAGE_BINDING_LAYERED: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mImageUnits, index).mLayered));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_IMAGE_BINDING_LAYER: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, findOrZero(checkNotNull(l_ctx).mImageUnits, index).mLayer);
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_IMAGE_BINDING_ACCESS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mImageUnits, index).mAccess));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_IMAGE_BINDING_FORMAT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mImageUnits, index).mFormat));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_IMPLEMENTATION_COLOR_READ_FORMAT: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_IMPLEMENTATION_COLOR_READ_TYPE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_LAYER_PROVOKING_VERTEX: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mLayerProvokingVertex));
break;
}
case GLenum::GL_LINE_WIDTH: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mLineWidth));
break;
}
case GLenum::GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mPrimitiveRestartForPatchesSupported));
break;
}
case GLenum::GL_MAJOR_VERSION: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMajorVersion);
break;
}
case GLenum::GL_MAX_3D_TEXTURE_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMax3dTextureSize);
break;
}
case GLenum::GL_MAX_ARRAY_TEXTURE_LAYERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxArrayTextureLayers);
break;
}
case GLenum::GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxAtomicCounterBufferBindings);
break;
}
case GLenum::GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxAtomicCounterBufferSize);
break;
}
case GLenum::GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedAtomicCounterBuffers);
break;
}
case GLenum::GL_MAX_COLOR_ATTACHMENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxColorAttachments);
break;
}
case GLenum::GL_MAX_COLOR_TEXTURE_SAMPLES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxColorTextureSamples);
break;
}
case GLenum::GL_MAX_DEPTH_TEXTURE_SAMPLES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxDepthTextureSamples);
break;
}
case GLenum::GL_MAX_COMBINED_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedAtomicCounters);
break;
}
case GLenum::GL_MAX_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxImageUnits);
break;
}
case GLenum::GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedComputeUniformComponents);
break;
}
case GLenum::GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMaxCombinedFragmentUniformComponents));
break;
}
case GLenum::GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedGeometryUniformComponents);
break;
}
case GLenum::GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedShaderStorageBlocks);
break;
}
case GLenum::GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedTessControlUniformComponents);
break;
}
case GLenum::GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedTessEvaluationUniformComponents);
break;
}
case GLenum::GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedTextureImageUnits);
break;
}
case GLenum::GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedShaderOutputResources);
break;
}
case GLenum::GL_MAX_COMBINED_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedUniformBlocks);
break;
}
case GLenum::GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMaxCombinedVertexUniformComponents));
break;
}
case GLenum::GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxComputeAtomicCounterBuffers);
break;
}
case GLenum::GL_MAX_COMPUTE_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxComputeAtomicCounters);
break;
}
case GLenum::GL_MAX_COMPUTE_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxComputeImageUniforms);
break;
}
case GLenum::GL_MAX_COMBINED_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCombinedImageUniforms);
break;
}
case GLenum::GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxComputeShaderStorageBlocks);
break;
}
case GLenum::GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxComputeTextureImageUnits);
break;
}
case GLenum::GL_MAX_COMPUTE_SHARED_MEMORY_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxComputeSharedMemorySize);
break;
}
case GLenum::GL_MAX_COMPUTE_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxComputeUniformBlocks);
break;
}
case GLenum::GL_MAX_COMPUTE_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxComputeUniformComponents);
break;
}
case GLenum::GL_MAX_COMPUTE_WORK_GROUP_COUNT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxComputeWorkGroupCount[index]);
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxComputeWorkGroupInvocations);
break;
}
case GLenum::GL_MAX_COMPUTE_WORK_GROUP_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxComputeWorkGroupSize[index]);
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_MAX_CUBE_MAP_TEXTURE_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxCubeMapTextureSize);
break;
}
case GLenum::GL_MAX_DEBUG_GROUP_STACK_DEPTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxDebugGroupStackDepth);
break;
}
case GLenum::GL_MAX_DEBUG_LOGGED_MESSAGES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxDebugLoggedMessages);
break;
}
case GLenum::GL_MAX_DEBUG_MESSAGE_LENGTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxDebugMessageLength);
break;
}
case GLenum::GL_MAX_DRAW_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxDrawBuffers);
break;
}
case GLenum::GL_MAX_ELEMENT_INDEX: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMaxElementIndex));
break;
}
case GLenum::GL_MAX_ELEMENTS_INDICES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxElementsIndices);
break;
}
case GLenum::GL_MAX_ELEMENTS_VERTICES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxElementsVertices);
break;
}
case GLenum::GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxFragmentAtomicCounterBuffers);
break;
}
case GLenum::GL_MAX_FRAGMENT_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxFragmentAtomicCounters);
break;
}
case GLenum::GL_MAX_FRAGMENT_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxFragmentImageUniforms);
break;
}
case GLenum::GL_MAX_FRAGMENT_INPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxFragmentInputComponents);
break;
}
case GLenum::GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMaxFragmentInterpolationOffset));
break;
}
case GLenum::GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxFragmentShaderStorageBlocks);
break;
}
case GLenum::GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMinProgramTextureGatherOffset);
break;
}
case GLenum::GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxProgramTextureGatherOffset);
break;
}
case GLenum::GL_MAX_FRAGMENT_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxFragmentUniformBlocks);
break;
}
case GLenum::GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxFragmentUniformComponents);
break;
}
case GLenum::GL_MAX_FRAGMENT_UNIFORM_VECTORS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxFragmentUniformVectors);
break;
}
case GLenum::GL_MAX_FRAMEBUFFER_HEIGHT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxFramebufferHeight);
break;
}
case GLenum::GL_MAX_FRAMEBUFFER_LAYERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxFramebufferLayers);
break;
}
case GLenum::GL_MAX_FRAMEBUFFER_SAMPLES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxFramebufferSamples);
break;
}
case GLenum::GL_MAX_FRAMEBUFFER_WIDTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxFramebufferWidth);
break;
}
case GLenum::GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxGeometryAtomicCounterBuffers);
break;
}
case GLenum::GL_MAX_GEOMETRY_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxGeometryAtomicCounters);
break;
}
case GLenum::GL_MAX_GEOMETRY_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxGeometryImageUniforms);
break;
}
case GLenum::GL_MAX_GEOMETRY_INPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxGeometryInputComponents);
break;
}
case GLenum::GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxGeometryOutputComponents);
break;
}
case GLenum::GL_MAX_GEOMETRY_OUTPUT_VERTICES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxGeometryOutputVertices);
break;
}
case GLenum::GL_MAX_GEOMETRY_SHADER_INVOCATIONS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxGeometryShaderInvocations);
break;
}
case GLenum::GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxGeometryShaderStorageBlocks);
break;
}
case GLenum::GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxGeometryTextureImageUnits);
break;
}
case GLenum::GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxGeometryTotalOutputComponents);
break;
}
case GLenum::GL_MAX_GEOMETRY_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxGeometryUniformBlocks);
break;
}
case GLenum::GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxGeometryUniformComponents);
break;
}
case GLenum::GL_MAX_INTEGER_SAMPLES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxIntegerSamples);
break;
}
case GLenum::GL_MAX_LABEL_LENGTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxLabelLength);
break;
}
case GLenum::GL_MAX_PROGRAM_TEXEL_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxProgramTexelOffset);
break;
}
case GLenum::GL_MAX_RENDERBUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxRenderbufferSize);
break;
}
case GLenum::GL_MAX_SAMPLE_MASK_WORDS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxSampleMaskWords);
break;
}
case GLenum::GL_MAX_SAMPLES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_MAX_SERVER_WAIT_TIMEOUT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMaxServerWaitTimeout));
break;
}
case GLenum::GL_MAX_SHADER_STORAGE_BLOCK_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMaxShaderStorageBlockSize));
break;
}
case GLenum::GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxShaderStorageBufferBindings);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessControlAtomicCounterBuffers);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessControlAtomicCounters);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessControlImageUniforms);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessControlInputComponents);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessControlOutputComponents);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessControlShaderStorageBlocks);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessControlTextureImageUnits);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessControlTotalOutputComponents);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessControlUniformBlocks);
break;
}
case GLenum::GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessControlUniformComponents);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessEvaluationAtomicCounterBuffers);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessEvaluationAtomicCounters);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessEvaluationImageUniforms);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessEvaluationInputComponents);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessEvaluationOutputComponents);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessEvaluationShaderStorageBlocks);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessEvaluationTextureImageUnits);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessEvaluationUniformBlocks);
break;
}
case GLenum::GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessEvaluationUniformComponents);
break;
}
case GLenum::GL_MAX_TESS_GEN_LEVEL: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessGenLevel);
break;
}
case GLenum::GL_MAX_PATCH_VERTICES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxPatchVertices);
break;
}
case GLenum::GL_MAX_TESS_PATCH_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTessPatchComponents);
break;
}
case GLenum::GL_MAX_TEXTURE_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTextureBufferSize);
break;
}
case GLenum::GL_MAX_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTextureImageUnits);
break;
}
case GLenum::GL_MAX_TEXTURE_LOD_BIAS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMaxTextureLodBias));
break;
}
case GLenum::GL_MAX_TEXTURE_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTextureSize);
break;
}
case GLenum::GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTransformFeedbackInterleavedComponents);
break;
}
case GLenum::GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTransformFeedbackSeparateAttribs);
break;
}
case GLenum::GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxTransformFeedbackSeparateComponents);
break;
}
case GLenum::GL_MAX_UNIFORM_BLOCK_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMaxUniformBlockSize));
break;
}
case GLenum::GL_MAX_UNIFORM_BUFFER_BINDINGS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxUniformBufferBindings);
break;
}
case GLenum::GL_MAX_UNIFORM_LOCATIONS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxUniformLocations);
break;
}
case GLenum::GL_MAX_VARYING_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVaryingComponents);
break;
}
case GLenum::GL_MAX_VARYING_VECTORS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVaryingVectors);
break;
}
case GLenum::GL_MAX_VERTEX_ATOMIC_COUNTERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexAtomicCounters);
break;
}
case GLenum::GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexAtomicCounterBuffers);
break;
}
case GLenum::GL_MAX_VERTEX_ATTRIB_BINDINGS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexAttribBindings);
break;
}
case GLenum::GL_MAX_VERTEX_ATTRIB_STRIDE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexAttribStride);
break;
}
case GLenum::GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexAttribRelativeOffset);
break;
}
case GLenum::GL_MAX_VERTEX_ATTRIBS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexAttribs);
break;
}
case GLenum::GL_MAX_VERTEX_IMAGE_UNIFORMS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexImageUniforms);
break;
}
case GLenum::GL_MAX_VERTEX_OUTPUT_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexOutputComponents);
break;
}
case GLenum::GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexShaderStorageBlocks);
break;
}
case GLenum::GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexTextureImageUnits);
break;
}
case GLenum::GL_MAX_VERTEX_UNIFORM_BLOCKS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexUniformBlocks);
break;
}
case GLenum::GL_MAX_VERTEX_UNIFORM_COMPONENTS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexUniformComponents);
break;
}
case GLenum::GL_MAX_VERTEX_UNIFORM_VECTORS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMaxVertexUniformVectors);
break;
}
case GLenum::GL_MAX_VIEWPORT_DIMS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint> l_s = slice(v, 0ULL, 2ULL);
observer->write<GLint>(l_s, 0ULL, checkNotNull(l_ctx).mConstants.mMaxViewportDims[0ULL]);
observer->write<GLint>(l_s, 1ULL, checkNotNull(l_ctx).mConstants.mMaxViewportDims[1ULL]);
break;
}
case GLenum::GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMinFragmentInterpolationOffset));
break;
}
case GLenum::GL_MIN_PROGRAM_TEXEL_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMinProgramTexelOffset);
break;
}
case GLenum::GL_MIN_SAMPLE_SHADING_VALUE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mMinSampleShadingValue));
break;
}
case GLenum::GL_MINOR_VERSION: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mMinorVersion);
break;
}
case GLenum::GL_MULTISAMPLE_LINE_WIDTH_RANGE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
Slice<GLint> l_s = slice(v, 0ULL, 2ULL);
observer->write<GLint>(l_s, 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMultisampleLineWidthRange[0ULL]));
observer->write<GLint>(l_s, 1ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMultisampleLineWidthRange[1ULL]));
break;
}
case GLenum::GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMultisampleLineWidthGranularity));
break;
}
case GLenum::GL_NUM_COMPRESSED_TEXTURE_FORMATS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(int32_t((checkNotNull(l_ctx).mConstants.mCompressedTextureFormats.size()))));
break;
}
case GLenum::GL_NUM_EXTENSIONS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(int32_t((checkNotNull(l_ctx).mConstants.mExtensions.size()))));
break;
}
case GLenum::GL_NUM_PROGRAM_BINARY_FORMATS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(int32_t((checkNotNull(l_ctx).mConstants.mProgramBinaryFormats.size()))));
break;
}
case GLenum::GL_NUM_SHADER_BINARY_FORMATS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(int32_t((checkNotNull(l_ctx).mConstants.mShaderBinaryFormats.size()))));
break;
}
case GLenum::GL_PACK_ALIGNMENT: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mPixelStorage.mPackAlignment);
break;
}
case GLenum::GL_PACK_IMAGE_HEIGHT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mPixelStorage.mPackImageHeight);
break;
}
case GLenum::GL_PACK_ROW_LENGTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mPixelStorage.mPackRowLength);
break;
}
case GLenum::GL_PACK_SKIP_IMAGES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mPixelStorage.mPackSkipImages);
break;
}
case GLenum::GL_PACK_SKIP_PIXELS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mPixelStorage.mPackSkipPixels);
break;
}
case GLenum::GL_PACK_SKIP_ROWS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mPixelStorage.mPackSkipRows);
break;
}
case GLenum::GL_PATCH_VERTICES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_PIXEL_PACK_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundBuffers.mPixelPackBuffer));
break;
}
case GLenum::GL_PIXEL_UNPACK_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundBuffers.mPixelUnpackBuffer));
break;
}
case GLenum::GL_POLYGON_OFFSET_FACTOR: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mPolygonOffsetFactor));
break;
}
case GLenum::GL_POLYGON_OFFSET_FILL: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mPolygonOffsetFill));
break;
}
case GLenum::GL_POLYGON_OFFSET_UNITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mPolygonOffsetUnits));
break;
}
case GLenum::GL_PRIMITIVE_BOUNDING_BOX: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 8ULL));
break;
}
case GLenum::GL_PRIMITIVE_RESTART_FIXED_INDEX: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mMiscellaneous.mPrimitiveRestartFixedIndex));
break;
}
case GLenum::GL_PROGRAM_BINARY_FORMATS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
Slice<GLint> l_s = slice(v, 0ULL, uint64_t((checkNotNull(l_ctx).mConstants.mProgramBinaryFormats.size())));
{
int32_t l__ = 0;
for (U32ToGLenum::iterator it = checkNotNull(l_ctx).mConstants.mProgramBinaryFormats.begin(); it != checkNotNull(l_ctx).mConstants.mProgramBinaryFormats.end(); ++it, ++l__) {
uint32_t l_i = it->first;
uint32_t l_f = it->second;
observer->write<GLint>(l_s, (uint64_t)(l_i), (GLint)(l_f));
}
}
break;
}
case GLenum::GL_PROGRAM_PIPELINE_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_RASTERIZER_DISCARD: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mRasterizerDiscard));
break;
}
case GLenum::GL_READ_BUFFER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_READ_FRAMEBUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mBoundFramebuffers, GLenum::GL_READ_FRAMEBUFFER)));
break;
}
case GLenum::GL_RED_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_RENDERBUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mBoundRenderbuffers, GLenum::GL_RENDERBUFFER)));
break;
}
case GLenum::GL_RESET_NOTIFICATION_STRATEGY: {
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_SAMPLE_ALPHA_TO_COVERAGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mSampleAlphaToCoverage));
break;
}
case GLenum::GL_SAMPLE_BUFFERS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_SAMPLE_COVERAGE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mSampleCoverage));
break;
}
case GLenum::GL_SAMPLE_COVERAGE_INVERT: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mSampleCoverageInvert));
break;
}
case GLenum::GL_SAMPLE_COVERAGE_VALUE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mSampleCoverageValue));
break;
}
case GLenum::GL_SAMPLE_SHADING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_SAMPLER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_SAMPLES: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_SCISSOR_BOX: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint> l_s = slice(v, 0ULL, 4ULL);
observer->write<GLint>(l_s, 0ULL, checkNotNull(l_ctx).mFragmentOperations.mScissor.mBox.mX);
observer->write<GLint>(l_s, 1ULL, checkNotNull(l_ctx).mFragmentOperations.mScissor.mBox.mY);
observer->write<GLint>(l_s, 2ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mScissor.mBox.mWidth));
observer->write<GLint>(l_s, 3ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mScissor.mBox.mHeight));
break;
}
case GLenum::GL_SCISSOR_TEST: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mScissor.mTest));
break;
}
case GLenum::GL_SHADER_BINARY_FORMATS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint> l_s = slice(v, 0ULL, uint64_t((checkNotNull(l_ctx).mConstants.mShaderBinaryFormats.size())));
{
int32_t l__ = 0;
for (U32ToGLenum::iterator it = checkNotNull(l_ctx).mConstants.mShaderBinaryFormats.begin(); it != checkNotNull(l_ctx).mConstants.mShaderBinaryFormats.end(); ++it, ++l__) {
uint32_t l_i = it->first;
uint32_t l_f = it->second;
observer->write<GLint>(l_s, (uint64_t)(l_i), (GLint)(l_f));
}
}
break;
}
case GLenum::GL_SHADER_COMPILER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mShaderCompiler));
break;
}
case GLenum::GL_SHADER_STORAGE_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mShaderStorageBuffers, index).mBinding));
} else {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundBuffers.mShaderStorageBuffer));
}
break;
}
case GLenum::GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mShaderStorageBufferOffsetAlignment);
break;
}
case GLenum::GL_SHADER_STORAGE_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mShaderStorageBuffers, index).mSize));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_SHADER_STORAGE_BUFFER_START: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mShaderStorageBuffers, index).mStart));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_STENCIL_BACK_FAIL: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackFail));
break;
}
case GLenum::GL_STENCIL_BACK_FUNC: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackFunc));
break;
}
case GLenum::GL_STENCIL_BACK_PASS_DEPTH_FAIL: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackPassDepthFail));
break;
}
case GLenum::GL_STENCIL_BACK_PASS_DEPTH_PASS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackPassDepthPass));
break;
}
case GLenum::GL_STENCIL_BACK_REF: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackRef);
break;
}
case GLenum::GL_STENCIL_BACK_VALUE_MASK: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mBackValueMask));
break;
}
case GLenum::GL_STENCIL_BACK_WRITEMASK: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFramebuffer.mStencilBackWritemask));
break;
}
case GLenum::GL_STENCIL_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_STENCIL_CLEAR_VALUE: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mFramebuffer.mStencilClearValue);
break;
}
case GLenum::GL_STENCIL_FAIL: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mFail));
break;
}
case GLenum::GL_STENCIL_FUNC: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mFunc));
break;
}
case GLenum::GL_STENCIL_PASS_DEPTH_FAIL: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mPassDepthFail));
break;
}
case GLenum::GL_STENCIL_PASS_DEPTH_PASS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mPassDepthPass));
break;
}
case GLenum::GL_STENCIL_REF: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mFragmentOperations.mStencil.mRef);
break;
}
case GLenum::GL_STENCIL_TEST: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mTest));
break;
}
case GLenum::GL_STENCIL_VALUE_MASK: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFragmentOperations.mStencil.mValueMask));
break;
}
case GLenum::GL_STENCIL_WRITEMASK: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mFramebuffer.mStencilWritemask));
break;
}
case GLenum::GL_SUBPIXEL_BITS: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mSubpixelBits);
break;
}
case GLenum::GL_TEXTURE_BINDING_2D: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBinding2d));
break;
}
case GLenum::GL_TEXTURE_BINDING_EXTERNAL_OES: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBindingExternalOes));
break;
}
case GLenum::GL_TEXTURE_BINDING_2D_ARRAY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBinding2dArray));
break;
}
case GLenum::GL_TEXTURE_BINDING_2D_MULTISAMPLE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBinding2dMultisample));
break;
}
case GLenum::GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBinding2dMultisampleArray));
break;
}
case GLenum::GL_TEXTURE_BINDING_3D: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBinding3d));
break;
}
case GLenum::GL_TEXTURE_BINDING_BUFFER: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBindingBuffer));
break;
}
case GLenum::GL_TEXTURE_BINDING_CUBE_MAP: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBindingCubeMap));
break;
}
case GLenum::GL_TEXTURE_BINDING_CUBE_MAP_ARRAY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(l_ctx).mTextureUnits, checkNotNull(l_ctx).mActiveTextureUnit)).mBindingCubeMapArray));
break;
}
case GLenum::GL_TEXTURE_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write(slice(v, 0ULL, 1ULL));
break;
}
case GLenum::GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mTextureBufferOffsetAlignment);
break;
}
case GLenum::GL_TRANSFORM_FEEDBACK_ACTIVE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
std::shared_ptr<TransformFeedback> l__res_0 = subGetBoundTransformFeedback(observer, call);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l__res_0).mActive));
break;
}
case GLenum::GL_TRANSFORM_FEEDBACK_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundTransformFeedback));
break;
}
case GLenum::GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
if (isIndexed) {
std::shared_ptr<TransformFeedback> l__res_0 = subGetBoundTransformFeedback(observer, call);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l__res_0).mBuffers, index).mBinding));
} else {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundBuffers.mTransformFeedbackBuffer));
}
break;
}
case GLenum::GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
if (isIndexed) {
std::shared_ptr<TransformFeedback> l__res_0 = subGetBoundTransformFeedback(observer, call);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l__res_0).mBuffers, index).mSize));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_TRANSFORM_FEEDBACK_BUFFER_START: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
if (isIndexed) {
std::shared_ptr<TransformFeedback> l__res_0 = subGetBoundTransformFeedback(observer, call);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l__res_0).mBuffers, index).mStart));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_TRANSFORM_FEEDBACK_PAUSED: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
std::shared_ptr<TransformFeedback> l__res_0 = subGetBoundTransformFeedback(observer, call);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l__res_0).mPaused));
break;
}
case GLenum::GL_UNIFORM_BUFFER_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mUniformBuffers, index).mBinding));
} else {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundBuffers.mUniformBuffer));
}
break;
}
case GLenum::GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mConstants.mUniformBufferOffsetAlignment);
break;
}
case GLenum::GL_UNIFORM_BUFFER_SIZE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mUniformBuffers, index).mSize));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_UNIFORM_BUFFER_START: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
if (isIndexed) {
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(findOrZero(checkNotNull(l_ctx).mBoundBuffers.mUniformBuffers, index).mStart));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_UNPACK_ALIGNMENT: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mPixelStorage.mUnpackAlignment);
break;
}
case GLenum::GL_UNPACK_IMAGE_HEIGHT: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mPixelStorage.mUnpackImageHeight);
break;
}
case GLenum::GL_UNPACK_ROW_LENGTH: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mPixelStorage.mUnpackRowLength);
break;
}
case GLenum::GL_UNPACK_SKIP_IMAGES: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mPixelStorage.mUnpackSkipImages);
break;
}
case GLenum::GL_UNPACK_SKIP_PIXELS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mPixelStorage.mUnpackSkipPixels);
break;
}
case GLenum::GL_UNPACK_SKIP_ROWS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, checkNotNull(l_ctx).mPixelStorage.mUnpackSkipRows);
break;
}
case GLenum::GL_VERTEX_ARRAY_BINDING: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mBoundVertexArray));
break;
}
case GLenum::GL_VERTEX_BINDING_DIVISOR: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
VertexBufferBindingIndex l_i = (VertexBufferBindingIndex)(index);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(findOrZero(checkNotNull(l_ctx).mInstances.mVertexArrays, checkNotNull(l_ctx).mBoundVertexArray)).mVertexBufferBindings, l_i)).mDivisor));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_VERTEX_BINDING_OFFSET: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
VertexBufferBindingIndex l_i = (VertexBufferBindingIndex)(index);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(findOrZero(checkNotNull(l_ctx).mInstances.mVertexArrays, checkNotNull(l_ctx).mBoundVertexArray)).mVertexBufferBindings, l_i)).mOffset));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_VERTEX_BINDING_STRIDE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
if (isIndexed) {
VertexBufferBindingIndex l_i = (VertexBufferBindingIndex)(index);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(findOrZero(checkNotNull(findOrZero(checkNotNull(l_ctx).mInstances.mVertexArrays, checkNotNull(l_ctx).mBoundVertexArray)).mVertexBufferBindings, l_i)).mStride));
} else {
subGlErrorInvalidEnum(observer, call, name);
}
break;
}
case GLenum::GL_VIEWPORT: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
Slice<GLint> l_s = slice(v, 0ULL, 4ULL);
observer->write<GLint>(l_s, 0ULL, checkNotNull(l_ctx).mRasterization.mViewport.mX);
observer->write<GLint>(l_s, 1ULL, checkNotNull(l_ctx).mRasterization.mViewport.mY);
observer->write<GLint>(l_s, 2ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mViewport.mWidth));
observer->write<GLint>(l_s, 3ULL, (GLint)(checkNotNull(l_ctx).mRasterization.mViewport.mHeight));
break;
}
case GLenum::GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
observer->write<GLint>(slice(v, 0ULL, 1ULL), 0ULL, (GLint)(checkNotNull(l_ctx).mConstants.mMaxTextureMaxAnisotropyExt));
break;
}
case GLenum::GL_GPU_DISJOINT_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_disjoint_timer_query);
observer->write(slice(v, 0ULL, 1ULL));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, name);
}
}
return;
}
void GlesSpy::subGetTexParameter_GLfloat(CallObserver* observer, const std::function<void()>& call, uint32_t target, uint32_t parameter, GLfloat* params) {
switch (target) {
case GLenum::GL_TEXTURE_2D: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP: {
break;
}
case GLenum::GL_TEXTURE_2D_ARRAY: // fall-through...
case GLenum::GL_TEXTURE_3D: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
break;
}
case GLenum::GL_TEXTURE_2D_MULTISAMPLE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
break;
}
case GLenum::GL_TEXTURE_2D_MULTISAMPLE_ARRAY: // fall-through...
case GLenum::GL_TEXTURE_CUBE_MAP_ARRAY: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
default: {
subGlErrorInvalidEnum(observer, call, target);
}
}
std::shared_ptr<Texture> l_t = subGetBoundTextureOrErrorInvalidEnum(observer, call, target);
switch (parameter) {
case GLenum::GL_TEXTURE_MAG_FILTER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mMagFilter));
break;
}
case GLenum::GL_TEXTURE_MIN_FILTER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mMinFilter));
break;
}
case GLenum::GL_TEXTURE_WRAP_S: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mWrapS));
break;
}
case GLenum::GL_TEXTURE_WRAP_T: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mWrapT));
break;
}
case GLenum::GL_TEXTURE_BASE_LEVEL: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mBaseLevel));
break;
}
case GLenum::GL_TEXTURE_COMPARE_FUNC: {
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mCompareFunc));
break;
}
case GLenum::GL_TEXTURE_COMPARE_MODE: {
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mCompareMode));
break;
}
case GLenum::GL_TEXTURE_IMMUTABLE_FORMAT: {
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mImmutableFormat));
break;
}
case GLenum::GL_TEXTURE_MAX_LEVEL: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mMaxLevel));
break;
}
case GLenum::GL_TEXTURE_MAX_LOD: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, checkNotNull(l_t).mMaxLod);
break;
}
case GLenum::GL_TEXTURE_MIN_LOD: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, checkNotNull(l_t).mMinLod);
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_A: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mSwizzleA));
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_B: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mSwizzleB));
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_G: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mSwizzleG));
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_R: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mSwizzleR));
break;
}
case GLenum::GL_TEXTURE_WRAP_R: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mWrapR));
break;
}
case GLenum::GL_DEPTH_STENCIL_TEXTURE_MODE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mDepthStencilTextureMode));
break;
}
case GLenum::GL_IMAGE_FORMAT_COMPATIBILITY_TYPE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, slice(params, 0ULL, 1ULL)[0ULL]);
break;
}
case GLenum::GL_TEXTURE_IMMUTABLE_LEVELS: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, (GLfloat)(checkNotNull(l_t).mImmutableLevels));
break;
}
case GLenum::GL_TEXTURE_BORDER_COLOR: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
Slice<GLfloat> l_p = slice(params, 0ULL, 4ULL);
observer->write<GLfloat>(l_p, 0ULL, checkNotNull(l_t).mBorderColor[0ULL]);
observer->write<GLfloat>(l_p, 1ULL, checkNotNull(l_t).mBorderColor[1ULL]);
observer->write<GLfloat>(l_p, 2ULL, checkNotNull(l_t).mBorderColor[2ULL]);
observer->write<GLfloat>(l_p, 3ULL, checkNotNull(l_t).mBorderColor[3ULL]);
break;
}
case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
observer->write<GLfloat>(slice(params, 0ULL, 1ULL), 0ULL, checkNotNull(l_t).mMaxAnisotropy);
break;
}
default: {
subGlErrorInvalidEnum(observer, call, parameter);
}
}
return;
}
void GlesSpy::subSamplerParameterv_GLfloat__CP(CallObserver* observer, const std::function<void()>& call, SamplerId sampler, uint32_t pname, GLfloat* params) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
std::shared_ptr<Sampler> l_s = findOrZero(checkNotNull(l_ctx).mInstances.mSamplers, sampler);
switch (pname) {
case GLenum::GL_TEXTURE_COMPARE_FUNC: {
checkNotNull(l_s).mCompareFunc = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_COMPARE_MODE: {
checkNotNull(l_s).mCompareMode = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_MIN_FILTER: {
checkNotNull(l_s).mMinFilter = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_MAG_FILTER: {
checkNotNull(l_s).mMagFilter = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_MIN_LOD: {
checkNotNull(l_s).mMinLod = observer->read(slice(params, 0ULL, 1ULL), 0ULL);
break;
}
case GLenum::GL_TEXTURE_MAX_LOD: {
checkNotNull(l_s).mMaxLod = observer->read(slice(params, 0ULL, 1ULL), 0ULL);
break;
}
case GLenum::GL_TEXTURE_WRAP_R: {
checkNotNull(l_s).mWrapR = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_WRAP_S: {
checkNotNull(l_s).mWrapS = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_WRAP_T: {
checkNotNull(l_s).mWrapT = (uint32_t)(observer->read(slice(params, 0ULL, 1ULL), 0ULL));
break;
}
case GLenum::GL_TEXTURE_BORDER_COLOR: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
checkNotNull(l_s).mMaxAnisotropy = observer->read(slice(params, 0ULL, 1ULL), 0ULL);
break;
}
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
}
return;
}
void GlesSpy::subSamplerParameterv_Vec1i(CallObserver* observer, const std::function<void()>& call, SamplerId sampler, uint32_t pname, Vec1i params) {
std::shared_ptr<Context> l_ctx = subGetContext(observer, call);
std::shared_ptr<Sampler> l_s = findOrZero(checkNotNull(l_ctx).mInstances.mSamplers, sampler);
switch (pname) {
case GLenum::GL_TEXTURE_COMPARE_FUNC: {
checkNotNull(l_s).mCompareFunc = (uint32_t)(params[0ULL]);
break;
}
case GLenum::GL_TEXTURE_COMPARE_MODE: {
checkNotNull(l_s).mCompareMode = (uint32_t)(params[0ULL]);
break;
}
case GLenum::GL_TEXTURE_MIN_FILTER: {
checkNotNull(l_s).mMinFilter = (uint32_t)(params[0ULL]);
break;
}
case GLenum::GL_TEXTURE_MAG_FILTER: {
checkNotNull(l_s).mMagFilter = (uint32_t)(params[0ULL]);
break;
}
case GLenum::GL_TEXTURE_MIN_LOD: {
checkNotNull(l_s).mMinLod = (GLfloat)(params[0ULL]);
break;
}
case GLenum::GL_TEXTURE_MAX_LOD: {
checkNotNull(l_s).mMaxLod = (GLfloat)(params[0ULL]);
break;
}
case GLenum::GL_TEXTURE_WRAP_R: {
checkNotNull(l_s).mWrapR = (uint32_t)(params[0ULL]);
break;
}
case GLenum::GL_TEXTURE_WRAP_S: {
checkNotNull(l_s).mWrapS = (uint32_t)(params[0ULL]);
break;
}
case GLenum::GL_TEXTURE_WRAP_T: {
checkNotNull(l_s).mWrapT = (uint32_t)(params[0ULL]);
break;
}
case GLenum::GL_TEXTURE_BORDER_COLOR: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
checkNotNull(l_s).mMaxAnisotropy = (GLfloat)(params[0ULL]);
break;
}
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
}
return;
}
void GlesSpy::subTexParameterv_Vec1f(CallObserver* observer, const std::function<void()>& call, uint32_t target, uint32_t pname, Vec1f params) {
if ((target) == (GLenum::GL_TEXTURE_BUFFER)) {
subGlErrorInvalidEnum(observer, call, target);
}
std::shared_ptr<Texture> l_t = subGetBoundTextureOrErrorInvalidEnum(observer, call, target);
switch (pname) {
case GLenum::GL_TEXTURE_MAG_FILTER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
uint32_t l_magFilter = (uint32_t)(params[0ULL]);
switch (l_magFilter) {
case GLenum::GL_NEAREST: // fall-through...
case GLenum::GL_LINEAR: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, l_magFilter);
}
}
checkNotNull(l_t).mMagFilter = l_magFilter;
break;
}
case GLenum::GL_TEXTURE_MIN_FILTER: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
uint32_t l_minFilter = (uint32_t)(params[0ULL]);
switch (l_minFilter) {
case GLenum::GL_NEAREST: // fall-through...
case GLenum::GL_LINEAR: // fall-through...
case GLenum::GL_NEAREST_MIPMAP_NEAREST: // fall-through...
case GLenum::GL_LINEAR_MIPMAP_NEAREST: // fall-through...
case GLenum::GL_NEAREST_MIPMAP_LINEAR: // fall-through...
case GLenum::GL_LINEAR_MIPMAP_LINEAR: {
break;
}
default: {
subGlErrorInvalidEnum(observer, call, l_minFilter);
}
}
checkNotNull(l_t).mMinFilter = l_minFilter;
break;
}
case GLenum::GL_TEXTURE_WRAP_S: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
uint32_t l__res_0 = subCheckWrapParam(observer, call, (uint32_t)(params[0ULL]));
checkNotNull(l_t).mWrapS = l__res_0;
break;
}
case GLenum::GL_TEXTURE_WRAP_T: {
subMinRequiredVersion(observer, call, (GLint)(2L), (GLint)(0L));
uint32_t l__res_0 = subCheckWrapParam(observer, call, (uint32_t)(params[0ULL]));
checkNotNull(l_t).mWrapT = l__res_0;
break;
}
case GLenum::GL_TEXTURE_BASE_LEVEL: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
GLint l_baseLevel = (GLint)(params[0ULL]);
if ((l_baseLevel) < ((GLint)(0L))) {
subGlErrorInvalidValue(observer, call);
}
checkNotNull(l_t).mBaseLevel = l_baseLevel;
break;
}
case GLenum::GL_TEXTURE_COMPARE_FUNC: {
checkNotNull(l_t).mCompareFunc = (uint32_t)(params[0ULL]);
break;
}
case GLenum::GL_TEXTURE_COMPARE_MODE: {
checkNotNull(l_t).mCompareMode = (uint32_t)(params[0ULL]);
break;
}
case GLenum::GL_TEXTURE_MAX_LEVEL: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
GLint l_maxLevel = (GLint)(params[0ULL]);
if ((l_maxLevel) < ((GLint)(0L))) {
subGlErrorInvalidValue(observer, call);
}
checkNotNull(l_t).mMaxLevel = l_maxLevel;
break;
}
case GLenum::GL_TEXTURE_MAX_LOD: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
checkNotNull(l_t).mMaxLod = params[0ULL];
break;
}
case GLenum::GL_TEXTURE_MIN_LOD: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
checkNotNull(l_t).mMinLod = params[0ULL];
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_A: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
uint32_t l__res_0 = subCheckSwizzleParam(observer, call, (uint32_t)(params[0ULL]));
checkNotNull(l_t).mSwizzleA = l__res_0;
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_B: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
uint32_t l__res_0 = subCheckSwizzleParam(observer, call, (uint32_t)(params[0ULL]));
checkNotNull(l_t).mSwizzleB = l__res_0;
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_G: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
uint32_t l__res_0 = subCheckSwizzleParam(observer, call, (uint32_t)(params[0ULL]));
checkNotNull(l_t).mSwizzleG = l__res_0;
break;
}
case GLenum::GL_TEXTURE_SWIZZLE_R: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
uint32_t l__res_0 = subCheckSwizzleParam(observer, call, (uint32_t)(params[0ULL]));
checkNotNull(l_t).mSwizzleR = l__res_0;
break;
}
case GLenum::GL_TEXTURE_WRAP_R: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(0L));
checkNotNull(l_t).mWrapR = (uint32_t)(params[0ULL]);
break;
}
case GLenum::GL_DEPTH_STENCIL_TEXTURE_MODE: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(1L));
checkNotNull(l_t).mDepthStencilTextureMode = (uint32_t)(params[0ULL]);
break;
}
case GLenum::GL_TEXTURE_BORDER_COLOR: {
subMinRequiredVersion(observer, call, (GLint)(3L), (GLint)(2L));
break;
}
case GLenum::GL_TEXTURE_MAX_ANISOTROPY_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_filter_anisotropic);
checkNotNull(l_t).mMaxAnisotropy = params[0ULL];
break;
}
case GLenum::GL_TEXTURE_SRGB_DECODE_EXT: {
subRequiresExtension(observer, call, ExtensionId::GL_EXT_texture_sRGB_decode);
break;
}
default: {
subGlErrorInvalidEnum(observer, call, pname);
}
}
return;
}
} // namespace gapii