diff options
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/ContextState.cpp')
-rw-r--r-- | src/3rdparty/angle/src/libANGLE/ContextState.cpp | 839 |
1 files changed, 0 insertions, 839 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/ContextState.cpp b/src/3rdparty/angle/src/libANGLE/ContextState.cpp deleted file mode 100644 index d109cca76d..0000000000 --- a/src/3rdparty/angle/src/libANGLE/ContextState.cpp +++ /dev/null @@ -1,839 +0,0 @@ -// -// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// - -// Data.cpp: Container class for all GL relevant state, caps and objects - -#include "libANGLE/ContextState.h" - -#include "libANGLE/Framebuffer.h" -#include "libANGLE/ResourceManager.h" - -namespace gl -{ - -namespace -{ - -template <typename T> -using ContextStateMember = T *(ContextState::*); - -template <typename T> -T *AllocateOrGetSharedResourceManager(const ContextState *shareContextState, - ContextStateMember<T> member) -{ - if (shareContextState) - { - T *resourceManager = (*shareContextState).*member; - resourceManager->addRef(); - return resourceManager; - } - else - { - return new T(); - } -} - -TextureManager *AllocateOrGetSharedTextureManager(const ContextState *shareContextState, - TextureManager *shareTextures, - ContextStateMember<TextureManager> member) -{ - if (shareContextState) - { - TextureManager *textureManager = (*shareContextState).*member; - ASSERT(shareTextures == nullptr || textureManager == shareTextures); - textureManager->addRef(); - return textureManager; - } - else if (shareTextures) - { - TextureManager *textureManager = shareTextures; - textureManager->addRef(); - return textureManager; - } - else - { - return new TextureManager(); - } -} - -} // anonymous namespace - -ContextState::ContextState(ContextID contextIn, - const ContextState *shareContextState, - TextureManager *shareTextures, - const Version &clientVersion, - State *stateIn, - const Caps &capsIn, - const TextureCapsMap &textureCapsIn, - const Extensions &extensionsIn, - const Limitations &limitationsIn) - : mClientVersion(clientVersion), - mContext(contextIn), - mState(stateIn), - mCaps(capsIn), - mTextureCaps(textureCapsIn), - mExtensions(extensionsIn), - mLimitations(limitationsIn), - mBuffers(AllocateOrGetSharedResourceManager(shareContextState, &ContextState::mBuffers)), - mShaderPrograms( - AllocateOrGetSharedResourceManager(shareContextState, &ContextState::mShaderPrograms)), - mTextures(AllocateOrGetSharedTextureManager(shareContextState, - shareTextures, - &ContextState::mTextures)), - mRenderbuffers( - AllocateOrGetSharedResourceManager(shareContextState, &ContextState::mRenderbuffers)), - mSamplers(AllocateOrGetSharedResourceManager(shareContextState, &ContextState::mSamplers)), - mSyncs(AllocateOrGetSharedResourceManager(shareContextState, &ContextState::mSyncs)), - mPaths(AllocateOrGetSharedResourceManager(shareContextState, &ContextState::mPaths)), - mFramebuffers(new FramebufferManager()), - mPipelines(new ProgramPipelineManager()) -{ -} - -ContextState::~ContextState() -{ - // Handles are released by the Context. -} - -bool ContextState::isWebGL() const -{ - return mExtensions.webglCompatibility; -} - -bool ContextState::isWebGL1() const -{ - return (isWebGL() && mClientVersion.major == 2); -} - -const TextureCaps &ContextState::getTextureCap(GLenum internalFormat) const -{ - return mTextureCaps.get(internalFormat); -} - -ValidationContext::ValidationContext(const ValidationContext *shareContext, - TextureManager *shareTextures, - const Version &clientVersion, - State *state, - const Caps &caps, - const TextureCapsMap &textureCaps, - const Extensions &extensions, - const Limitations &limitations, - bool skipValidation) - : mState(reinterpret_cast<ContextID>(this), - shareContext ? &shareContext->mState : nullptr, - shareTextures, - clientVersion, - state, - caps, - textureCaps, - extensions, - limitations), - mSkipValidation(skipValidation), - mDisplayTextureShareGroup(shareTextures != nullptr) -{ -} - -ValidationContext::~ValidationContext() -{ -} - -bool ValidationContext::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *numParams) -{ - // Please note: the query type returned for DEPTH_CLEAR_VALUE in this implementation - // is FLOAT rather than INT, as would be suggested by the GL ES 2.0 spec. This is due - // to the fact that it is stored internally as a float, and so would require conversion - // if returned from Context::getIntegerv. Since this conversion is already implemented - // in the case that one calls glGetIntegerv to retrieve a float-typed state variable, we - // place DEPTH_CLEAR_VALUE with the floats. This should make no difference to the calling - // application. - switch (pname) - { - case GL_COMPRESSED_TEXTURE_FORMATS: - { - *type = GL_INT; - *numParams = static_cast<unsigned int>(getCaps().compressedTextureFormats.size()); - return true; - } - case GL_SHADER_BINARY_FORMATS: - { - *type = GL_INT; - *numParams = static_cast<unsigned int>(getCaps().shaderBinaryFormats.size()); - return true; - } - - case GL_MAX_VERTEX_ATTRIBS: - case GL_MAX_VERTEX_UNIFORM_VECTORS: - case GL_MAX_VARYING_VECTORS: - case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: - case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: - case GL_MAX_TEXTURE_IMAGE_UNITS: - case GL_MAX_FRAGMENT_UNIFORM_VECTORS: - case GL_MAX_RENDERBUFFER_SIZE: - case GL_NUM_SHADER_BINARY_FORMATS: - case GL_NUM_COMPRESSED_TEXTURE_FORMATS: - case GL_ARRAY_BUFFER_BINDING: - case GL_FRAMEBUFFER_BINDING: - case GL_RENDERBUFFER_BINDING: - case GL_CURRENT_PROGRAM: - case GL_PACK_ALIGNMENT: - case GL_UNPACK_ALIGNMENT: - case GL_GENERATE_MIPMAP_HINT: - case GL_RED_BITS: - case GL_GREEN_BITS: - case GL_BLUE_BITS: - case GL_ALPHA_BITS: - case GL_DEPTH_BITS: - case GL_STENCIL_BITS: - case GL_ELEMENT_ARRAY_BUFFER_BINDING: - case GL_CULL_FACE_MODE: - case GL_FRONT_FACE: - case GL_ACTIVE_TEXTURE: - case GL_STENCIL_FUNC: - case GL_STENCIL_VALUE_MASK: - case GL_STENCIL_REF: - case GL_STENCIL_FAIL: - case GL_STENCIL_PASS_DEPTH_FAIL: - case GL_STENCIL_PASS_DEPTH_PASS: - case GL_STENCIL_BACK_FUNC: - case GL_STENCIL_BACK_VALUE_MASK: - case GL_STENCIL_BACK_REF: - case GL_STENCIL_BACK_FAIL: - case GL_STENCIL_BACK_PASS_DEPTH_FAIL: - case GL_STENCIL_BACK_PASS_DEPTH_PASS: - case GL_DEPTH_FUNC: - case GL_BLEND_SRC_RGB: - case GL_BLEND_SRC_ALPHA: - case GL_BLEND_DST_RGB: - case GL_BLEND_DST_ALPHA: - case GL_BLEND_EQUATION_RGB: - case GL_BLEND_EQUATION_ALPHA: - case GL_STENCIL_WRITEMASK: - case GL_STENCIL_BACK_WRITEMASK: - case GL_STENCIL_CLEAR_VALUE: - case GL_SUBPIXEL_BITS: - case GL_MAX_TEXTURE_SIZE: - case GL_MAX_CUBE_MAP_TEXTURE_SIZE: - case GL_SAMPLE_BUFFERS: - case GL_SAMPLES: - case GL_IMPLEMENTATION_COLOR_READ_TYPE: - case GL_IMPLEMENTATION_COLOR_READ_FORMAT: - case GL_TEXTURE_BINDING_2D: - case GL_TEXTURE_BINDING_CUBE_MAP: - case GL_RESET_NOTIFICATION_STRATEGY_EXT: - { - *type = GL_INT; - *numParams = 1; - return true; - } - case GL_PACK_REVERSE_ROW_ORDER_ANGLE: - { - if (!getExtensions().packReverseRowOrder) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - } - case GL_MAX_RECTANGLE_TEXTURE_SIZE_ANGLE: - case GL_TEXTURE_BINDING_RECTANGLE_ANGLE: - { - if (!getExtensions().textureRectangle) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - } - case GL_MAX_DRAW_BUFFERS_EXT: - case GL_MAX_COLOR_ATTACHMENTS_EXT: - { - if ((getClientMajorVersion() < 3) && !getExtensions().drawBuffers) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - } - case GL_MAX_VIEWPORT_DIMS: - { - *type = GL_INT; - *numParams = 2; - return true; - } - case GL_VIEWPORT: - case GL_SCISSOR_BOX: - { - *type = GL_INT; - *numParams = 4; - return true; - } - case GL_SHADER_COMPILER: - case GL_SAMPLE_COVERAGE_INVERT: - case GL_DEPTH_WRITEMASK: - case GL_CULL_FACE: // CULL_FACE through DITHER are natural to IsEnabled, - case GL_POLYGON_OFFSET_FILL: // but can be retrieved through the Get{Type}v queries. - case GL_SAMPLE_ALPHA_TO_COVERAGE: // For this purpose, they are treated here as - // bool-natural - case GL_SAMPLE_COVERAGE: - case GL_SCISSOR_TEST: - case GL_STENCIL_TEST: - case GL_DEPTH_TEST: - case GL_BLEND: - case GL_DITHER: - case GL_CONTEXT_ROBUST_ACCESS_EXT: - { - *type = GL_BOOL; - *numParams = 1; - return true; - } - case GL_COLOR_WRITEMASK: - { - *type = GL_BOOL; - *numParams = 4; - return true; - } - case GL_POLYGON_OFFSET_FACTOR: - case GL_POLYGON_OFFSET_UNITS: - case GL_SAMPLE_COVERAGE_VALUE: - case GL_DEPTH_CLEAR_VALUE: - case GL_LINE_WIDTH: - { - *type = GL_FLOAT; - *numParams = 1; - return true; - } - case GL_ALIASED_LINE_WIDTH_RANGE: - case GL_ALIASED_POINT_SIZE_RANGE: - case GL_DEPTH_RANGE: - { - *type = GL_FLOAT; - *numParams = 2; - return true; - } - case GL_COLOR_CLEAR_VALUE: - case GL_BLEND_COLOR: - { - *type = GL_FLOAT; - *numParams = 4; - return true; - } - case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: - if (!getExtensions().textureFilterAnisotropic) - { - return false; - } - *type = GL_FLOAT; - *numParams = 1; - return true; - case GL_TIMESTAMP_EXT: - if (!getExtensions().disjointTimerQuery) - { - return false; - } - *type = GL_INT_64_ANGLEX; - *numParams = 1; - return true; - case GL_GPU_DISJOINT_EXT: - if (!getExtensions().disjointTimerQuery) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - case GL_COVERAGE_MODULATION_CHROMIUM: - if (!getExtensions().framebufferMixedSamples) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - case GL_TEXTURE_BINDING_EXTERNAL_OES: - if (!getExtensions().eglStreamConsumerExternal && !getExtensions().eglImageExternal) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - } - - if (getExtensions().debug) - { - switch (pname) - { - case GL_DEBUG_LOGGED_MESSAGES: - case GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: - case GL_DEBUG_GROUP_STACK_DEPTH: - case GL_MAX_DEBUG_MESSAGE_LENGTH: - case GL_MAX_DEBUG_LOGGED_MESSAGES: - case GL_MAX_DEBUG_GROUP_STACK_DEPTH: - case GL_MAX_LABEL_LENGTH: - *type = GL_INT; - *numParams = 1; - return true; - - case GL_DEBUG_OUTPUT_SYNCHRONOUS: - case GL_DEBUG_OUTPUT: - *type = GL_BOOL; - *numParams = 1; - return true; - } - } - - if (getExtensions().multisampleCompatibility) - { - switch (pname) - { - case GL_MULTISAMPLE_EXT: - case GL_SAMPLE_ALPHA_TO_ONE_EXT: - *type = GL_BOOL; - *numParams = 1; - return true; - } - } - - if (getExtensions().pathRendering) - { - switch (pname) - { - case GL_PATH_MODELVIEW_MATRIX_CHROMIUM: - case GL_PATH_PROJECTION_MATRIX_CHROMIUM: - *type = GL_FLOAT; - *numParams = 16; - return true; - } - } - - if (getExtensions().bindGeneratesResource) - { - switch (pname) - { - case GL_BIND_GENERATES_RESOURCE_CHROMIUM: - *type = GL_BOOL; - *numParams = 1; - return true; - } - } - - if (getExtensions().clientArrays) - { - switch (pname) - { - case GL_CLIENT_ARRAYS_ANGLE: - *type = GL_BOOL; - *numParams = 1; - return true; - } - } - - if (getExtensions().sRGBWriteControl) - { - switch (pname) - { - case GL_FRAMEBUFFER_SRGB_EXT: - *type = GL_BOOL; - *numParams = 1; - return true; - } - } - - if (getExtensions().robustResourceInitialization && - pname == GL_ROBUST_RESOURCE_INITIALIZATION_ANGLE) - { - *type = GL_BOOL; - *numParams = 1; - return true; - } - - if (getExtensions().programCacheControl && pname == GL_PROGRAM_CACHE_ENABLED_ANGLE) - { - *type = GL_BOOL; - *numParams = 1; - return true; - } - - // Check for ES3.0+ parameter names which are also exposed as ES2 extensions - switch (pname) - { - // case GL_DRAW_FRAMEBUFFER_BINDING_ANGLE // equivalent to FRAMEBUFFER_BINDING - case GL_READ_FRAMEBUFFER_BINDING_ANGLE: - if ((getClientMajorVersion() < 3) && !getExtensions().framebufferBlit) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - - case GL_NUM_PROGRAM_BINARY_FORMATS_OES: - if ((getClientMajorVersion() < 3) && !getExtensions().getProgramBinary) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - - case GL_PROGRAM_BINARY_FORMATS_OES: - if ((getClientMajorVersion() < 3) && !getExtensions().getProgramBinary) - { - return false; - } - *type = GL_INT; - *numParams = static_cast<unsigned int>(getCaps().programBinaryFormats.size()); - return true; - - case GL_PACK_ROW_LENGTH: - case GL_PACK_SKIP_ROWS: - case GL_PACK_SKIP_PIXELS: - if ((getClientMajorVersion() < 3) && !getExtensions().packSubimage) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - case GL_UNPACK_ROW_LENGTH: - case GL_UNPACK_SKIP_ROWS: - case GL_UNPACK_SKIP_PIXELS: - if ((getClientMajorVersion() < 3) && !getExtensions().unpackSubimage) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - case GL_VERTEX_ARRAY_BINDING: - if ((getClientMajorVersion() < 3) && !getExtensions().vertexArrayObject) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - case GL_PIXEL_PACK_BUFFER_BINDING: - case GL_PIXEL_UNPACK_BUFFER_BINDING: - if ((getClientMajorVersion() < 3) && !getExtensions().pixelBufferObject) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - case GL_MAX_SAMPLES: - { - static_assert(GL_MAX_SAMPLES_ANGLE == GL_MAX_SAMPLES, - "GL_MAX_SAMPLES_ANGLE not equal to GL_MAX_SAMPLES"); - if ((getClientMajorVersion() < 3) && !getExtensions().framebufferMultisample) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - - case GL_FRAGMENT_SHADER_DERIVATIVE_HINT: - if ((getClientMajorVersion() < 3) && !getExtensions().standardDerivatives) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - } - } - - if (pname >= GL_DRAW_BUFFER0_EXT && pname <= GL_DRAW_BUFFER15_EXT) - { - if ((getClientVersion() < Version(3, 0)) && !getExtensions().drawBuffers) - { - return false; - } - *type = GL_INT; - *numParams = 1; - return true; - } - - if (getExtensions().multiview && pname == GL_MAX_VIEWS_ANGLE) - { - *type = GL_INT; - *numParams = 1; - return true; - } - - if (getClientVersion() < Version(3, 0)) - { - return false; - } - - // Check for ES3.0+ parameter names - switch (pname) - { - case GL_MAX_UNIFORM_BUFFER_BINDINGS: - case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: - case GL_UNIFORM_BUFFER_BINDING: - case GL_TRANSFORM_FEEDBACK_BINDING: - case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: - case GL_COPY_READ_BUFFER_BINDING: - case GL_COPY_WRITE_BUFFER_BINDING: - case GL_SAMPLER_BINDING: - case GL_READ_BUFFER: - case GL_TEXTURE_BINDING_3D: - case GL_TEXTURE_BINDING_2D_ARRAY: - case GL_MAX_3D_TEXTURE_SIZE: - case GL_MAX_ARRAY_TEXTURE_LAYERS: - case GL_MAX_VERTEX_UNIFORM_BLOCKS: - case GL_MAX_FRAGMENT_UNIFORM_BLOCKS: - case GL_MAX_COMBINED_UNIFORM_BLOCKS: - case GL_MAX_VERTEX_OUTPUT_COMPONENTS: - case GL_MAX_FRAGMENT_INPUT_COMPONENTS: - case GL_MAX_VARYING_COMPONENTS: - case GL_MAX_VERTEX_UNIFORM_COMPONENTS: - case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: - case GL_MIN_PROGRAM_TEXEL_OFFSET: - case GL_MAX_PROGRAM_TEXEL_OFFSET: - case GL_NUM_EXTENSIONS: - case GL_MAJOR_VERSION: - case GL_MINOR_VERSION: - case GL_MAX_ELEMENTS_INDICES: - case GL_MAX_ELEMENTS_VERTICES: - case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: - case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: - case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: - case GL_UNPACK_IMAGE_HEIGHT: - case GL_UNPACK_SKIP_IMAGES: - { - *type = GL_INT; - *numParams = 1; - return true; - } - - case GL_MAX_ELEMENT_INDEX: - case GL_MAX_UNIFORM_BLOCK_SIZE: - case GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: - case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: - case GL_MAX_SERVER_WAIT_TIMEOUT: - { - *type = GL_INT_64_ANGLEX; - *numParams = 1; - return true; - } - - case GL_TRANSFORM_FEEDBACK_ACTIVE: - case GL_TRANSFORM_FEEDBACK_PAUSED: - case GL_PRIMITIVE_RESTART_FIXED_INDEX: - case GL_RASTERIZER_DISCARD: - { - *type = GL_BOOL; - *numParams = 1; - return true; - } - - case GL_MAX_TEXTURE_LOD_BIAS: - { - *type = GL_FLOAT; - *numParams = 1; - return true; - } - } - - if (getExtensions().requestExtension) - { - switch (pname) - { - case GL_NUM_REQUESTABLE_EXTENSIONS_ANGLE: - *type = GL_INT; - *numParams = 1; - return true; - } - } - - if (getClientVersion() < Version(3, 1)) - { - return false; - } - - switch (pname) - { - case GL_ATOMIC_COUNTER_BUFFER_BINDING: - case GL_DRAW_INDIRECT_BUFFER_BINDING: - case GL_MAX_FRAMEBUFFER_WIDTH: - case GL_MAX_FRAMEBUFFER_HEIGHT: - case GL_MAX_FRAMEBUFFER_SAMPLES: - case GL_MAX_SAMPLE_MASK_WORDS: - case GL_MAX_COLOR_TEXTURE_SAMPLES: - case GL_MAX_DEPTH_TEXTURE_SAMPLES: - case GL_MAX_INTEGER_SAMPLES: - case GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: - case GL_MAX_VERTEX_ATTRIB_BINDINGS: - case GL_MAX_VERTEX_ATTRIB_STRIDE: - case GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: - case GL_MAX_VERTEX_ATOMIC_COUNTERS: - case GL_MAX_VERTEX_IMAGE_UNIFORMS: - case GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS: - case GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: - case GL_MAX_FRAGMENT_ATOMIC_COUNTERS: - case GL_MAX_FRAGMENT_IMAGE_UNIFORMS: - case GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: - case GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: - case GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: - case GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS: - case GL_MAX_COMPUTE_UNIFORM_BLOCKS: - case GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS: - case GL_MAX_COMPUTE_SHARED_MEMORY_SIZE: - case GL_MAX_COMPUTE_UNIFORM_COMPONENTS: - case GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: - case GL_MAX_COMPUTE_ATOMIC_COUNTERS: - case GL_MAX_COMPUTE_IMAGE_UNIFORMS: - case GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: - case GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS: - case GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: - case GL_MAX_UNIFORM_LOCATIONS: - case GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: - case GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: - case GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: - case GL_MAX_COMBINED_ATOMIC_COUNTERS: - case GL_MAX_IMAGE_UNITS: - case GL_MAX_COMBINED_IMAGE_UNIFORMS: - case GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS: - case GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS: - case GL_SHADER_STORAGE_BUFFER_BINDING: - case GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: - case GL_TEXTURE_BINDING_2D_MULTISAMPLE: - *type = GL_INT; - *numParams = 1; - return true; - case GL_MAX_SHADER_STORAGE_BLOCK_SIZE: - *type = GL_INT_64_ANGLEX; - *numParams = 1; - return true; - case GL_SAMPLE_MASK: - *type = GL_BOOL; - *numParams = 1; - return true; - } - - return false; -} - -bool ValidationContext::getIndexedQueryParameterInfo(GLenum target, - GLenum *type, - unsigned int *numParams) -{ - if (getClientVersion() < Version(3, 0)) - { - return false; - } - - switch (target) - { - case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: - case GL_UNIFORM_BUFFER_BINDING: - { - *type = GL_INT; - *numParams = 1; - return true; - } - case GL_TRANSFORM_FEEDBACK_BUFFER_START: - case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: - case GL_UNIFORM_BUFFER_START: - case GL_UNIFORM_BUFFER_SIZE: - { - *type = GL_INT_64_ANGLEX; - *numParams = 1; - return true; - } - } - - if (getClientVersion() < Version(3, 1)) - { - return false; - } - - switch (target) - { - case GL_MAX_COMPUTE_WORK_GROUP_COUNT: - case GL_MAX_COMPUTE_WORK_GROUP_SIZE: - case GL_ATOMIC_COUNTER_BUFFER_BINDING: - case GL_SHADER_STORAGE_BUFFER_BINDING: - case GL_VERTEX_BINDING_BUFFER: - case GL_VERTEX_BINDING_DIVISOR: - case GL_VERTEX_BINDING_OFFSET: - case GL_VERTEX_BINDING_STRIDE: - case GL_SAMPLE_MASK_VALUE: - { - *type = GL_INT; - *numParams = 1; - return true; - } - case GL_ATOMIC_COUNTER_BUFFER_START: - case GL_ATOMIC_COUNTER_BUFFER_SIZE: - case GL_SHADER_STORAGE_BUFFER_START: - case GL_SHADER_STORAGE_BUFFER_SIZE: - { - *type = GL_INT_64_ANGLEX; - *numParams = 1; - return true; - } - } - - return false; -} - -Program *ValidationContext::getProgram(GLuint handle) const -{ - return mState.mShaderPrograms->getProgram(handle); -} - -Shader *ValidationContext::getShader(GLuint handle) const -{ - return mState.mShaderPrograms->getShader(handle); -} - -bool ValidationContext::isTextureGenerated(GLuint texture) const -{ - return mState.mTextures->isHandleGenerated(texture); -} - -bool ValidationContext::isBufferGenerated(GLuint buffer) const -{ - return mState.mBuffers->isHandleGenerated(buffer); -} - -bool ValidationContext::isRenderbufferGenerated(GLuint renderbuffer) const -{ - return mState.mRenderbuffers->isHandleGenerated(renderbuffer); -} - -bool ValidationContext::isFramebufferGenerated(GLuint framebuffer) const -{ - return mState.mFramebuffers->isHandleGenerated(framebuffer); -} - -bool ValidationContext::isProgramPipelineGenerated(GLuint pipeline) const -{ - return mState.mPipelines->isHandleGenerated(pipeline); -} - -bool ValidationContext::usingDisplayTextureShareGroup() const -{ - return mDisplayTextureShareGroup; -} - -GLenum ValidationContext::getConvertedRenderbufferFormat(GLenum internalformat) const -{ - return mState.mExtensions.webglCompatibility && mState.mClientVersion.major == 2 && - internalformat == GL_DEPTH_STENCIL - ? GL_DEPTH24_STENCIL8 - : internalformat; -} - -} // namespace gl |