|
@@ -940,6 +940,14 @@ gk104_grctx_generate_r418bb8(struct gf100_gr_priv *priv)
|
|
|
nv_wr32(priv, 0x40780c + (i * 4), data[i]);
|
|
|
}
|
|
|
|
|
|
+void
|
|
|
+gk104_grctx_generate_rop_active_fbps(struct gf100_gr_priv *priv)
|
|
|
+{
|
|
|
+ const u32 fbp_count = nv_rd32(priv, 0x120074);
|
|
|
+ nv_mask(priv, 0x408850, 0x0000000f, fbp_count); /* zrop */
|
|
|
+ nv_mask(priv, 0x408958, 0x0000000f, fbp_count); /* crop */
|
|
|
+}
|
|
|
+
|
|
|
void
|
|
|
gk104_grctx_generate_main(struct gf100_gr_priv *priv, struct gf100_grctx *info)
|
|
|
{
|
|
@@ -970,13 +978,7 @@ gk104_grctx_generate_main(struct gf100_gr_priv *priv, struct gf100_grctx *info)
|
|
|
nv_wr32(priv, 0x4064d0 + (i * 0x04), 0x00000000);
|
|
|
|
|
|
nv_wr32(priv, 0x405b00, (priv->tpc_total << 8) | priv->gpc_nr);
|
|
|
- if (priv->gpc_nr == 1) {
|
|
|
- nv_mask(priv, 0x408850, 0x0000000f, priv->tpc_nr[0]);
|
|
|
- nv_mask(priv, 0x408958, 0x0000000f, priv->tpc_nr[0]);
|
|
|
- } else {
|
|
|
- nv_mask(priv, 0x408850, 0x0000000f, priv->gpc_nr);
|
|
|
- nv_mask(priv, 0x408958, 0x0000000f, priv->gpc_nr);
|
|
|
- }
|
|
|
+ gk104_grctx_generate_rop_active_fbps(priv);
|
|
|
nv_mask(priv, 0x419f78, 0x00000001, 0x00000000);
|
|
|
|
|
|
gf100_gr_icmd(priv, oclass->icmd);
|