From b3fa0d311e553ec815d58e58a30aa8b3927e4afd Mon Sep 17 00:00:00 2001 From: Christoph Bumiller Date: Sat, 24 Sep 2011 15:42:46 +0200 Subject: [PATCH] nv50,nvc0: support polygon offset clamp state --- 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 1bde07fa3af..0f5a77de9a1 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 0e08b096f58..ede8713ae76 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 d367a064d61..83a08b0bd3d 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[46]; }; 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 63016372827..9264b72dadd 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 9f9921cc09e..1a37d045801 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 0686c52fd0c..b508000bdab 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[41]; }; struct nvc0_zsa_stateobj { -- 2.30.2