diff options
Diffstat (limited to 'src/mesa/pipe/nouveau')
-rw-r--r-- | src/mesa/pipe/nouveau/nouveau_class.h | 99 | ||||
-rw-r--r-- | src/mesa/pipe/nouveau/nouveau_stateobj.h | 22 | ||||
-rw-r--r-- | src/mesa/pipe/nouveau/nouveau_winsys.h | 3 |
3 files changed, 75 insertions, 49 deletions
diff --git a/src/mesa/pipe/nouveau/nouveau_class.h b/src/mesa/pipe/nouveau/nouveau_class.h index e3c284095de..5998945677b 100644 --- a/src/mesa/pipe/nouveau/nouveau_class.h +++ b/src/mesa/pipe/nouveau/nouveau_class.h @@ -15,10 +15,10 @@ Stephane Marchesin, Serge Martin, Sylvain Munaut, + Simon Raffeiner, Ben Skeggs, Erik Waling, koala_br, - sturmflut. All Rights Reserved. @@ -1390,10 +1390,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV04_DX5_TEXTURED_TRIANGLE_FILTER_MAGNIFY_MASK 0x70000000 #define NV04_DX5_TEXTURED_TRIANGLE_FILTER_MAGNIFY_NEAREST 0x10000000 #define NV04_DX5_TEXTURED_TRIANGLE_FILTER_MAGNIFY_LINEAR 0x20000000 -#define NV04_DX5_TEXTURED_TRIANGLE_FILTER_MAGNIFY_NEAREST_MIPMAP_NEAREST 0x30000000 -#define NV04_DX5_TEXTURED_TRIANGLE_FILTER_MAGNIFY_LINEAR_MIPMAP_NEAREST 0x40000000 -#define NV04_DX5_TEXTURED_TRIANGLE_FILTER_MAGNIFY_NEAREST_MIPMAP_LINEAR 0x50000000 -#define NV04_DX5_TEXTURED_TRIANGLE_FILTER_MAGNIFY_LINEAR_MIPMAP_LINEAR 0x60000000 #define NV04_DX5_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE (1 << 31) #define NV04_DX5_TEXTURED_TRIANGLE_BLEND 0x00000310 #define NV04_DX5_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_SHIFT 0 @@ -1853,10 +1849,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV10TCL_TX_FILTER_MAGNIFY_MASK 0xf0000000 #define NV10TCL_TX_FILTER_MAGNIFY_NEAREST 0x10000000 #define NV10TCL_TX_FILTER_MAGNIFY_LINEAR 0x20000000 -#define NV10TCL_TX_FILTER_MAGNIFY_NEAREST_MIPMAP_NEAREST 0x30000000 -#define NV10TCL_TX_FILTER_MAGNIFY_LINEAR_MIPMAP_NEAREST 0x40000000 -#define NV10TCL_TX_FILTER_MAGNIFY_NEAREST_MIPMAP_LINEAR 0x50000000 -#define NV10TCL_TX_FILTER_MAGNIFY_LINEAR_MIPMAP_LINEAR 0x60000000 #define NV10TCL_TX_PALETTE_OFFSET(x) (0x00000250+((x)*4)) #define NV10TCL_TX_PALETTE_OFFSET__SIZE 0x00000002 #define NV10TCL_RC_IN_ALPHA(x) (0x00000260+((x)*4)) @@ -3700,16 +3692,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV34TCL_DMA_QUERY 0x000001a8 #define NV34TCL_DMA_IN_MEMORY7 0x000001ac #define NV34TCL_DMA_IN_MEMORY8 0x000001b0 -#define NV34TCL_VIEWPORT_HORIZ 0x00000200 -#define NV34TCL_VIEWPORT_HORIZ_X_SHIFT 0 -#define NV34TCL_VIEWPORT_HORIZ_X_MASK 0x0000ffff -#define NV34TCL_VIEWPORT_HORIZ_W_SHIFT 16 -#define NV34TCL_VIEWPORT_HORIZ_W_MASK 0xffff0000 -#define NV34TCL_VIEWPORT_VERT 0x00000204 -#define NV34TCL_VIEWPORT_VERT_Y_SHIFT 0 -#define NV34TCL_VIEWPORT_VERT_Y_MASK 0x0000ffff -#define NV34TCL_VIEWPORT_VERT_H_SHIFT 16 -#define NV34TCL_VIEWPORT_VERT_H_MASK 0xffff0000 +#define NV34TCL_RT_HORIZ 0x00000200 +#define NV34TCL_RT_HORIZ_X_SHIFT 0 +#define NV34TCL_RT_HORIZ_X_MASK 0x0000ffff +#define NV34TCL_RT_HORIZ_W_SHIFT 16 +#define NV34TCL_RT_HORIZ_W_MASK 0xffff0000 +#define NV34TCL_RT_VERT 0x00000204 +#define NV34TCL_RT_VERT_Y_SHIFT 0 +#define NV34TCL_RT_VERT_Y_MASK 0x0000ffff +#define NV34TCL_RT_VERT_H_SHIFT 16 +#define NV34TCL_RT_VERT_H_MASK 0xffff0000 #define NV34TCL_RT_FORMAT 0x00000208 #define NV34TCL_RT_FORMAT_TYPE_SHIFT 8 #define NV34TCL_RT_FORMAT_TYPE_MASK 0x00000f00 @@ -4033,6 +4025,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV34TCL_FOG_EQUATION_LINEAR 0x000008d4 #define NV34TCL_FOG_EQUATION_QUADRATIC 0x000008d8 #define NV34TCL_FP_ACTIVE_PROGRAM 0x000008e4 +#define NV34TCL_FP_ACTIVE_PROGRAM_DMA0 (1 << 0) +#define NV34TCL_FP_ACTIVE_PROGRAM_DMA1 (1 << 1) +#define NV34TCL_FP_ACTIVE_PROGRAM_OFFSET_SHIFT 2 +#define NV34TCL_FP_ACTIVE_PROGRAM_OFFSET_MASK 0xfffffffc #define NV34TCL_RC_COLOR0 0x000008ec #define NV34TCL_RC_COLOR0_B_SHIFT 0 #define NV34TCL_RC_COLOR0_B_MASK 0x000000ff @@ -4082,17 +4078,27 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV34TCL_RC_OUT_ALPHA__SIZE 0x00000008 #define NV34TCL_RC_OUT_RGB(x) (0x00000914+((x)*32)) #define NV34TCL_RC_OUT_RGB__SIZE 0x00000008 +#define NV34TCL_VIEWPORT_HORIZ 0x00000a00 +#define NV34TCL_VIEWPORT_HORIZ_X_SHIFT 0 +#define NV34TCL_VIEWPORT_HORIZ_X_MASK 0x0000ffff +#define NV34TCL_VIEWPORT_HORIZ_W_SHIFT 16 +#define NV34TCL_VIEWPORT_HORIZ_W_MASK 0xffff0000 +#define NV34TCL_VIEWPORT_VERT 0x00000a04 +#define NV34TCL_VIEWPORT_VERT_Y_SHIFT 0 +#define NV34TCL_VIEWPORT_VERT_Y_MASK 0x0000ffff +#define NV34TCL_VIEWPORT_VERT_H_SHIFT 16 +#define NV34TCL_VIEWPORT_VERT_H_MASK 0xffff0000 #define NV34TCL_LIGHT_MODEL_FRONT_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION_R 0x00000a10 #define NV34TCL_LIGHT_MODEL_FRONT_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION_G 0x00000a14 #define NV34TCL_LIGHT_MODEL_FRONT_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION_B 0x00000a18 -#define NV34TCL_VIEWPORT_SCALE0_X 0x00000a20 -#define NV34TCL_VIEWPORT_SCALE0_Y 0x00000a24 -#define NV34TCL_VIEWPORT_SCALE0_Z 0x00000a28 -#define NV34TCL_VIEWPORT_SCALE0_W 0x00000a2c -#define NV34TCL_VIEWPORT_SCALE1_X 0x00000a30 -#define NV34TCL_VIEWPORT_SCALE1_Y 0x00000a34 -#define NV34TCL_VIEWPORT_SCALE1_Z 0x00000a38 -#define NV34TCL_VIEWPORT_SCALE1_W 0x00000a3c +#define NV34TCL_VIEWPORT_TRANSLATE_X 0x00000a20 +#define NV34TCL_VIEWPORT_TRANSLATE_Y 0x00000a24 +#define NV34TCL_VIEWPORT_TRANSLATE_Z 0x00000a28 +#define NV34TCL_VIEWPORT_TRANSLATE_W 0x00000a2c +#define NV34TCL_VIEWPORT_SCALE_X 0x00000a30 +#define NV34TCL_VIEWPORT_SCALE_Y 0x00000a34 +#define NV34TCL_VIEWPORT_SCALE_Z 0x00000a38 +#define NV34TCL_VIEWPORT_SCALE_W 0x00000a3c #define NV34TCL_POLYGON_OFFSET_FILL_ENABLE 0x00000a60 #define NV34TCL_POLYGON_OFFSET_LINE_ENABLE 0x00000a64 #define NV34TCL_POLYGON_OFFSET_POINT_ENABLE 0x00000a68 @@ -4187,8 +4193,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV34TCL_FRONT_MATERIAL_SHININESS(x) (0x00001400+((x)*4)) #define NV34TCL_FRONT_MATERIAL_SHININESS__SIZE 0x00000006 #define NV34TCL_FP_REG_CONTROL 0x00001450 -#define NV34TCL_FP_REG_CONTROL_USED_REGS_SHIFT 16 -#define NV34TCL_FP_REG_CONTROL_USED_REGS_MASK 0xffff0000 +#define NV34TCL_FP_REG_CONTROL_UNK1_SHIFT 16 +#define NV34TCL_FP_REG_CONTROL_UNK1_MASK 0xffff0000 +#define NV34TCL_FP_REG_CONTROL_UNK0_SHIFT 0 +#define NV34TCL_FP_REG_CONTROL_UNK0_MASK 0x0000ffff #define NV34TCL_VP_CLIP_PLANES_ENABLE 0x00001478 #define NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE0 (1 << 1) #define NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE1 (1 << 5) @@ -4331,9 +4339,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV34TCL_TX_OFFSET__SIZE 0x00000004 #define NV34TCL_TX_FORMAT(x) (0x00001a04+((x)*32)) #define NV34TCL_TX_FORMAT__SIZE 0x00000004 +#define NV34TCL_TX_FORMAT_DMA0 (1 << 0) +#define NV34TCL_TX_FORMAT_DMA1 (1 << 1) #define NV34TCL_TX_FORMAT_CUBE_MAP (1 << 2) -#define NV34TCL_TX_FORMAT_COMPONENTS_SHIFT 4 -#define NV34TCL_TX_FORMAT_COMPONENTS_MASK 0x000000f0 +#define NV34TCL_TX_FORMAT_DIMS_SHIFT 4 +#define NV34TCL_TX_FORMAT_DIMS_MASK 0x000000f0 +#define NV34TCL_TX_FORMAT_DIMS_1D 0x00000010 +#define NV34TCL_TX_FORMAT_DIMS_2D 0x00000020 +#define NV34TCL_TX_FORMAT_DIMS_3D 0x00000030 #define NV34TCL_TX_FORMAT_FORMAT_SHIFT 8 #define NV34TCL_TX_FORMAT_FORMAT_MASK 0x0000ff00 #define NV34TCL_TX_FORMAT_FORMAT_L8 0x00000000 @@ -4458,10 +4471,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV34TCL_TX_FILTER_MAGNIFY_MASK 0x0f000000 #define NV34TCL_TX_FILTER_MAGNIFY_NEAREST 0x01000000 #define NV34TCL_TX_FILTER_MAGNIFY_LINEAR 0x02000000 -#define NV34TCL_TX_FILTER_MAGNIFY_NEAREST_MIPMAP_NEAREST 0x03000000 -#define NV34TCL_TX_FILTER_MAGNIFY_LINEAR_MIPMAP_NEAREST 0x04000000 -#define NV34TCL_TX_FILTER_MAGNIFY_NEAREST_MIPMAP_LINEAR 0x05000000 -#define NV34TCL_TX_FILTER_MAGNIFY_LINEAR_MIPMAP_LINEAR 0x06000000 +#define NV34TCL_TX_FILTER_SIGNED_BLUE (1 << 28) +#define NV34TCL_TX_FILTER_SIGNED_GREEN (1 << 29) +#define NV34TCL_TX_FILTER_SIGNED_RED (1 << 30) +#define NV34TCL_TX_FILTER_SIGNED_ALPHA (1 << 31) #define NV34TCL_TX_NPOT_SIZE(x) (0x00001a18+((x)*32)) #define NV34TCL_TX_NPOT_SIZE__SIZE 0x00000004 #define NV34TCL_TX_NPOT_SIZE_H_SHIFT 0 @@ -4488,6 +4501,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV34TCL_VERTEX_ATTR_4F_W__SIZE 0x00000010 #define NV34TCL_FP_CONTROL 0x00001d60 #define NV34TCL_FP_CONTROL_USES_KIL (1 << 7) +#define NV34TCL_FP_CONTROL_USED_REGS_MINUS1_DIV2_SHIFT 0 +#define NV34TCL_FP_CONTROL_USED_REGS_MINUS1_DIV2_MASK 0x0000000f #define NV34TCL_MULTISAMPLE_CONTROL 0x00001d7c #define NV34TCL_CLEAR_DEPTH_VALUE 0x00001d8c #define NV34TCL_CLEAR_COLOR_VALUE 0x00001d90 @@ -5074,6 +5089,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV40TCL_TEX_FORMAT_FORMAT_Z24 0x00001000 #define NV40TCL_TEX_FORMAT_FORMAT_Z16 0x00001200 #define NV40TCL_TEX_FORMAT_FORMAT_HILO8 0x00001800 +#define NV40TCL_TEX_FORMAT_FORMAT_RGBA16F 0x00001a00 +#define NV40TCL_TEX_FORMAT_FORMAT_RGBA32F 0x00001b00 #define NV40TCL_TEX_FORMAT_DIMS_SHIFT 4 #define NV40TCL_TEX_FORMAT_DIMS_MASK 0x000000f0 #define NV40TCL_TEX_FORMAT_DIMS_1D 0x00000010 @@ -5202,10 +5219,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV40TCL_TEX_FILTER_MAG_MASK 0x0f000000 #define NV40TCL_TEX_FILTER_MAG_NEAREST 0x01000000 #define NV40TCL_TEX_FILTER_MAG_LINEAR 0x02000000 -#define NV40TCL_TEX_FILTER_MAG_NEAREST_MIPMAP_NEAREST 0x03000000 -#define NV40TCL_TEX_FILTER_MAG_LINEAR_MIPMAP_NEAREST 0x04000000 -#define NV40TCL_TEX_FILTER_MAG_NEAREST_MIPMAP_LINEAR 0x05000000 -#define NV40TCL_TEX_FILTER_MAG_LINEAR_MIPMAP_LINEAR 0x06000000 #define NV40TCL_TEX_SIZE0(x) (0x00001a18+((x)*32)) #define NV40TCL_TEX_SIZE0__SIZE 0x00000010 #define NV40TCL_TEX_SIZE0_H_SHIFT 0 @@ -6064,6 +6077,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV50TCL_CLEAR_BUFFERS 0x000019d0 #define NV50TCL_COLOR_MASK(x) (0x00001a00+((x)*4)) #define NV50TCL_COLOR_MASK__SIZE 0x00000008 +#define NV50TCL_COLOR_MASK_R_SHIFT 0 +#define NV50TCL_COLOR_MASK_R_MASK 0x0000000f +#define NV50TCL_COLOR_MASK_G_SHIFT 4 +#define NV50TCL_COLOR_MASK_G_MASK 0x000000f0 +#define NV50TCL_COLOR_MASK_B_SHIFT 8 +#define NV50TCL_COLOR_MASK_B_MASK 0x00000f00 +#define NV50TCL_COLOR_MASK_A_SHIFT 12 +#define NV50TCL_COLOR_MASK_A_MASK 0x0000f000 #define NV50_COMPUTE 0x000050c0 diff --git a/src/mesa/pipe/nouveau/nouveau_stateobj.h b/src/mesa/pipe/nouveau/nouveau_stateobj.h index 58167a24de7..07c31b014a5 100644 --- a/src/mesa/pipe/nouveau/nouveau_stateobj.h +++ b/src/mesa/pipe/nouveau/nouveau_stateobj.h @@ -1,6 +1,8 @@ #ifndef __NOUVEAU_STATEOBJ_H__ #define __NOUVEAU_STATEOBJ_H__ +#include "pipe/p_util.h" + struct nouveau_stateobj_reloc { struct pipe_buffer *bo; @@ -24,15 +26,15 @@ struct nouveau_stateobj { unsigned cur_reloc; }; -static inline struct nouveau_stateobj * +static INLINE struct nouveau_stateobj * so_new(unsigned push, unsigned reloc) { struct nouveau_stateobj *so; - so = malloc(sizeof(struct nouveau_stateobj)); + so = MALLOC(sizeof(struct nouveau_stateobj)); so->refcount = 1; - so->push = malloc(sizeof(unsigned) * push); - so->reloc = malloc(sizeof(struct nouveau_stateobj_reloc) * reloc); + so->push = MALLOC(sizeof(unsigned) * push); + so->reloc = MALLOC(sizeof(struct nouveau_stateobj_reloc) * reloc); so->cur = so->push; so->cur_reloc = so->cur_packet = 0; @@ -40,7 +42,7 @@ so_new(unsigned push, unsigned reloc) return so; } -static inline void +static INLINE void so_ref(struct nouveau_stateobj *ref, struct nouveau_stateobj **pso) { struct nouveau_stateobj *so; @@ -61,14 +63,14 @@ so_ref(struct nouveau_stateobj *ref, struct nouveau_stateobj **pso) } } -static inline void +static INLINE void so_data(struct nouveau_stateobj *so, unsigned data) { (*so->cur++) = (data); so->cur_packet += 4; } -static inline void +static INLINE void so_method(struct nouveau_stateobj *so, struct nouveau_grobj *gr, unsigned mthd, unsigned size) { @@ -76,7 +78,7 @@ so_method(struct nouveau_stateobj *so, struct nouveau_grobj *gr, so_data(so, (gr->subc << 13) | (size << 18) | mthd); } -static inline void +static INLINE void so_reloc(struct nouveau_stateobj *so, struct pipe_buffer *bo, unsigned data, unsigned flags, unsigned vor, unsigned tor) { @@ -92,7 +94,7 @@ so_reloc(struct nouveau_stateobj *so, struct pipe_buffer *bo, so_data(so, data); } -static inline void +static INLINE void so_emit(struct nouveau_winsys *nvws, struct nouveau_stateobj *so) { struct nouveau_pushbuf *pb = nvws->channel->pushbuf; @@ -113,7 +115,7 @@ so_emit(struct nouveau_winsys *nvws, struct nouveau_stateobj *so) pb->cur += nr; } -static inline void +static INLINE void so_emit_reloc_markers(struct nouveau_winsys *nvws, struct nouveau_stateobj *so) { struct nouveau_pushbuf *pb = nvws->channel->pushbuf; diff --git a/src/mesa/pipe/nouveau/nouveau_winsys.h b/src/mesa/pipe/nouveau/nouveau_winsys.h index 0b394cfce6b..818ae9afae2 100644 --- a/src/mesa/pipe/nouveau/nouveau_winsys.h +++ b/src/mesa/pipe/nouveau/nouveau_winsys.h @@ -50,6 +50,9 @@ struct nouveau_winsys { }; extern struct pipe_context * +nv30_create(struct pipe_winsys *, struct nouveau_winsys *, unsigned chipset); + +extern struct pipe_context * nv40_create(struct pipe_winsys *, struct nouveau_winsys *, unsigned chipset); extern struct pipe_context * |