am 3e6fbdd1: Merge "2.0 translator: link only if both shaders compile"

* commit '3e6fbdd1b286e09a153b68b74fb12bda9df9b0e8':
  2.0 translator: link only if both shaders compile
This commit is contained in:
David Turner
2011-08-04 07:23:55 -07:00
committed by Android Git Automerger

View File

@@ -1257,10 +1257,22 @@ GL_APICALL void GL_APIENTRY glLinkProgram(GLuint program){
SET_ERROR_IF(!objData.Ptr(), GL_INVALID_OPERATION);
SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA, GL_INVALID_OPERATION);
ProgramData* programData = (ProgramData*)objData.Ptr();
if (programData->getAttachedVertexShader()!=0 && programData->getAttachedFragmentShader()!=0) {
GLint fragmentShader = programData->getAttachedFragmentShader();
GLint vertexShader = programData->getAttachedVertexShader();
if (vertexShader != 0 && fragmentShader!=0) {
/* validating that the fragment & vertex shaders were compiled successfuly*/
GLint fCompileStatus = GL_FALSE;
GLint vCompileStatus = GL_FALSE;
GLuint fragmentShaderGlobal = thrd->shareGroup->getGlobalName(SHADER,fragmentShader);
GLuint vertexShaderGlobal = thrd->shareGroup->getGlobalName(SHADER,vertexShader);
ctx->dispatcher().glGetShaderiv(fragmentShaderGlobal,GL_COMPILE_STATUS,&fCompileStatus);
ctx->dispatcher().glGetShaderiv(vertexShaderGlobal,GL_COMPILE_STATUS,&vCompileStatus);
if(fCompileStatus != 0 && vCompileStatus != 0){
ctx->dispatcher().glLinkProgram(globalProgramName);
ctx->dispatcher().glGetProgramiv(globalProgramName,GL_LINK_STATUS,&linkStatus);
}
}
programData->setLinkStatus(linkStatus);
}
}