diff options
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_defines.h | 1 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs.h | 1 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_generator.cpp | 19 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_shader.cpp | 2 |
4 files changed, 23 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h index 7beda72bab0..7f4cd10e593 100644 --- a/src/mesa/drivers/dri/i965/brw_defines.h +++ b/src/mesa/drivers/dri/i965/brw_defines.h @@ -753,6 +753,7 @@ enum opcode { * instructions. */ FS_OPCODE_FB_WRITE = 128, + FS_OPCODE_BLORP_FB_WRITE, SHADER_OPCODE_RCP, SHADER_OPCODE_RSQ, SHADER_OPCODE_SQRT, diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h index 126e8cec0dd..9bc69829798 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -523,6 +523,7 @@ public: private: void generate_code(exec_list *instructions, FILE *dump_file); void generate_fb_write(fs_inst *inst); + void generate_blorp_fb_write(fs_inst *inst); void generate_pixel_xy(struct brw_reg dst, bool is_x); void generate_linterp(fs_inst *inst, struct brw_reg dst, struct brw_reg *src); diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp index 17e66dda877..7f70b920da3 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp @@ -190,6 +190,21 @@ fs_generator::generate_fb_write(fs_inst *inst) mark_surface_used(surf_index); } +void +fs_generator::generate_blorp_fb_write(fs_inst *inst) +{ + brw_fb_WRITE(p, + 16 /* dispatch_width */, + inst->base_mrf, + brw_reg_from_fs_reg(&inst->src[0]), + BRW_DATAPORT_RENDER_TARGET_WRITE_SIMD16_SINGLE_SOURCE, + inst->target, + inst->mlen, + 0, + true, + inst->header_present); +} + /* Computes the integer pixel x,y values from the origin. * * This is the basis of gl_FragCoord computation, but is also used @@ -1726,6 +1741,10 @@ fs_generator::generate_code(exec_list *instructions, FILE *dump_file) generate_fb_write(inst); break; + case FS_OPCODE_BLORP_FB_WRITE: + generate_blorp_fb_write(inst); + break; + case FS_OPCODE_MOV_DISPATCH_TO_FLAGS: generate_mov_dispatch_to_flags(inst); break; diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp b/src/mesa/drivers/dri/i965/brw_shader.cpp index b38032ec70f..45bf73091b3 100644 --- a/src/mesa/drivers/dri/i965/brw_shader.cpp +++ b/src/mesa/drivers/dri/i965/brw_shader.cpp @@ -406,6 +406,8 @@ brw_instruction_name(enum opcode op) switch (op) { case FS_OPCODE_FB_WRITE: return "fb_write"; + case FS_OPCODE_BLORP_FB_WRITE: + return "blorp_fb_write"; case SHADER_OPCODE_RCP: return "rcp"; |