nv50_stateobj.h revision b2dcf880e8bcd61be59602f5a2d18c77a5fc60c1
1f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller 2f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller#ifndef __NV50_STATEOBJ_H__ 3f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller#define __NV50_STATEOBJ_H__ 4f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller 5f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller#include "pipe/p_state.h" 6f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller 7f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller#define NV50_SCISSORS_CLIPPING 8f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller 9f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller#define SB_BEGIN_3D(so, m, s) \ 10f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller (so)->state[(so)->size++] = \ 11f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller ((s) << 18) | (NV50_SUBCH_3D << 13) | NV50_3D_##m 12f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller 13ddcb90248fb491a3a9e2ada8c595f94b0bd95515Christoph Bumiller#define SB_BEGIN_3D_(so, m, s) \ 14ddcb90248fb491a3a9e2ada8c595f94b0bd95515Christoph Bumiller (so)->state[(so)->size++] = \ 15ddcb90248fb491a3a9e2ada8c595f94b0bd95515Christoph Bumiller ((s) << 18) | (NV50_SUBCH_3D << 13) | m 16ddcb90248fb491a3a9e2ada8c595f94b0bd95515Christoph Bumiller 17f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller#define SB_DATA(so, u) (so)->state[(so)->size++] = (u) 18f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller 191f5d6fc59bd899e211c70026eb74cd2219858008Christoph Bumiller#include "nv50_stateobj_tex.h" 201f5d6fc59bd899e211c70026eb74cd2219858008Christoph Bumiller 21f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumillerstruct nv50_blend_stateobj { 22f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller struct pipe_blend_state pipe; 23f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller int size; 24b2dcf880e8bcd61be59602f5a2d18c77a5fc60c1Christoph Bumiller uint32_t state[84]; // TODO: allocate less if !independent_blend_enable 25f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller}; 26f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller 27f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumillerstruct nv50_rasterizer_stateobj { 28f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller struct pipe_rasterizer_state pipe; 29f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller int size; 30b2dcf880e8bcd61be59602f5a2d18c77a5fc60c1Christoph Bumiller uint32_t state[44]; 31f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller}; 32f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller 33f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumillerstruct nv50_zsa_stateobj { 34f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller struct pipe_depth_stencil_alpha_state pipe; 35f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller int size; 36f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller uint32_t state[29]; 37f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller}; 38f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller 39f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumillerstruct nv50_vertex_element { 40f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller struct pipe_vertex_element pipe; 41f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller uint32_t state; 42f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller}; 43f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller 44f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumillerstruct nv50_vertex_stateobj { 45f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller struct translate *translate; 46f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller unsigned num_elements; 47f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller uint32_t instance_elts; 48f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller uint32_t instance_bufs; 49f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller boolean need_conversion; 50f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller unsigned vertex_size; 51f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller unsigned packet_vertex_limit; 52c448a556e9f97dd059de99048b75ebf6d51e1d7cChristoph Bumiller struct nv50_vertex_element element[0]; 53f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller}; 54f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller 55f80c03e1875fe96ff2f4c022e3cb76357828140dChristoph Bumiller#endif 56