i965/fs: Use mov(4) instructions to read timestamp.
authorMatt Turner <mattst88@gmail.com>
Fri, 31 Oct 2014 18:12:30 +0000 (11:12 -0700)
committerMatt Turner <mattst88@gmail.com>
Thu, 6 Nov 2014 19:09:45 +0000 (11:09 -0800)
We only want fields 0-2.

src/mesa/drivers/dri/i965/brw_fs.cpp

index b7e6333c341181f066aa95bfdeecf3fa50c9b9be..698bd68ae249525d0f978df4959efda40326a6a4 100644 (file)
@@ -679,19 +679,18 @@ fs_visitor::get_timestamp()
 {
    assert(brw->gen >= 7);
 
-   fs_reg ts = fs_reg(retype(brw_vec1_reg(BRW_ARCHITECTURE_REGISTER_FILE,
+   fs_reg ts = fs_reg(retype(brw_vec4_reg(BRW_ARCHITECTURE_REGISTER_FILE,
                                           BRW_ARF_TIMESTAMP,
                                           0),
                              BRW_REGISTER_TYPE_UD));
 
-   fs_reg dst = fs_reg(this, glsl_type::uint_type);
+   fs_reg dst = fs_reg(GRF, virtual_grf_alloc(1), BRW_REGISTER_TYPE_UD, 4);
 
    fs_inst *mov = emit(MOV(dst, ts));
-   /* We want to read the 3 fields we care about (mostly field 0, but also 2)
-    * even if it's not enabled in the dispatch.
+   /* We want to read the 3 fields we care about even if it's not enabled in
+    * the dispatch.
     */
    mov->force_writemask_all = true;
-   mov->exec_size = 8;
 
    /* The caller wants the low 32 bits of the timestamp.  Since it's running
     * at the GPU clock rate of ~1.2ghz, it will roll over every ~3 seconds,