blob: 139d037351ee52b1efddb93c1365bcad2a50fba9 [file] [log] [blame]
// Auto-generated with: android/scripts/gen-entries.py --mode=translator_passthrough android/android-emugl/host/libs/libOpenGLESDispatch/gles31_only.entries --output=android/android-emugl/host/libs/Translator/GLES_V2/GLESv31Imp.cpp
// This file is best left unedited.
// Try to make changes through gen_translator in gen-entries.py,
// and/or parcel out custom functionality in separate code.
GL_APICALL void GL_APIENTRY glGetBooleani_v(GLenum target, GLuint index, GLboolean * data) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGetBooleani_v);
ctx->dispatcher().glGetBooleani_v(target, index, data);
}
GL_APICALL void GL_APIENTRY glMemoryBarrier(GLbitfield barriers) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glMemoryBarrier);
ctx->dispatcher().glMemoryBarrier(barriers);
}
GL_APICALL void GL_APIENTRY glMemoryBarrierByRegion(GLbitfield barriers) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glMemoryBarrierByRegion);
ctx->dispatcher().glMemoryBarrierByRegion(barriers);
}
GL_APICALL void GL_APIENTRY glGenProgramPipelines(GLsizei n, GLuint * pipelines) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGenProgramPipelines);
SET_ERROR_IF(n < 0,GL_INVALID_VALUE);
ctx->dispatcher().glGenProgramPipelines(n, pipelines);
}
GL_APICALL void GL_APIENTRY glDeleteProgramPipelines(GLsizei n, const GLuint * pipelines) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glDeleteProgramPipelines);
SET_ERROR_IF(n < 0,GL_INVALID_VALUE);
ctx->dispatcher().glDeleteProgramPipelines(n, pipelines);
}
GL_APICALL void GL_APIENTRY glBindProgramPipeline(GLuint pipeline) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glBindProgramPipeline);
ctx->dispatcher().glBindProgramPipeline(pipeline);
}
GL_APICALL void GL_APIENTRY glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint * params) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGetProgramPipelineiv);
ctx->dispatcher().glGetProgramPipelineiv(pipeline, pname, params);
switch (pname) {
case GL_ACTIVE_PROGRAM:
case GL_VERTEX_SHADER:
case GL_FRAGMENT_SHADER:
case GL_COMPUTE_SHADER: {
GLint programName = *params;
GLint localProgramName =
ctx->shareGroup()->getLocalName(NamedObjectType::SHADER_OR_PROGRAM, programName);
*params = localProgramName;
break;
}
default:
break;
}
}
GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGetProgramPipelineInfoLog);
ctx->dispatcher().glGetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog);
}
GL_APICALL void GL_APIENTRY glValidateProgramPipeline(GLuint pipeline) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glValidateProgramPipeline);
ctx->dispatcher().glValidateProgramPipeline(pipeline);
}
GL_APICALL GLboolean GL_APIENTRY glIsProgramPipeline(GLuint pipeline) {
GET_CTX_V2_RET(0);
RET_AND_SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glIsProgramPipeline, false);
GLboolean glIsProgramPipelineRET = ctx->dispatcher().glIsProgramPipeline(pipeline);
return glIsProgramPipelineRET;
}
GL_APICALL void GL_APIENTRY glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glUseProgramStages);
if (ctx->shareGroup().get()) {
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glUseProgramStages(pipeline, stages, globalProgramName);
}
}
GL_APICALL void GL_APIENTRY glActiveShaderProgram(GLuint pipeline, GLuint program) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glActiveShaderProgram);
if (ctx->shareGroup().get()) {
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glActiveShaderProgram(pipeline, globalProgramName);
}
}
EXTERN_PART GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramv(GLenum type, GLsizei count, const char ** strings) {
GET_CTX_V2_RET(0);
RET_AND_SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glCreateShaderProgramv, 0);
GLuint glCreateShaderProgramvRET = ctx->dispatcher().glCreateShaderProgramv(type, count, strings);
GLint sep = GL_FALSE;
GLint linkstatus = GL_FALSE;
ctx->dispatcher().glGetProgramiv(glCreateShaderProgramvRET, GL_PROGRAM_SEPARABLE, &sep);
ctx->dispatcher().glGetProgramiv(glCreateShaderProgramvRET, GL_LINK_STATUS, &linkstatus);
const GLuint localProgramName =
ctx->shareGroup()->genName(ShaderProgramType::PROGRAM, 0, true, glCreateShaderProgramvRET);
ProgramData* progdata = new ProgramData(ctx->getMajorVersion(), ctx->getMinorVersion());
progdata->setHostLinkStatus(linkstatus);
progdata->setLinkStatus(GL_TRUE);
ctx->shareGroup()->setObjectData(NamedObjectType::SHADER_OR_PROGRAM, localProgramName, ObjectDataPtr(progdata));
return localProgramName;
}
GL_APICALL void GL_APIENTRY glProgramUniform1f(GLuint program, GLint location, GLfloat v0) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform1f);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform1f(globalProgramName, hostLoc, v0);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform2f);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform2f(globalProgramName, hostLoc, v0, v1);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform3f);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform3f(globalProgramName, hostLoc, v0, v1, v2);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform4f);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform4f(globalProgramName, hostLoc, v0, v1, v2, v3);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform1i(GLuint program, GLint location, GLint v0) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform1i);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform1i(globalProgramName, hostLoc, v0);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform2i);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform2i(globalProgramName, hostLoc, v0, v1);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform3i);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform3i(globalProgramName, hostLoc, v0, v1, v2);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform4i);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform4i(globalProgramName, hostLoc, v0, v1, v2, v3);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform1ui(GLuint program, GLint location, GLuint v0) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform1ui);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform1ui(globalProgramName, hostLoc, v0);
}
}
EXTERN_PART GL_APICALL void GL_APIENTRY glProgramUniform2ui(GLuint program, GLint location, GLint v0, GLuint v1) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform2ui);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform2ui(globalProgramName, hostLoc, v0, v1);
}
}
EXTERN_PART GL_APICALL void GL_APIENTRY glProgramUniform3ui(GLuint program, GLint location, GLint v0, GLint v1, GLuint v2) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform3ui);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform3ui(globalProgramName, hostLoc, v0, v1, v2);
}
}
EXTERN_PART GL_APICALL void GL_APIENTRY glProgramUniform4ui(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLuint v3) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform4ui);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform4ui(globalProgramName, hostLoc, v0, v1, v2, v3);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform1fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform1fv(globalProgramName, hostLoc, count, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform2fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform2fv(globalProgramName, hostLoc, count, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform3fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform3fv(globalProgramName, hostLoc, count, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform4fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform4fv(globalProgramName, hostLoc, count, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform1iv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform1iv(globalProgramName, hostLoc, count, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform2iv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform2iv(globalProgramName, hostLoc, count, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform3iv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform3iv(globalProgramName, hostLoc, count, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform4iv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform4iv(globalProgramName, hostLoc, count, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform1uiv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform1uiv(globalProgramName, hostLoc, count, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform2uiv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform2uiv(globalProgramName, hostLoc, count, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform3uiv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform3uiv(globalProgramName, hostLoc, count, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniform4uiv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniform4uiv(globalProgramName, hostLoc, count, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniformMatrix2fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniformMatrix2fv(globalProgramName, hostLoc, count, transpose, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniformMatrix3fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniformMatrix3fv(globalProgramName, hostLoc, count, transpose, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniformMatrix4fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniformMatrix4fv(globalProgramName, hostLoc, count, transpose, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniformMatrix2x3fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniformMatrix2x3fv(globalProgramName, hostLoc, count, transpose, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniformMatrix3x2fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniformMatrix3x2fv(globalProgramName, hostLoc, count, transpose, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniformMatrix2x4fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniformMatrix2x4fv(globalProgramName, hostLoc, count, transpose, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniformMatrix4x2fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniformMatrix4x2fv(globalProgramName, hostLoc, count, transpose, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniformMatrix3x4fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniformMatrix3x4fv(globalProgramName, hostLoc, count, transpose, value);
}
}
GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glProgramUniformMatrix4x3fv);
if (ctx->shareGroup().get()) {
int hostLoc = s_getHostLocOrSetError(ctx, program, location);
SET_ERROR_IF(hostLoc < -1, GL_INVALID_OPERATION);
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(
NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glProgramUniformMatrix4x3fv(globalProgramName, location, count, transpose, value);
}
}
GL_APICALL void GL_APIENTRY glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint * params) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGetProgramInterfaceiv);
if (ctx->shareGroup().get()) {
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glGetProgramInterfaceiv(globalProgramName, programInterface, pname, params);
}
}
GL_APICALL void GL_APIENTRY glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei * length, GLint * params) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGetProgramResourceiv);
if (ctx->shareGroup().get()) {
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glGetProgramResourceiv(globalProgramName, programInterface, index, propCount, props, bufSize, length, params);
}
}
GL_APICALL GLuint GL_APIENTRY glGetProgramResourceIndex(GLuint program, GLenum programInterface, const char * name) {
GET_CTX_V2_RET(0);
RET_AND_SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGetProgramResourceIndex, 0);
if (ctx->shareGroup().get()) {
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(NamedObjectType::SHADER_OR_PROGRAM, program);
GLuint glGetProgramResourceIndexRET = ctx->dispatcher().glGetProgramResourceIndex(globalProgramName, programInterface, name);
return glGetProgramResourceIndexRET;
} else return 0;
}
GL_APICALL GLint GL_APIENTRY glGetProgramResourceLocation(GLuint program, GLenum programInterface, const char * name) {
GET_CTX_V2_RET(0);
RET_AND_SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGetProgramResourceLocation, 0);
if (ctx->shareGroup().get()) {
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(NamedObjectType::SHADER_OR_PROGRAM, program);
GLint glGetProgramResourceLocationRET = ctx->dispatcher().glGetProgramResourceLocation(globalProgramName, programInterface, name);
return glGetProgramResourceLocationRET;
} else return 0;
}
GL_APICALL void GL_APIENTRY glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei * length, char * name) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGetProgramResourceName);
if (ctx->shareGroup().get()) {
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(NamedObjectType::SHADER_OR_PROGRAM, program);
ctx->dispatcher().glGetProgramResourceName(globalProgramName, programInterface, index, bufSize, length, name);
}
}
GL_APICALL void GL_APIENTRY glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glBindImageTexture);
if (ctx->shareGroup().get()) {
const GLuint globalTextureName = ctx->shareGroup()->getGlobalName(NamedObjectType::TEXTURE, texture);
ctx->dispatcher().glBindImageTexture(unit, globalTextureName, level, layered, layer, access, format);
}
}
GL_APICALL void GL_APIENTRY glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glDispatchCompute);
ctx->dispatcher().glDispatchCompute(num_groups_x, num_groups_y, num_groups_z);
}
GL_APICALL void GL_APIENTRY glDispatchComputeIndirect(GLintptr indirect) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glDispatchComputeIndirect);
ctx->dispatcher().glDispatchComputeIndirect(indirect);
}
EXTERN_PART GL_APICALL void GL_APIENTRY glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLintptr stride) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glBindVertexBuffer);
ctx->bindIndexedBuffer(0, bindingindex, buffer, offset, 0, stride);
if (ctx->shareGroup().get()) {
const GLuint globalBufferName = ctx->shareGroup()->getGlobalName(NamedObjectType::VERTEXBUFFER, buffer);
ctx->dispatcher().glBindVertexBuffer(bindingindex, globalBufferName, offset, stride);
}
}
GL_APICALL void GL_APIENTRY glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glVertexAttribBinding);
ctx->setVertexAttribBindingIndex(attribindex, bindingindex);
ctx->dispatcher().glVertexAttribBinding(attribindex, bindingindex);
}
GL_APICALL void GL_APIENTRY glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glVertexAttribFormat);
ctx->setVertexAttribFormat(attribindex, size, type, normalized, relativeoffset, false);
ctx->dispatcher().glVertexAttribFormat(attribindex, size, type, normalized, relativeoffset);
}
GL_APICALL void GL_APIENTRY glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glVertexAttribIFormat);
ctx->setVertexAttribFormat(attribindex, size, type, GL_FALSE, relativeoffset, true);
ctx->dispatcher().glVertexAttribIFormat(attribindex, size, type, relativeoffset);
}
GL_APICALL void GL_APIENTRY glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glVertexBindingDivisor);
ctx->setVertexAttribDivisor(bindingindex, divisor);
ctx->dispatcher().glVertexBindingDivisor(bindingindex, divisor);
}
GL_APICALL void GL_APIENTRY glDrawArraysIndirect(GLenum mode, const void * indirect) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glDrawArraysIndirect);
ctx->dispatcher().glDrawArraysIndirect(mode, indirect);
}
GL_APICALL void GL_APIENTRY glDrawElementsIndirect(GLenum mode, GLenum type, const void * indirect) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glDrawElementsIndirect);
ctx->dispatcher().glDrawElementsIndirect(mode, type, indirect);
}
GL_APICALL void GL_APIENTRY glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glTexStorage2DMultisample);
GLint err = GL_NO_ERROR;
GLenum format, type;
GLESv2Validate::getCompatibleFormatTypeForInternalFormat(internalformat, &format, &type);
sPrepareTexImage2D(target, 0, (GLint)internalformat, width, height, 0, format, type, samples, NULL, &type, (GLint*)&internalformat, &err);
SET_ERROR_IF(err != GL_NO_ERROR, err);
ctx->dispatcher().glTexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);
}
GL_APICALL void GL_APIENTRY glSampleMaski(GLuint maskNumber, GLbitfield mask) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glSampleMaski);
ctx->dispatcher().glSampleMaski(maskNumber, mask);
}
GL_APICALL void GL_APIENTRY glGetMultisamplefv(GLenum pname, GLuint index, GLfloat * val) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGetMultisamplefv);
ctx->dispatcher().glGetMultisamplefv(pname, index, val);
}
GL_APICALL void GL_APIENTRY glFramebufferParameteri(GLenum target, GLenum pname, GLint param) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glFramebufferParameteri);
ctx->dispatcher().glFramebufferParameteri(target, pname, param);
}
GL_APICALL void GL_APIENTRY glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint * params) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGetFramebufferParameteriv);
ctx->dispatcher().glGetFramebufferParameteriv(target, pname, params);
}
GL_APICALL void GL_APIENTRY glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat * params) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGetTexLevelParameterfv);
ctx->dispatcher().glGetTexLevelParameterfv(target, level, pname, params);
if (!ctx->shareGroup().get()) return;
TextureData* texData = getTextureTargetData(target);
if (!texData) return;
switch (pname) {
case GL_TEXTURE_INTERNAL_FORMAT:
// Need the correct internal format if the texture has not been initialized at all yet.
if (!texData->hasStorage) {
*params = texData->internalFormat;
}
if (texData->compressed) {
*params = texData->compressedFormat;
}
break;
case GL_TEXTURE_COMPRESSED:
if (texData->compressed) {
*params = GL_TRUE;
}
break;
case GL_TEXTURE_BUFFER_DATA_STORE_BINDING:
*params = static_cast<GLfloat>(ctx->shareGroup()->getLocalName(
NamedObjectType::VERTEXBUFFER, static_cast<unsigned int>(*params)));
break;
default:
break;
}
}
GL_APICALL void GL_APIENTRY glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint * params) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glGetTexLevelParameteriv);
ctx->dispatcher().glGetTexLevelParameteriv(target, level, pname, params);
if (!ctx->shareGroup().get()) return;
TextureData* texData = getTextureTargetData(target);
if (!texData) return;
switch (pname) {
case GL_TEXTURE_INTERNAL_FORMAT:
// Need the correct internal format if the texture has not been initialized at all yet.
if (!texData->hasStorage) {
*params = texData->internalFormat;
}
if (texData->compressed) {
*params = texData->compressedFormat;
}
break;
case GL_TEXTURE_COMPRESSED:
if (texData->compressed) {
*params = GL_TRUE;
}
break;
case GL_TEXTURE_BUFFER_DATA_STORE_BINDING:
*params = ctx->shareGroup()->getLocalName(NamedObjectType::VERTEXBUFFER, *params);
break;
default:
break;
}
}
GL_APICALL void GL_APIENTRY glTexBufferOES(GLenum target, GLenum internalformat, GLuint buffer) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glTexBufferOES);
if (ctx->shareGroup().get()) {
const GLuint globalBufferName =
ctx->shareGroup()->getGlobalName(NamedObjectType::VERTEXBUFFER, buffer);
ctx->dispatcher().glTexBufferOES(target, internalformat, globalBufferName);
TextureData* texData = getTextureTargetData(target);
texData->internalFormat = internalformat;
texData->makeDirty();
}
}
GL_APICALL void GL_APIENTRY glTexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glTexBufferEXT);
if (ctx->shareGroup().get()) {
const GLuint globalBufferName =
ctx->shareGroup()->getGlobalName(NamedObjectType::VERTEXBUFFER, buffer);
ctx->dispatcher().glTexBufferEXT(target, internalformat, globalBufferName);
TextureData* texData = getTextureTargetData(target);
texData->internalFormat = internalformat;
texData->makeDirty();
}
}
GL_APICALL void GL_APIENTRY glTexBufferRangeOES(GLenum target, GLenum internalformat, GLuint buffer,
GLintptr offset, GLsizeiptr size) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glTexBufferRangeOES);
if (ctx->shareGroup().get()) {
const GLuint globalBufferName =
ctx->shareGroup()->getGlobalName(NamedObjectType::VERTEXBUFFER, buffer);
ctx->dispatcher().glTexBufferRangeOES(target, internalformat, globalBufferName, offset, size);
TextureData* texData = getTextureTargetData(target);
texData->internalFormat = internalformat;
texData->makeDirty();
}
}
GL_APICALL void GL_APIENTRY glTexBufferRangeEXT(GLenum target, GLenum internalformat, GLuint buffer,
GLintptr offset, GLsizeiptr size) {
GET_CTX_V2();
SET_ERROR_IF_DISPATCHER_NOT_SUPPORT(glTexBufferRangeEXT);
if (ctx->shareGroup().get()) {
const GLuint globalBufferName =
ctx->shareGroup()->getGlobalName(NamedObjectType::VERTEXBUFFER, buffer);
ctx->dispatcher().glTexBufferRangeEXT(target, internalformat, globalBufferName, offset,size);
TextureData* texData = getTextureTargetData(target);
texData->internalFormat = internalformat;
texData->makeDirty();
}
}