1 #include "nvfx_context.h"
4 nvfx_state_stipple_validate(struct nvfx_context
*nvfx
)
6 struct pipe_rasterizer_state
*rast
= &nvfx
->rasterizer
->pipe
;
7 struct nouveau_grobj
*eng3d
= nvfx
->screen
->eng3d
;
8 struct nouveau_stateobj
*so
;
10 if (nvfx
->state
.hw
[NVFX_STATE_STIPPLE
] &&
11 (rast
->poly_stipple_enable
== 0 && nvfx
->state
.stipple_enabled
== 0))
14 if (rast
->poly_stipple_enable
) {
17 so
= so_new(2, 33, 0);
18 so_method(so
, eng3d
, NV34TCL_POLYGON_STIPPLE_ENABLE
, 1);
20 so_method(so
, eng3d
, NV34TCL_POLYGON_STIPPLE_PATTERN(0), 32);
21 for (i
= 0; i
< 32; i
++)
22 so_data(so
, nvfx
->stipple
[i
]);
25 so_method(so
, eng3d
, NV34TCL_POLYGON_STIPPLE_ENABLE
, 1);
29 so_ref(so
, &nvfx
->state
.hw
[NVFX_STATE_STIPPLE
]);
34 struct nvfx_state_entry nvfx_state_stipple
= {
35 .validate
= nvfx_state_stipple_validate
,
37 .pipe
= NVFX_NEW_STIPPLE
| NVFX_NEW_RAST
,
38 .hw
= NVFX_STATE_STIPPLE
,