nvc0: emit state to allow GP to select the RT layer
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Fri, 14 Oct 2011 20:19:01 +0000 (22:19 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Fri, 21 Oct 2011 21:00:39 +0000 (23:00 +0200)
src/gallium/drivers/nvc0/nvc0_shader_state.c

index 6d014ee86994c6e96f02ebce5ec198afccedd917..472bdb11aba3efa2a8e7a4b9e74e0a903ee7522a 100644 (file)
@@ -190,6 +190,7 @@ nvc0_gmtyprog_validate(struct nvc0_context *nvc0)
    if (!gp) {
       BEGIN_RING(chan, RING_3D(GP_SELECT), 1);
       OUT_RING  (chan, 0x40);
+      IMMED_RING(chan, RING_3D(LAYER), 0);
       return;
    }
    if (!nvc0_program_validate(nvc0, gp))
@@ -201,7 +202,9 @@ nvc0_gmtyprog_validate(struct nvc0_context *nvc0)
    BEGIN_RING(chan, RING_3D(SP_START_ID(4)), 1);
    OUT_RING  (chan, gp->code_base);
    BEGIN_RING(chan, RING_3D(SP_GPR_ALLOC(4)), 1);
-   OUT_RING  (chan, gp->max_gpr);   
+   OUT_RING  (chan, gp->max_gpr);
+   BEGIN_RING(chan, RING_3D(LAYER), 1);
+   OUT_RING  (chan, (gp->hdr[13] & (1 << 9)) ? NVC0_3D_LAYER_USE_GP : 0);
 }
 
 /* It's *is* kind of shader related. We need to inspect the program