mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
mesa/sso: Add gl_pipeline_object::InfoLog support
V2 (idr): * Keep the behavior of other info logs in Mesa: and empty info log reports a GL_INFO_LOG_LENGTH of zero. * Use a NULL pointer to denote an empty info log. * Split out from previous uber patch. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
658eaa3229
commit
aa46ad26b1
2 changed files with 24 additions and 3 deletions
|
|
@ -2807,6 +2807,8 @@ struct gl_pipeline_object
|
|||
GLbitfield Flags; /**< Mask of GLSL_x flags */
|
||||
|
||||
GLboolean EverBound; /**< Has the pipeline object been created */
|
||||
|
||||
GLchar *InfoLog;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ _mesa_new_pipeline_object(struct gl_context *ctx, GLuint name)
|
|||
mtx_init(&obj->Mutex, mtx_plain);
|
||||
obj->RefCount = 1;
|
||||
obj->Flags = _mesa_get_shader_flags();
|
||||
obj->InfoLog = NULL;
|
||||
}
|
||||
|
||||
return obj;
|
||||
|
|
@ -572,9 +573,7 @@ _mesa_GetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params)
|
|||
*params = pipe->ActiveProgram ? pipe->ActiveProgram->Name : 0;
|
||||
return;
|
||||
case GL_INFO_LOG_LENGTH:
|
||||
/* FINISHME: Implement the info log.
|
||||
*/
|
||||
*params = 0;
|
||||
*params = pipe->InfoLog ? strlen(pipe->InfoLog) + 1 : 0;
|
||||
return;
|
||||
case GL_VALIDATE_STATUS:
|
||||
/* FINISHME: Implement validation status.
|
||||
|
|
@ -621,4 +620,24 @@ void GLAPIENTRY
|
|||
_mesa_GetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize,
|
||||
GLsizei *length, GLchar *infoLog)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
struct gl_pipeline_object *pipe = lookup_pipeline_object(ctx, pipeline);
|
||||
|
||||
if (!pipe) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE,
|
||||
"glGetProgramPipelineInfoLog(pipeline)");
|
||||
return;
|
||||
}
|
||||
|
||||
if (bufSize < 0) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE,
|
||||
"glGetProgramPipelineInfoLog(bufSize)");
|
||||
return;
|
||||
}
|
||||
|
||||
if (pipe->InfoLog)
|
||||
_mesa_copy_string(infoLog, bufSize, length, pipe->InfoLog);
|
||||
else
|
||||
*length = 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue