i965/fs: Pass fragment depth to the fb write as a fs_reg, not an ir_variable.
authorEric Anholt <eric@anholt.net>
Tue, 18 Sep 2012 16:12:48 +0000 (18:12 +0200)
committerEric Anholt <eric@anholt.net>
Mon, 8 Oct 2012 15:38:49 +0000 (08:38 -0700)
This will be used for the ARB_fp change to use this backend.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs.h
src/mesa/drivers/dri/i965/brw_fs_visitor.cpp

index e69de31c9c5d4a9077bd685e85e3294b1c2c55de..e0dd720cc9478e486c2803eb4f8ff95894d8f391 100644 (file)
@@ -370,7 +370,7 @@ public:
    int *params_remap;
 
    struct hash_table *variable_ht;
-   ir_variable *frag_depth;
+   fs_reg frag_depth;
    fs_reg outputs[BRW_MAX_DRAW_BUFFERS];
    unsigned output_components[BRW_MAX_DRAW_BUFFERS];
    fs_reg dual_src_output;
index d3cbde31d821535146e68ec13d88cbb405cf2164..da095381716cde7de83b0574ed0d3cc50c118066 100644 (file)
@@ -83,7 +83,7 @@ fs_visitor::visit(ir_variable *ir)
            this->output_components[i] = 4;
         }
       } else if (ir->location == FRAG_RESULT_DEPTH) {
-        this->frag_depth = ir;
+        this->frag_depth = *reg;
       } else {
         /* gl_FragData or a user-defined FS output */
         assert(ir->location >= FRAG_RESULT_DATA0 &&
@@ -2111,10 +2111,8 @@ fs_visitor::emit_fb_writes()
 
       if (c->computes_depth) {
         /* Hand over gl_FragDepth. */
-        assert(this->frag_depth);
-        fs_reg depth = *(variable_storage(this->frag_depth));
-
-        emit(BRW_OPCODE_MOV, fs_reg(MRF, nr), depth);
+        assert(this->frag_depth.file != BAD_FILE);
+        emit(BRW_OPCODE_MOV, fs_reg(MRF, nr), this->frag_depth);
       } else {
         /* Pass through the payload depth. */
         emit(BRW_OPCODE_MOV, fs_reg(MRF, nr),
@@ -2275,7 +2273,6 @@ fs_visitor::fs_visitor(struct brw_wm_compile *c, struct gl_shader_program *prog,
    else
       this->reg_null_cmp = reg_null_f;
 
-   this->frag_depth = NULL;
    memset(this->outputs, 0, sizeof(this->outputs));
    memset(this->output_components, 0, sizeof(this->output_components));
    this->first_non_payload_grf = 0;