r300g: fix outputting depth in the FS
This commit is contained in:
committed by
Corbin Simpson
parent
7c902b43d8
commit
e78648db0a
@@ -283,6 +283,22 @@ void r300_emit_fs_constant_buffer(struct r300_context* r300,
|
||||
END_CS;
|
||||
}
|
||||
|
||||
static void r300_emit_fragment_depth_config(struct r300_context* r300,
|
||||
struct r300_fragment_shader* fs)
|
||||
{
|
||||
CS_LOCALS(r300);
|
||||
|
||||
BEGIN_CS(4);
|
||||
if (r300_fragment_shader_writes_depth(fs)) {
|
||||
OUT_CS_REG(R300_FG_DEPTH_SRC, R300_FG_DEPTH_SRC_SHADER);
|
||||
OUT_CS_REG(R300_US_W_FMT, R300_W_FMT_W24 | R300_W_SRC_US);
|
||||
} else {
|
||||
OUT_CS_REG(R300_FG_DEPTH_SRC, R300_FG_DEPTH_SRC_SCAN);
|
||||
OUT_CS_REG(R300_US_W_FMT, R300_W_FMT_W0 | R300_W_SRC_US);
|
||||
}
|
||||
END_CS;
|
||||
}
|
||||
|
||||
void r500_emit_fragment_program_code(struct r300_context* r300,
|
||||
struct rX00_fragment_program_code* generic_code)
|
||||
{
|
||||
@@ -1036,6 +1052,7 @@ validate:
|
||||
}
|
||||
|
||||
if (r300->dirty_state & R300_NEW_FRAGMENT_SHADER) {
|
||||
r300_emit_fragment_depth_config(r300, r300->fs);
|
||||
if (r300screen->caps->is_r500) {
|
||||
r500_emit_fragment_program_code(r300, &r300->fs->shader->code);
|
||||
} else {
|
||||
|
||||
@@ -43,7 +43,7 @@ void r300_emit_invariant_state(struct r300_context* r300)
|
||||
struct r300_capabilities* caps = r300_screen(r300->context.screen)->caps;
|
||||
CS_LOCALS(r300);
|
||||
|
||||
BEGIN_CS(20 + (caps->has_tcl ? 2: 0));
|
||||
BEGIN_CS(16 + (caps->has_tcl ? 2: 0));
|
||||
|
||||
/*** Graphics Backend (GB) ***/
|
||||
/* Various GB enables */
|
||||
@@ -66,8 +66,6 @@ void r300_emit_invariant_state(struct r300_context* r300)
|
||||
OUT_CS_REG(R300_FG_FOG_COLOR_R, 0x0);
|
||||
OUT_CS_REG(R300_FG_FOG_COLOR_G, 0x0);
|
||||
OUT_CS_REG(R300_FG_FOG_COLOR_B, 0x0);
|
||||
OUT_CS_REG(R300_FG_DEPTH_SRC, 0x0);
|
||||
OUT_CS_REG(R300_US_W_FMT, 0x0);
|
||||
|
||||
/*** VAP ***/
|
||||
/* Sign/normalize control */
|
||||
|
||||
Reference in New Issue
Block a user