| /* |
| * 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 |