[Mesa-dev] [PATCH 3/4] nv50, nvc0: support polygon offset clamp state

Christoph Bumiller e0425955 at student.tuwien.ac.at
Sat Sep 24 06:47:23 PDT 2011


---
 src/gallium/drivers/nv50/nv50_3d.xml.h   |    2 +-
 src/gallium/drivers/nv50/nv50_state.c    |    2 ++
 src/gallium/drivers/nv50/nv50_stateobj.h |    2 +-
 src/gallium/drivers/nvc0/nvc0_3d.xml.h   |    2 ++
 src/gallium/drivers/nvc0/nvc0_state.c    |    2 ++
 src/gallium/drivers/nvc0/nvc0_stateobj.h |    2 +-
 6 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/nv50/nv50_3d.xml.h b/src/gallium/drivers/nv50/nv50_3d.xml.h
index 1bde07f..0f5a77d 100644
--- a/src/gallium/drivers/nv50/nv50_3d.xml.h
+++ b/src/gallium/drivers/nv50/nv50_3d.xml.h
@@ -1658,7 +1658,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define NV50_3D_GP_RESULT_MAP_3__MASK				0xff000000
 #define NV50_3D_GP_RESULT_MAP_3__SHIFT				24
 
-#define NV50_3D_UNK187C						0x0000187c
+#define NV50_3D_POLYGON_OFFSET_CLAMP				0x0000187c
 
 #define NVA3_3D_VERTEX_ARRAY_PER_INSTANCE_ALT(i0)	       (0x00001880 + 0x4*(i0))
 #define NVA3_3D_VERTEX_ARRAY_PER_INSTANCE_ALT__ESIZE		0x00000004
diff --git a/src/gallium/drivers/nv50/nv50_state.c b/src/gallium/drivers/nv50/nv50_state.c
index 49ea646..9382557 100644
--- a/src/gallium/drivers/nv50/nv50_state.c
+++ b/src/gallium/drivers/nv50/nv50_state.c
@@ -308,6 +308,8 @@ nv50_rasterizer_state_create(struct pipe_context *pipe,
       SB_DATA    (so, fui(cso->offset_scale));
       SB_BEGIN_3D(so, POLYGON_OFFSET_UNITS, 1);
       SB_DATA    (so, fui(cso->offset_units * 2.0f));
+      SB_BEGIN_3D(so, POLYGON_OFFSET_CLAMP, 1);
+      SB_DATA    (so, fui(cso->offset_clamp));
    }
 
    assert(so->size <= (sizeof(so->state) / sizeof(so->state[0])));
diff --git a/src/gallium/drivers/nv50/nv50_stateobj.h b/src/gallium/drivers/nv50/nv50_stateobj.h
index d367a06..5b914d8 100644
--- a/src/gallium/drivers/nv50/nv50_stateobj.h
+++ b/src/gallium/drivers/nv50/nv50_stateobj.h
@@ -27,7 +27,7 @@ struct nv50_blend_stateobj {
 struct nv50_rasterizer_stateobj {
    struct pipe_rasterizer_state pipe;
    int size;
-   uint32_t state[44];
+   uint32_t state[45];
 };
 
 struct nv50_zsa_stateobj {
diff --git a/src/gallium/drivers/nvc0/nvc0_3d.xml.h b/src/gallium/drivers/nvc0/nvc0_3d.xml.h
index 6301637..9264b72 100644
--- a/src/gallium/drivers/nvc0/nvc0_3d.xml.h
+++ b/src/gallium/drivers/nvc0/nvc0_3d.xml.h
@@ -981,6 +981,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #define NVC0_3D_INDEX_BATCH_COUNT				0x000017e0
 
+#define NVC0_3D_POLYGON_OFFSET_CLAMP				0x0000187c
+
 #define NVC0_3D_VERTEX_ARRAY_PER_INSTANCE(i0)		       (0x00001880 + 0x4*(i0))
 #define NVC0_3D_VERTEX_ARRAY_PER_INSTANCE__ESIZE		0x00000004
 #define NVC0_3D_VERTEX_ARRAY_PER_INSTANCE__LEN			0x00000020
diff --git a/src/gallium/drivers/nvc0/nvc0_state.c b/src/gallium/drivers/nvc0/nvc0_state.c
index 9f9921c..1a37d04 100644
--- a/src/gallium/drivers/nvc0/nvc0_state.c
+++ b/src/gallium/drivers/nvc0/nvc0_state.c
@@ -266,6 +266,8 @@ nvc0_rasterizer_state_create(struct pipe_context *pipe,
         SB_DATA    (so, fui(cso->offset_scale));
         SB_BEGIN_3D(so, POLYGON_OFFSET_UNITS, 1);
         SB_DATA    (so, fui(cso->offset_units * 2.0f));
+        SB_BEGIN_3D(so, POLYGON_OFFSET_CLAMP, 1);
+        SB_DATA    (so, fui(cso->offset_clamp));
     }
 
     assert(so->size <= (sizeof(so->state) / sizeof(so->state[0])));
diff --git a/src/gallium/drivers/nvc0/nvc0_stateobj.h b/src/gallium/drivers/nvc0/nvc0_stateobj.h
index 0686c52..ecf9655 100644
--- a/src/gallium/drivers/nvc0/nvc0_stateobj.h
+++ b/src/gallium/drivers/nvc0/nvc0_stateobj.h
@@ -25,7 +25,7 @@ struct nvc0_blend_stateobj {
 struct nvc0_rasterizer_stateobj {
    struct pipe_rasterizer_state pipe;
    int size;
-   uint32_t state[39];
+   uint32_t state[40];
 };
 
 struct nvc0_zsa_stateobj {
-- 
1.7.3.4



More information about the mesa-dev mailing list