mesa: set the gl_FragDepth layout in the GLSL linker
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
@@ -685,29 +685,6 @@ ir_to_mesa_visitor::visit(ir_variable *ir)
|
||||
|
||||
fp->OriginUpperLeft = ir->origin_upper_left;
|
||||
fp->PixelCenterInteger = ir->pixel_center_integer;
|
||||
|
||||
} else if (strcmp(ir->name, "gl_FragDepth") == 0) {
|
||||
struct gl_fragment_program *fp = (struct gl_fragment_program *)this->prog;
|
||||
switch (ir->depth_layout) {
|
||||
case ir_depth_layout_none:
|
||||
fp->FragDepthLayout = FRAG_DEPTH_LAYOUT_NONE;
|
||||
break;
|
||||
case ir_depth_layout_any:
|
||||
fp->FragDepthLayout = FRAG_DEPTH_LAYOUT_ANY;
|
||||
break;
|
||||
case ir_depth_layout_greater:
|
||||
fp->FragDepthLayout = FRAG_DEPTH_LAYOUT_GREATER;
|
||||
break;
|
||||
case ir_depth_layout_less:
|
||||
fp->FragDepthLayout = FRAG_DEPTH_LAYOUT_LESS;
|
||||
break;
|
||||
case ir_depth_layout_unchanged:
|
||||
fp->FragDepthLayout = FRAG_DEPTH_LAYOUT_UNCHANGED;
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ir->mode == ir_var_uniform && strncmp(ir->name, "gl_", 3) == 0) {
|
||||
@@ -3222,6 +3199,12 @@ get_mesa_program(struct gl_context *ctx,
|
||||
do_set_program_inouts(shader->ir, prog, shader->Type == GL_FRAGMENT_SHADER);
|
||||
count_resources(prog);
|
||||
|
||||
/* Set the gl_FragDepth layout. */
|
||||
if (target == GL_FRAGMENT_PROGRAM_ARB) {
|
||||
struct gl_fragment_program *fp = (struct gl_fragment_program *)prog;
|
||||
fp->FragDepthLayout = shader_program->FragDepthLayout;
|
||||
}
|
||||
|
||||
_mesa_reference_program(ctx, &shader->Program, prog);
|
||||
|
||||
if ((ctx->Shader.Flags & GLSL_NO_OPT) == 0) {
|
||||
|
Reference in New Issue
Block a user