summaryrefslogtreecommitdiffstats
path: root/src/mesa/pipe/nouveau
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/pipe/nouveau')
-rw-r--r--src/mesa/pipe/nouveau/nouveau_class.h99
-rw-r--r--src/mesa/pipe/nouveau/nouveau_stateobj.h22
-rw-r--r--src/mesa/pipe/nouveau/nouveau_winsys.h3
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 *