glsl: small tidy up now that link_shaders() exits early with 0 shaders

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Timothy Arceri
2016-01-27 15:34:53 +11:00
parent 76cfb47207
commit 20823992b4

View File

@@ -4149,13 +4149,11 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
unsigned min_version = UINT_MAX; unsigned min_version = UINT_MAX;
unsigned max_version = 0; unsigned max_version = 0;
const bool is_es_prog =
(prog->NumShaders > 0 && prog->Shaders[0]->IsES) ? true : false;
for (unsigned i = 0; i < prog->NumShaders; i++) { for (unsigned i = 0; i < prog->NumShaders; i++) {
min_version = MIN2(min_version, prog->Shaders[i]->Version); min_version = MIN2(min_version, prog->Shaders[i]->Version);
max_version = MAX2(max_version, prog->Shaders[i]->Version); max_version = MAX2(max_version, prog->Shaders[i]->Version);
if (prog->Shaders[i]->IsES != is_es_prog) { if (prog->Shaders[i]->IsES != prog->Shaders[0]->IsES) {
linker_error(prog, "all shaders must use same shading " linker_error(prog, "all shaders must use same shading "
"language version\n"); "language version\n");
goto done; goto done;
@@ -4173,14 +4171,14 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
/* In desktop GLSL, different shader versions may be linked together. In /* In desktop GLSL, different shader versions may be linked together. In
* GLSL ES, all shader versions must be the same. * GLSL ES, all shader versions must be the same.
*/ */
if (is_es_prog && min_version != max_version) { if (prog->Shaders[0]->IsES && min_version != max_version) {
linker_error(prog, "all shaders must use same shading " linker_error(prog, "all shaders must use same shading "
"language version\n"); "language version\n");
goto done; goto done;
} }
prog->Version = max_version; prog->Version = max_version;
prog->IsES = is_es_prog; prog->IsES = prog->Shaders[0]->IsES;
/* Some shaders have to be linked with some other shaders present. /* Some shaders have to be linked with some other shaders present.
*/ */
@@ -4363,7 +4361,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
* *
* This rule also applies to GLSL ES 3.00. * This rule also applies to GLSL ES 3.00.
*/ */
if (max_version >= (is_es_prog ? 300 : 130)) { if (max_version >= (prog->IsES ? 300 : 130)) {
struct gl_shader *sh = prog->_LinkedShaders[MESA_SHADER_FRAGMENT]; struct gl_shader *sh = prog->_LinkedShaders[MESA_SHADER_FRAGMENT];
if (sh) { if (sh) {
lower_discard_flow(sh->ir); lower_discard_flow(sh->ir);