diff options
author | Patrice Mandin <[email protected]> | 2008-06-21 12:03:05 +0200 |
---|---|---|
committer | Patrice Mandin <[email protected]> | 2008-06-21 12:03:05 +0200 |
commit | 5fea663b5f7abcdca00c5ff5d1b77f200b0d06ec (patch) | |
tree | 395bde3085289a1144db145dc056a286ae6624ac /src/gallium/drivers/nv30/nv30_state_blend.c | |
parent | 582b39ebb9f67e3b67a776be0961fe2e51ee46f7 (diff) |
nv30: Add state for blend
Diffstat (limited to 'src/gallium/drivers/nv30/nv30_state_blend.c')
-rw-r--r-- | src/gallium/drivers/nv30/nv30_state_blend.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/gallium/drivers/nv30/nv30_state_blend.c b/src/gallium/drivers/nv30/nv30_state_blend.c new file mode 100644 index 00000000000..a1b0100472d --- /dev/null +++ b/src/gallium/drivers/nv30/nv30_state_blend.c @@ -0,0 +1,40 @@ +#include "nv30_context.h" + +static boolean +nv30_state_blend_validate(struct nv30_context *nv30) +{ + so_ref(nv30->blend->so, &nv30->state.hw[NV30_STATE_BLEND]); + return TRUE; +} + +struct nv30_state_entry nv30_state_blend_new = { + .validate = nv30_state_blend_validate, + .dirty = { + .pipe = NV30_NEW_BLEND, + .hw = NV30_STATE_BLEND + } +}; + +static boolean +nv30_state_blend_colour_validate(struct nv30_context *nv30) +{ + struct nouveau_stateobj *so = so_new(2, 0); + struct pipe_blend_color *bcol = &nv30->blend_colour; + + so_method(so, nv30->screen->rankine, NV34TCL_BLEND_COLOR, 1); + so_data (so, ((float_to_ubyte(bcol->color[3]) << 24) | + (float_to_ubyte(bcol->color[0]) << 16) | + (float_to_ubyte(bcol->color[1]) << 8) | + (float_to_ubyte(bcol->color[2]) << 0))); + + so_ref(so, &nv30->state.hw[NV30_STATE_BCOL]); + return TRUE; +} + +struct nv30_state_entry nv30_state_blend_colour = { + .validate = nv30_state_blend_colour_validate, + .dirty = { + .pipe = NV30_NEW_BCOL, + .hw = NV30_STATE_BCOL + } +}; |