mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
mesa: Propagate gl_FragDepth layout from GLSL IR to Mesa IR
This commit is contained in:
parent
addae33d6b
commit
a1b83464ff
2 changed files with 41 additions and 0 deletions
|
|
@ -867,6 +867,23 @@ struct gl_fog_attrib
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
* \brief Layout qualifiers for gl_FragDepth.
|
||||
*
|
||||
* Extension AMD_conservative_depth allows gl_FragDepth to be redeclared with
|
||||
* a layout qualifier.
|
||||
*
|
||||
* \see enum ir_depth_layout
|
||||
*/
|
||||
enum gl_frag_depth_layout {
|
||||
FRAG_DEPTH_LAYOUT_NONE, /**< No layout is specified. */
|
||||
FRAG_DEPTH_LAYOUT_ANY,
|
||||
FRAG_DEPTH_LAYOUT_GREATER,
|
||||
FRAG_DEPTH_LAYOUT_LESS,
|
||||
FRAG_DEPTH_LAYOUT_UNCHANGED
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Hint attribute group (GL_HINT_BIT).
|
||||
*
|
||||
|
|
@ -1889,6 +1906,7 @@ struct gl_fragment_program
|
|||
GLboolean UsesKill; /**< shader uses KIL instruction */
|
||||
GLboolean OriginUpperLeft;
|
||||
GLboolean PixelCenterInteger;
|
||||
enum gl_frag_depth_layout FragDepthLayout;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -727,6 +727,29 @@ 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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue