mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2026-05-06 12:58:06 +02:00
fixup the radeon driver (not tested)
This commit is contained in:
parent
5e734a7ac8
commit
271830e9b6
5 changed files with 507 additions and 368 deletions
|
|
@ -746,17 +746,17 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
|
|||
* and screwing with the clear operation.
|
||||
*/
|
||||
dev_priv->depth_clear.rb3d_cntl = (RADEON_PLANE_MASK_ENABLE |
|
||||
RADEON_Z_ENABLE |
|
||||
(dev_priv->color_fmt << 10) |
|
||||
RADEON_ZBLOCK16);
|
||||
|
||||
dev_priv->depth_clear.rb3d_zstencilcntl = (dev_priv->depth_fmt |
|
||||
RADEON_Z_TEST_ALWAYS |
|
||||
RADEON_STENCIL_TEST_ALWAYS |
|
||||
RADEON_STENCIL_S_FAIL_KEEP |
|
||||
RADEON_STENCIL_ZPASS_KEEP |
|
||||
RADEON_STENCIL_ZFAIL_KEEP |
|
||||
RADEON_Z_WRITE_ENABLE);
|
||||
dev_priv->depth_clear.rb3d_zstencilcntl =
|
||||
(dev_priv->depth_fmt |
|
||||
RADEON_Z_TEST_ALWAYS |
|
||||
RADEON_STENCIL_TEST_ALWAYS |
|
||||
RADEON_STENCIL_S_FAIL_REPLACE |
|
||||
RADEON_STENCIL_ZPASS_REPLACE |
|
||||
RADEON_STENCIL_ZFAIL_REPLACE |
|
||||
RADEON_Z_WRITE_ENABLE);
|
||||
|
||||
dev_priv->depth_clear.se_cntl = (RADEON_FFACE_CULL_CW |
|
||||
RADEON_BFACE_SOLID |
|
||||
|
|
|
|||
|
|
@ -48,8 +48,16 @@
|
|||
#define DRIVER_DATE "20010405"
|
||||
|
||||
#define DRIVER_MAJOR 1
|
||||
#define DRIVER_MINOR 1
|
||||
#define DRIVER_PATCHLEVEL 1
|
||||
#define DRIVER_MINOR 2
|
||||
#define DRIVER_PATCHLEVEL 0
|
||||
|
||||
/* Interface history:
|
||||
*
|
||||
* 1.1 - ??
|
||||
* 1.2 - Add vertex2 ioctl (keith)
|
||||
* - Add stencil capability to clear ioctl (gareth, keith)
|
||||
* - Increase MAX_TEXTURE_LEVELS (brian)
|
||||
*/
|
||||
|
||||
/* List acquired from http://www.yourvote.com/pci/pcihdr.h and xc/xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h
|
||||
* Please report to anholt@teleport.com inaccuracies or if a chip you have works that is marked unsupported here.
|
||||
|
|
@ -78,7 +86,8 @@ drm_chipinfo_t DRM(devicelist)[] = {
|
|||
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_INDICES)] = { radeon_cp_indices, 1, 0 }, \
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_TEXTURE)] = { radeon_cp_texture, 1, 0 }, \
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_STIPPLE)] = { radeon_cp_stipple, 1, 0 }, \
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_INDIRECT)] = { radeon_cp_indirect, 1, 1 },
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_INDIRECT)] = { radeon_cp_indirect, 1, 1 }, \
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_VERTEX2)] = { radeon_cp_vertex2, 1, 0 },
|
||||
|
||||
|
||||
#if 0
|
||||
|
|
|
|||
|
|
@ -292,9 +292,9 @@ extern int radeon_cp_indirect( DRM_OS_IOCTL );
|
|||
# define RADEON_Z_TEST_MASK (7 << 4)
|
||||
# define RADEON_Z_TEST_ALWAYS (7 << 4)
|
||||
# define RADEON_STENCIL_TEST_ALWAYS (7 << 12)
|
||||
# define RADEON_STENCIL_S_FAIL_KEEP (0 << 16)
|
||||
# define RADEON_STENCIL_ZPASS_KEEP (0 << 20)
|
||||
# define RADEON_STENCIL_ZFAIL_KEEP (0 << 20)
|
||||
# define RADEON_STENCIL_S_FAIL_REPLACE (2 << 16)
|
||||
# define RADEON_STENCIL_ZPASS_REPLACE (2 << 20)
|
||||
# define RADEON_STENCIL_ZFAIL_REPLACE (2 << 24)
|
||||
# define RADEON_Z_WRITE_ENABLE (1 << 30)
|
||||
#define RADEON_RBBM_SOFT_RESET 0x00f0
|
||||
# define RADEON_SOFT_RESET_CP (1 << 0)
|
||||
|
|
@ -343,6 +343,7 @@ extern int radeon_cp_indirect( DRM_OS_IOCTL );
|
|||
#define RADEON_SE_CNTL_STATUS 0x2140
|
||||
#define RADEON_SE_LINE_WIDTH 0x1db8
|
||||
#define RADEON_SE_VPORT_XSCALE 0x1d98
|
||||
#define RADEON_SE_ZBIAS_FACTOR 0x1db0
|
||||
#define RADEON_SURFACE_ACCESS_FLAGS 0x0bf8
|
||||
#define RADEON_SURFACE_ACCESS_CLR 0x0bfc
|
||||
#define RADEON_SURFACE_CNTL 0x0b00
|
||||
|
|
@ -468,6 +469,7 @@ extern int radeon_cp_indirect( DRM_OS_IOCTL );
|
|||
#define RADEON_PRIM_TYPE_RECT_LIST (8 << 0)
|
||||
#define RADEON_PRIM_TYPE_3VRT_POINT_LIST (9 << 0)
|
||||
#define RADEON_PRIM_TYPE_3VRT_LINE_LIST (10 << 0)
|
||||
#define RADEON_PRIM_TYPE_MASK 0xf
|
||||
#define RADEON_PRIM_WALK_IND (1 << 4)
|
||||
#define RADEON_PRIM_WALK_LIST (2 << 4)
|
||||
#define RADEON_PRIM_WALK_RING (3 << 4)
|
||||
|
|
@ -720,6 +722,11 @@ do { \
|
|||
write &= mask; \
|
||||
} while (0)
|
||||
|
||||
#define OUT_RING_REG( reg, val ) do { \
|
||||
OUT_RING( CP_PACKET0( reg, 0 ) ); \
|
||||
OUT_RING( val ); \
|
||||
} while (0)
|
||||
|
||||
#define RADEON_PERFORMANCE_BOXES 0
|
||||
|
||||
#endif /* __RADEON_DRV_H__ */
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -26,6 +26,7 @@
|
|||
* Authors:
|
||||
* Kevin E. Martin <martin@valinux.com>
|
||||
* Gareth Hughes <gareth@valinux.com>
|
||||
* Keith Whitwell <keith_whitwell@yahoo.com>
|
||||
*/
|
||||
|
||||
#ifndef __RADEON_DRM_H__
|
||||
|
|
@ -56,11 +57,14 @@
|
|||
#define RADEON_UPLOAD_TEX2IMAGES 0x00004000
|
||||
#define RADEON_UPLOAD_CLIPRECTS 0x00008000 /* handled client-side */
|
||||
#define RADEON_REQUIRE_QUIESCENCE 0x00010000
|
||||
#define RADEON_UPLOAD_ALL 0x0001ffff
|
||||
#define RADEON_UPLOAD_ZBIAS 0x00020000 /* version 1.2 and newer */
|
||||
#define RADEON_UPLOAD_ALL 0x0002ffff
|
||||
#define RADEON_UPLOAD_CONTEXT_ALL 0x000201ff
|
||||
|
||||
#define RADEON_FRONT 0x1
|
||||
#define RADEON_BACK 0x2
|
||||
#define RADEON_DEPTH 0x4
|
||||
#define RADEON_STENCIL 0x8
|
||||
|
||||
/* Primitive types
|
||||
*/
|
||||
|
|
@ -82,8 +86,6 @@
|
|||
|
||||
#define RADEON_SCRATCH_REG_OFFSET 32
|
||||
|
||||
/* Keep these small for testing
|
||||
*/
|
||||
#define RADEON_NR_SAREA_CLIPRECTS 12
|
||||
|
||||
/* There are 2 heaps (local/AGP). Each region within a heap is a
|
||||
|
|
@ -95,7 +97,7 @@
|
|||
#define RADEON_NR_TEX_REGIONS 64
|
||||
#define RADEON_LOG_TEX_GRANULARITY 16
|
||||
|
||||
#define RADEON_MAX_TEXTURE_LEVELS 11
|
||||
#define RADEON_MAX_TEXTURE_LEVELS 12
|
||||
#define RADEON_MAX_TEXTURE_UNITS 3
|
||||
|
||||
#endif /* __RADEON_SAREA_DEFINES__ */
|
||||
|
|
@ -155,28 +157,18 @@ typedef struct {
|
|||
/* Setup state */
|
||||
unsigned int se_cntl_status; /* 0x2140 */
|
||||
|
||||
#ifdef TCL_ENABLE
|
||||
/* TCL state */
|
||||
radeon_color_regs_t se_tcl_material_emmissive; /* 0x2210 */
|
||||
radeon_color_regs_t se_tcl_material_ambient;
|
||||
radeon_color_regs_t se_tcl_material_diffuse;
|
||||
radeon_color_regs_t se_tcl_material_specular;
|
||||
unsigned int se_tcl_shininess;
|
||||
unsigned int se_tcl_output_vtx_fmt;
|
||||
unsigned int se_tcl_output_vtx_sel;
|
||||
unsigned int se_tcl_matrix_select_0;
|
||||
unsigned int se_tcl_matrix_select_1;
|
||||
unsigned int se_tcl_ucp_vert_blend_ctl;
|
||||
unsigned int se_tcl_texture_proc_ctl;
|
||||
unsigned int se_tcl_light_model_ctl;
|
||||
unsigned int se_tcl_per_light_ctl[4];
|
||||
#endif
|
||||
|
||||
/* Misc state */
|
||||
unsigned int re_top_left; /* 0x26c0 */
|
||||
unsigned int re_misc;
|
||||
} drm_radeon_context_regs_t;
|
||||
|
||||
typedef struct {
|
||||
/* Zbias state */
|
||||
unsigned int se_zbias_factor; /* 0x1dac */
|
||||
unsigned int se_zbias_constant;
|
||||
} drm_radeon_context2_regs_t;
|
||||
|
||||
|
||||
/* Setup registers for each texture unit
|
||||
*/
|
||||
typedef struct {
|
||||
|
|
@ -186,15 +178,28 @@ typedef struct {
|
|||
unsigned int pp_txcblend;
|
||||
unsigned int pp_txablend;
|
||||
unsigned int pp_tfactor;
|
||||
|
||||
unsigned int pp_border_color;
|
||||
|
||||
#ifdef CUBIC_ENABLE
|
||||
unsigned int pp_cubic_faces;
|
||||
unsigned int pp_cubic_offset[5];
|
||||
#endif
|
||||
} drm_radeon_texture_regs_t;
|
||||
|
||||
/* Space is crucial; there is some redunancy here:
|
||||
*/
|
||||
typedef struct {
|
||||
unsigned int start;
|
||||
unsigned int finish;
|
||||
unsigned int prim:8;
|
||||
unsigned int stateidx:8;
|
||||
unsigned int numverts:16; /* overloaded as offset/64 for elt prims */
|
||||
unsigned int vc_format; /* vertex format */
|
||||
} drm_radeon_prim_t;
|
||||
|
||||
typedef struct {
|
||||
drm_radeon_context_regs_t context;
|
||||
drm_radeon_texture_regs_t tex[RADEON_MAX_TEXTURE_UNITS];
|
||||
drm_radeon_context2_regs_t context2;
|
||||
unsigned int dirty;
|
||||
} drm_radeon_state_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
unsigned char next, prev;
|
||||
unsigned char in_use;
|
||||
|
|
@ -202,8 +207,9 @@ typedef struct {
|
|||
} drm_radeon_tex_region_t;
|
||||
|
||||
typedef struct {
|
||||
/* The channel for communication of state information to the kernel
|
||||
* on firing a vertex buffer.
|
||||
/* The channel for communication of state information to the
|
||||
* kernel on firing a vertex buffer with either of the
|
||||
* obsoleted vertex/index ioctls.
|
||||
*/
|
||||
drm_radeon_context_regs_t context_state;
|
||||
drm_radeon_texture_regs_t tex_state[RADEON_MAX_TEXTURE_UNITS];
|
||||
|
|
@ -285,7 +291,7 @@ typedef struct drm_radeon_clear {
|
|||
unsigned int clear_color;
|
||||
unsigned int clear_depth;
|
||||
unsigned int color_mask;
|
||||
unsigned int depth_mask;
|
||||
unsigned int depth_mask; /* misnamed field: should be stencil */
|
||||
drm_radeon_clear_rect_t *depth_boxes;
|
||||
} drm_radeon_clear_t;
|
||||
|
||||
|
|
@ -296,6 +302,15 @@ typedef struct drm_radeon_vertex {
|
|||
int discard; /* Client finished with buffer? */
|
||||
} drm_radeon_vertex_t;
|
||||
|
||||
typedef struct drm_radeon_vertex2 {
|
||||
int idx; /* Index of vertex buffer */
|
||||
int discard; /* Client finished with buffer? */
|
||||
int nr_states;
|
||||
drm_radeon_state_t *state;
|
||||
int nr_prims;
|
||||
drm_radeon_prim_t *prim;
|
||||
} drm_radeon_vertex2_t;
|
||||
|
||||
typedef struct drm_radeon_indices {
|
||||
int prim;
|
||||
int idx;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue