diff options
author | Christoph Bumiller <[email protected]> | 2009-12-24 12:39:42 +0100 |
---|---|---|
committer | Christoph Bumiller <[email protected]> | 2009-12-24 12:48:00 +0100 |
commit | d29f55546dec74ca77dce3a3bf581c251be1d397 (patch) | |
tree | 37715047ca16895352a49a98f26f2395d34cb41d /src/gallium/drivers/nv50/nv50_screen.c | |
parent | b5a408bae518ededbb871d113dab89f3e15bfb45 (diff) |
nv50: make edgeflags work
It doesn't seem to be possible to set the egdeflag in the
vertex shader, so we need to fallback to pushing vertices
through the FIFO and use method 0x15e4 if they are used.
This only works if VP does MOV OUT[X] IN[Y] where X is the
edgeflag output, and Y is saved so we can tell the correct
input later.
The VP still writes the useless values to wasted outputs
as punishment.
Diffstat (limited to 'src/gallium/drivers/nv50/nv50_screen.c')
-rw-r--r-- | src/gallium/drivers/nv50/nv50_screen.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c index d443ca3ad06..2435f65ed25 100644 --- a/src/gallium/drivers/nv50/nv50_screen.c +++ b/src/gallium/drivers/nv50/nv50_screen.c @@ -441,6 +441,9 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev) so_method(so, screen->tesla, NV50TCL_SCISSOR_ENABLE, 1); so_data (so, 1); + so_method(so, screen->tesla, 0x15e4, 1); + so_data (so, 1); /* default edgeflag to TRUE */ + so_emit(chan, so); so_ref (so, &screen->static_init); so_ref (NULL, &so); |