mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 02:58:05 +02:00
i965: re-enable gen6 IF statements in the fragment shader.
IF statements were getting flattened while they were broken. With Zhenyu's last fix for ENDIF's type, everything appears to have lined up to actually work. This regresses two tests: glsl1-! (not) operator (1, fail) glsl1-! (not) operator (1, pass) but fixes tests that couldn't work before because the IFs couldn't be flattened: glsl-fs-discard-01 occlusion-query-discard (and, naturally, this should be a performance improvement for apps that actually use IF statements to avoid executing a bunch of code).
This commit is contained in:
parent
490c23ee6b
commit
9effc1adf1
2 changed files with 1 additions and 6 deletions
|
|
@ -124,7 +124,7 @@ GLboolean brwCreateContext( int api,
|
|||
(i == MESA_SHADER_FRAGMENT);
|
||||
|
||||
if (intel->gen == 6)
|
||||
ctx->ShaderCompilerOptions[i].EmitNoIfs = GL_TRUE;
|
||||
ctx->ShaderCompilerOptions[i].EmitNoIfs = (i == MESA_SHADER_VERTEX);
|
||||
}
|
||||
|
||||
ctx->Const.VertexProgram.MaxNativeInstructions = (16 * 1024);
|
||||
|
|
|
|||
|
|
@ -89,8 +89,6 @@ brw_compile_shader(struct gl_context *ctx, struct gl_shader *shader)
|
|||
GLboolean
|
||||
brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
|
||||
{
|
||||
struct intel_context *intel = intel_context(ctx);
|
||||
|
||||
struct brw_shader *shader =
|
||||
(struct brw_shader *)prog->_LinkedShaders[MESA_SHADER_FRAGMENT];
|
||||
if (shader != NULL) {
|
||||
|
|
@ -132,9 +130,6 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
|
|||
GL_TRUE, /* temp */
|
||||
GL_TRUE /* uniform */
|
||||
) || progress;
|
||||
if (intel->gen == 6) {
|
||||
progress = do_if_to_cond_assign(shader->ir) || progress;
|
||||
}
|
||||
} while (progress);
|
||||
|
||||
validate_ir_tree(shader->ir);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue