mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 07:08:04 +02:00
shaderapi: don't generate not linked error on GetProgramStage in general
Both ARB_shader_subroutine and the GL core spec doesn't list any error when the program is not linked. We left a error generation for the uniform location, in order to be consistent with other methods from the spec that generate them. Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
This commit is contained in:
parent
9411eb67ec
commit
b4959e17f1
1 changed files with 18 additions and 1 deletions
|
|
@ -2725,8 +2725,25 @@ _mesa_GetProgramStageiv(GLuint program, GLenum shadertype,
|
|||
|
||||
stage = _mesa_shader_enum_to_shader_stage(shadertype);
|
||||
sh = shProg->_LinkedShaders[stage];
|
||||
|
||||
/* ARB_shader_subroutine doesn't ask the program to be linked, or list any
|
||||
* INVALID_OPERATION in the case of not be linked.
|
||||
*
|
||||
* And for some pnames, like GL_ACTIVE_SUBROUTINE_UNIFORMS, you can ask the
|
||||
* same info using other specs (ARB_program_interface_query), without the
|
||||
* need of the program to be linked, being the value for that case 0.
|
||||
*
|
||||
* But at the same time, some other methods require the program to be
|
||||
* linked for pname related to locations, so it would be inconsistent to
|
||||
* not do the same here. So we are:
|
||||
* * Return GL_INVALID_OPERATION if not linked only for locations.
|
||||
* * Setting a default value of 0, to be returned if not linked.
|
||||
*/
|
||||
if (!sh) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "%s", api_name);
|
||||
values[0] = 0;
|
||||
if (pname == GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "%s", api_name);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue