Home | History | Annotate | Download | only in libGLESv2

Lines Matching refs:context

12 #include "libGLESv2/Context.h"
30 bool ValidCap(const Context *context, GLenum cap)
46 return (context->getClientVersion() >= 3);
52 bool ValidTextureTarget(const Context *context, GLenum target)
62 return (context->getClientVersion() >= 3);
73 bool ValidTexture2DDestinationTarget(const Context *context, GLenum target)
87 return (context->getClientVersion() >= 3);
106 bool ValidBufferTarget(const Context *context, GLenum target)
116 return context->getExtensions().pixelBufferObject;
122 return (context->getClientVersion() >= 3);
129 bool ValidBufferParameter(const Context *context, GLenum pname)
143 return (context->getClientVersion() >= 3);
150 bool ValidMipLevel(const Context *context, GLenum target, GLint level)
155 case GL_TEXTURE_2D: maxDimension = context->getCaps().max2DTextureSize; break;
162 case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: maxDimension = context->getCaps().maxCubeMapTextureSize; break;
163 case GL_TEXTURE_3D: maxDimension = context->getCaps().max3DTextureSize; break;
164 case GL_TEXTURE_2D_ARRAY: maxDimension = context->getCaps().max2DTextureSize; break;
171 bool ValidImageSize(const Context *context, GLenum target, GLint level,
179 if (!context->getExtensions().textureNPOT &&
185 if (!ValidMipLevel(context, target, level))
193 bool ValidCompressedImageSize(const Context *context, GLenum internalFormat, GLsizei width, GLsizei height)
210 bool ValidQueryType(const Context *context, GLenum queryType)
221 return (context->getClientVersion() >= 3);
227 bool ValidProgram(Context *context, GLuint id)
233 if (context->getProgram(id) != NULL)
237 else if (context->getShader(id) != NULL)
240 context->recordError(Error(GL_INVALID_OPERATION));
246 context->recordError(Error(GL_INVALID_VALUE));
251 bool ValidateAttachmentTarget(gl::Context *context, GLenum attachment)
257 if (colorAttachment >= context->getCaps().maxColorAttachments)
259 context->recordError(Error(GL_INVALID_VALUE));
272 if (context->getClientVersion() < 3)
274 context->recordError(Error(GL_INVALID_ENUM));
280 context->recordError(Error(GL_INVALID_ENUM));
288 bool ValidateRenderbufferStorageParameters(gl::Context *context, GLenum target, GLsizei samples,
297 context->recordError(Error(GL_INVALID_ENUM));
303 context->recordError(Error(GL_INVALID_VALUE));
308 if (!formatInfo.textureSupport(context->getClientVersion(), context->getExtensions()))
310 context->recordError(Error(GL_INVALID_ENUM));
320 context->recordError(Error(GL_INVALID_ENUM));
326 context->recordError(Error(GL_INVALID_OPERATION));
330 const TextureCaps &formatCaps = context->getTextureCaps().get(internalformat);
333 context->recordError(Error(GL_INVALID_ENUM));
337 if (static_cast<GLuint>(std::max(width, height)) > context->getCaps().maxRenderbufferSize)
339 context->recordError(Error(GL_INVALID_VALUE));
344 // to MAX_SAMPLES_ANGLE (Context::getMaxSupportedSamples) while the ES3.0 spec (section 4.4.2)
349 ASSERT(context->getExtensions().framebufferMultisample);
350 if (static_cast<GLuint>(samples) > context->getExtensions().maxSamples)
352 context->recordError(Error(GL_INVALID_VALUE));
359 context->recordError(Error(GL_OUT_OF_MEMORY));
367 context->recordError(Error(GL_INVALID_VALUE));
372 GLuint handle = context->getState().getRenderbufferId();
375 context->recordError(Error(GL_INVALID_OPERATION));
382 bool ValidateFramebufferRenderbufferParameters(gl::Context *context, GLenum target, GLenum attachment,
387 context->recordError(Error(GL_INVALID_ENUM));
391 gl::Framebuffer *framebuffer = context->getState().getTargetFramebuffer(target);
392 GLuint framebufferHandle = context->getState().getTargetFramebuffer(target)->id();
396 context->recordError(Error(GL_INVALID_OPERATION));
400 if (!ValidateAttachmentTarget(context, attachment))
411 if (!context->getRenderbuffer(renderbuffer))
413 context->recordError(Error(GL_INVALID_OPERATION));
421 static bool IsPartialBlit(gl::Context *context, gl::FramebufferAttachment *readBuffer, gl::FramebufferAttachment *writeBuffer,
431 else if (context->getState().isScissorTestEnabled())
433 const Rectangle &scissor = context->getState().getScissor();
445 bool ValidateBlitFramebufferParameters(gl::Context *context, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
456 context->recordError(Error(GL_INVALID_ENUM));
461 context->recordError(Error(GL_INVALID_ENUM));
467 context->recordError(Error(GL_INVALID_VALUE));
481 context->recordError(Error(GL_INVALID_OPERATION));
489 context->recordError(Error(GL_INVALID_OPERATION));
493 if (context->getState().getReadFramebuffer()->id() == context->getState().getDrawFramebuffer()->id())
500 context->recordError(Error(GL_INVALID_OPERATION));
504 gl::Framebuffer *readFramebuffer = context->getState().getReadFramebuffer();
505 gl::Framebuffer *drawFramebuffer = context->getState().getDrawFramebuffer();
509 context->recordError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
515 context->recordError(Error(GL_INVALID_OPERATION));
545 context->recordError(Error(GL_INVALID_OPERATION));
551 context->recordError(Error(GL_INVALID_OPERATION));
557 context->recordError(Error(GL_INVALID_OPERATION));
563 context->recordError(Error(GL_INVALID_OPERATION));
571 context->recordError(Error(GL_INVALID_OPERATION));
580 context->recordError(Error(GL_INVALID_OPERATION));
593 context->recordError(Error(GL_INVALID_OPERATION));
599 context->recordError(Error(GL_INVALID_OPERATION));
604 if (readFramebuffer->getSamples() != 0 && IsPartialBlit(context, readColorBuffer, drawColorBuffer,
608 context->recordError(Error(GL_INVALID_OPERATION));
624 context->recordError(Error(GL_INVALID_OPERATION));
630 context->recordError(Error(GL_INVALID_OPERATION));
636 if (IsPartialBlit(context, readDepthBuffer, drawDepthBuffer,
640 context->recordError(Error(GL_INVALID_OPERATION)); // only whole-buffer copies are permitted
646 context->recordError(Error(GL_INVALID_OPERATION));
662 context->recordError(Error(GL_INVALID_OPERATION));
668 context->recordError(Error(GL_INVALID_OPERATION));
674 if (IsPartialBlit(context, readStencilBuffer, drawStencilBuffer,
678 context->recordError(Error(GL_INVALID_OPERATION)); // only whole-buffer copies are permitted
684 context->recordError(Error(GL_INVALID_OPERATION));
694 bool ValidateGetVertexAttribParameters(Context *context, GLenum pname)
708 // Don't verify ES3 context because GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE uses
714 if (context->getClientVersion() < 3)
716 context->recordError(Error(GL_INVALID_ENUM));
722 context->recordError(Error(GL_INVALID_ENUM));
727 bool ValidateTexParamParameters(gl::Context *context, GLenum pname, GLint param)
742 if (context->getClientVersion() < 3)
744 context->recordError(Error(GL_INVALID_ENUM));
764 context->recordError(Error(GL_INVALID_ENUM));
779 context->recordError(Error(GL_INVALID_ENUM));
791 context->recordError(Error(GL_INVALID_ENUM));
803 context->recordError(Error(GL_INVALID_ENUM));
809 if (!context->getExtensions().textureFilterAnisotropic)
811 context->recordError(Error(GL_INVALID_ENUM));
818 context->recordError(Error(GL_INVALID_VALUE));
836 context->recordError(Error(GL_INVALID_ENUM));
855 context->recordError(Error(GL_INVALID_ENUM));
874 context->recordError(Error(GL_INVALID_ENUM));
883 context->recordError(Error(GL_INVALID_VALUE));
889 context->recordError(Error(GL_INVALID_ENUM));
894 bool ValidateSamplerObjectParameter(gl::Context *context, GLenum pname)
910 context->recordError(Error(GL_INVALID_ENUM));
915 bool ValidateReadPixelsParameters(gl::Context *context, GLint x, GLint y, GLsizei width, GLsizei height,
918 gl::Framebuffer *framebuffer = context->getState().getReadFramebuffer();
923 context->recordError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
927 if (context->getState().getReadFramebuffer()->id() != 0 && framebuffer->getSamples() != 0)
929 context->recordError(Error(GL_INVALID_OPERATION));
935 context->recordError(Error(GL_INVALID_OPERATION));
940 GLuint clientVersion = context->getClientVersion();
942 context->getCurrentReadFormatType(&currentInternalFormat, &currentFormat, &currentType);
944 bool validReadFormat = (clientVersion < 3) ? ValidES2ReadFormatType(context, format, type) :
945 ValidES3ReadFormatType(context, currentInternalFormat, format, type);
949 context->recordError(Error(GL_INVALID_OPERATION));
956 GLsizei outputPitch = sizedFormatInfo.computeRowPitch(type, width, context->getState().getPackAlignment());
963 context->recordError(Error(GL_INVALID_OPERATION));
971 bool ValidateBeginQuery(gl::Context *context, GLenum target, GLuint id)
973 if (!ValidQueryType(context, target))
975 context->recordError(Error(GL_INVALID_ENUM));
981 context->recordError(Error(GL_INVALID_OPERATION));
1000 if (context->getState().isQueryActive())
1002 context->recordError(Error(GL_INVALID_OPERATION));
1006 Query *queryObject = context->getQuery(id, true, target);
1011 context->recordError(Error(GL_INVALID_OPERATION));
1018 context->recordError(Error(GL_INVALID_OPERATION));
1025 bool ValidateEndQuery(gl::Context *context, GLenum target)
1027 if (!ValidQueryType(context, target))
1029 context->recordError(Error(GL_INVALID_ENUM));
1033 const Query *queryObject = context->getState().getActiveQuery(target);
1037 context->recordError(Error(GL_INVALID_OPERATION));
1044 static bool ValidateUniformCommonBase(gl::Context *context, GLenum targetUniformType,
1049 context->recordError(Error(GL_INVALID_VALUE));
1053 gl::ProgramBinary *programBinary = context->getState().getCurrentProgramBinary();
1056 context->recordError(Error(GL_INVALID_OPERATION));
1068 context->recordError(Error(GL_INVALID_OPERATION));
1077 context->recordError(Error(GL_INVALID_OPERATION));
1085 bool ValidateUniform(gl::Context *context, GLenum uniformType, GLint location, GLsizei count)
1088 if (VariableComponentType(uniformType) == GL_UNSIGNED_INT && context->getClientVersion() < 3)
1090 context->recordError(Error(GL_INVALID_OPERATION));
1095 if (!ValidateUniformCommonBase(context, uniformType, location, count, &uniform))
1104 context->recordError(Error(GL_INVALID_OPERATION));
1111 bool ValidateUniformMatrix(gl::Context *context, GLenum matrixType, GLint location, GLsizei count,
1117 if (rows != cols && context->getClientVersion() < 3)
1119 context->recordError(Error(GL_INVALID_OPERATION));
1123 if (transpose != GL_FALSE && context->getClientVersion() < 3)
1125 context->recordError(Error(GL_INVALID_VALUE));
1130 if (!ValidateUniformCommonBase(context, matrixType, location, count, &uniform))
1137 context->recordError(Error(GL_INVALID_OPERATION));
1144 bool ValidateStateQuery(gl::Context *context, GLenum pname, GLenum *nativeType, unsigned int *numParams)
1146 if (!context->getQueryParameterInfo(pname, nativeType, numParams))
1148 context->recordError(Error(GL_INVALID_ENUM));
1156 if (colorAttachment >= context->getCaps().maxDrawBuffers)
1158 context->recordError(Error(GL_INVALID_OPERATION));
1169 if (context->getState().getActiveSampler() >= context->getCaps().maxCombinedTextureImageUnits)
1171 context->recordError(Error(GL_INVALID_OPERATION));
1179 Framebuffer *framebuffer = context->getState().getReadFramebuffer();
1183 context->recordError(Error(GL_INVALID_OPERATION));
1190 context->recordError(Error(GL_INVALID_OPERATION));
1209 bool ValidateCopyTexImageParametersBase(gl::Context* context, GLenum target, GLint level, GLenum internalformat, bool isSubImage,
1214 if (!ValidTexture2DDestinationTarget(context, target))
1216 context->recordError(Error(GL_INVALID_ENUM));
1222 context->recordError(Error(GL_INVALID_VALUE));
1228 context->recordError(Error(GL_INVALID_VALUE));
1234 context->recordError(Error(GL_INVALID_VALUE));
1238 if (!ValidMipLevel(context, target, level))
1240 context->recordError(Error(GL_INVALID_VALUE));
1244 gl::Framebuffer *framebuffer = context->getState().getReadFramebuffer();
1247 context->recordError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
1251 if (context->getState().getReadFramebuffer()->id() != 0 && framebuffer->getSamples() != 0)
1253 context->recordError(Error(GL_INVALID_OPERATION));
1257 const gl::Caps &caps = context->getCaps();
1270 gl::Texture2D *texture2d = context->getTexture2D();
1290 gl::TextureCubeMap *textureCube = context->getTextureCubeMap();
1305 gl::Texture2DArray *texture2dArray = context->getTexture2DArray();
1320 gl::Texture3D *texture3d = context->getTexture3D();
1334 context->recordError(Error(GL_INVALID_ENUM));
1340 context->recordError(Error(GL_INVALID_OPERATION));
1346 context->recordError(Error(GL_INVALID_OPERATION));
1354 context->recordError(Error(GL_INVALID_OPERATION));
1363 context->recordError(Error(GL_INVALID_OPERATION));
1374 context->recordError(Error(GL_INVALID_VALUE));
1382 context->recordError(Error(GL_INVALID_VALUE));
1386 if (!formatInfo.textureSupport(context->getClientVersion(), context->getExtensions()))
1388 context->recordError(Error(GL_INVALID_ENUM));
1395 context->recordError(Error(GL_INVALID_VALUE));
1404 static bool ValidateDrawBase(Context *context, GLenum mode, GLsizei count, GLsizei maxVertex, GLsizei primcount)
1417 context->recordError(Error(GL_INVALID_ENUM));
1423 context->recordError(Error(GL_INVALID_VALUE));
1427 const State &state = context->getState();
1432 context->recordError(Error(GL_INVALID_OPERATION));
1445 context->recordError(Error(GL_INVALID_OPERATION));
1452 context->recordError(Error(GL_INVALID_FRAMEBUFFER_OPERATION));
1458 context->recordError(Error(GL_INVALID_OPERATION));
1463 if (!programBinary->validateSamplers(NULL, context->getCaps()))
1465 context->recordError(Error(GL_INVALID_OPERATION));
1500 context->recordError(Error(GL_INVALID_OPERATION));
1508 context->recordError(Error(GL_INVALID_OPERATION, "An enabled vertex array has no buffer and no pointer."));
1518 bool ValidateDrawArrays(Context *context, GLenum mode, GLint first, GLsizei count, GLsizei primcount)
1522 context->recordError(Error(GL_INVALID_VALUE));
1526 const State &state = context->getState();
1534 context->recordError(Error(GL_INVALID_OPERATION));
1538 if (!ValidateDrawBase(context, mode, count, count, primcount))
1546 bool ValidateDrawArraysInstanced(Context *context, GLenum mode, GLint first, GLsizei count, GLsizei primcount)
1550 context->recordError(Error(GL_INVALID_VALUE));
1554 if (!ValidateDrawArrays(context, mode, first, count, primcount))
1563 static bool ValidateDrawInstancedANGLE(Context *context)
1566 const gl::State& state = context->getState();
1581 context->recordError(Error(GL_INVALID_OPERATION, "ANGLE_instanced_arrays requires that at least one active attribute"
1586 bool ValidateDrawArraysInstancedANGLE(Context *context, GLenum mode, GLint first, GLsizei count, GLsizei primcount)
1588 if (!ValidateDrawInstancedANGLE(context))
1593 return ValidateDrawArraysInstanced(context, mode, first, count, primcount);
1596 bool ValidateDrawElements(Context *context, GLenum mode, GLsizei count, GLenum type,
1605 if (!context->getExtensions().elementIndexUint)
1607 context->recordError(Error(GL_INVALID_ENUM));
1612 context->recordError(Error(GL_INVALID_ENUM));
1616 const State &state = context->getState();
1623 context->recordError(Error(GL_INVALID_OPERATION));
1630 context->recordError(Error(GL_INVALID_OPERATION));
1638 context->recordError(Error(GL_INVALID_OPERATION));
1653 context->recordError(Error(GL_OUT_OF_MEMORY));
1660 context->recordError(Error(GL_INVALID_OPERATION));
1667 context->recordError(Error(GL_INVALID_OPERATION));
1689 if (!ValidateDrawBase(context, mode, count, static_cast<GLsizei>(indexRangeOut->end), primcount))
1697 bool ValidateDrawElementsInstanced(Context *context,
1704 context->recordError(Error(GL_INVALID_VALUE));
1708 if (!ValidateDrawElements(context, mode, count, type, indices, primcount, indexRangeOut))
1717 bool ValidateDrawElementsInstancedANGLE(Context *context, GLenum mode, GLsizei count, GLenum type,
1720 if (!ValidateDrawInstancedANGLE(context))
1725 return ValidateDrawElementsInstanced(context, mode, count, type, indices, primcount, indexRangeOut);
1728 bool ValidateFramebufferTextureBase(Context *context, GLenum target, GLenum attachment,
1733 context->recordError(Error(GL_INVALID_ENUM));
1737 if (!ValidateAttachmentTarget(context, attachment))
1744 gl::Texture *tex = context->getTexture(texture);
1748 context->recordError(Error(GL_INVALID_OPERATION));
1754 context->recordError(Error(GL_INVALID_VALUE));
1759 const gl::Framebuffer *framebuffer = context->getState().getTargetFramebuffer(target);
1760 GLuint framebufferHandle = context->getState().getTargetFramebuffer(target)->id();
1764 context->recordError(Error(GL_INVALID_OPERATION));
1771 bool ValidateFramebufferTexture2D(Context *context, GLenum target, GLenum attachment,
1775 if (context->getClientVersion() < 3 && level != 0)
1777 context->recordError(Error(GL_INVALID_VALUE));
1781 if (!ValidateFramebufferTextureBase(context, target, attachment, texture, level))
1788 gl::Texture *tex = context->getTexture(texture);
1791 const gl::Caps &caps = context->getCaps();
1799 context->recordError(Error(GL_INVALID_VALUE));
1804 context->recordError(Error(GL_INVALID_OPERATION));
1810 context->recordError(Error(GL_INVALID_OPERATION));
1825 context->recordError(Error(GL_INVALID_VALUE));
1830 context->recordError(Error(GL_INVALID_OPERATION));
1836 context->recordError(Error(GL_INVALID_OPERATION));
1843 context->recordError(Error(GL_INVALID_ENUM));
1851 bool ValidateGetUniformBase(Context *context, GLuint program, GLint location)
1855 context->recordError(Error(GL_INVALID_VALUE));
1859 gl::Program *programObject = context->getProgram(program);
1863 context->recordError(Error(GL_INVALID_OPERATION));
1870 context->recordError(Error(GL_INVALID_OPERATION));
1876 context->recordError(Error(GL_INVALID_OPERATION));
1883 bool ValidateGetUniformfv(Context *context, GLuint program, GLint location, GLfloat* params)
1885 return ValidateGetUniformBase(context, program, location);
1888 bool ValidateGetUniformiv(Context *context, GLuint program, GLint location, GLint* params)
1890 return ValidateGetUniformBase(context, program, location);
1893 static bool ValidateSizedGetUniform(Context *context, GLuint program, GLint location, GLsizei bufSize)
1895 if (!ValidateGetUniformBase(context, program, location))
1900 gl::Program *programObject = context->getProgram(program);
1909 context->recordError(Error(GL_INVALID_OPERATION));
1916 bool ValidateGetnUniformfvEXT(Context *context, GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
1918 return ValidateSizedGetUniform(context, program, location, bufSize);
1921 bool ValidateGetnUniformivEXT(Context *context, GLuint program, GLint location, GLsizei bufSize, GLint* params)
1923 return ValidateSizedGetUniform(context, program, location, bufSize);