svn commit: r196471 - head/sys/dev/drm
Robert Noland
rnoland at FreeBSD.org
Sun Aug 23 15:02:58 UTC 2009
Author: rnoland
Date: Sun Aug 23 15:02:58 2009
New Revision: 196471
URL: http://svn.freebsd.org/changeset/base/196471
Log:
Add GET_PARAM support for Z pipes.
This is needed for occulsion queries on rv530 chips.
MFC after: 2 weeks
Modified:
head/sys/dev/drm/radeon_cp.c
head/sys/dev/drm/radeon_drm.h
head/sys/dev/drm/radeon_drv.h
head/sys/dev/drm/radeon_state.c
Modified: head/sys/dev/drm/radeon_cp.c
==============================================================================
--- head/sys/dev/drm/radeon_cp.c Sun Aug 23 14:55:57 2009 (r196470)
+++ head/sys/dev/drm/radeon_cp.c Sun Aug 23 15:02:58 2009 (r196471)
@@ -408,6 +408,15 @@ static void radeon_init_pipes(drm_radeon
{
uint32_t gb_tile_config, gb_pipe_sel = 0;
+ if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV530) {
+ uint32_t z_pipe_sel = RADEON_READ(RV530_GB_PIPE_SELECT2);
+ if ((z_pipe_sel & 3) == 3)
+ dev_priv->num_z_pipes = 2;
+ else
+ dev_priv->num_z_pipes = 1;
+ } else
+ dev_priv->num_z_pipes = 1;
+
/* RS4xx/RS6xx/R4xx/R5xx */
if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R420) {
gb_pipe_sel = RADEON_READ(R400_GB_PIPE_SELECT);
Modified: head/sys/dev/drm/radeon_drm.h
==============================================================================
--- head/sys/dev/drm/radeon_drm.h Sun Aug 23 14:55:57 2009 (r196470)
+++ head/sys/dev/drm/radeon_drm.h Sun Aug 23 15:02:58 2009 (r196471)
@@ -688,6 +688,8 @@ typedef struct drm_radeon_indirect {
#define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */
#define RADEON_PARAM_FB_LOCATION 14 /* FB location */
#define RADEON_PARAM_NUM_GB_PIPES 15 /* num GB pipes */
+#define RADEON_PARAM_DEVICE_ID 16
+#define RADEON_PARAM_NUM_Z_PIPES 17 /* num Z pipes */
typedef struct drm_radeon_getparam {
int param;
Modified: head/sys/dev/drm/radeon_drv.h
==============================================================================
--- head/sys/dev/drm/radeon_drv.h Sun Aug 23 14:55:57 2009 (r196470)
+++ head/sys/dev/drm/radeon_drv.h Sun Aug 23 15:02:58 2009 (r196471)
@@ -102,9 +102,11 @@ __FBSDID("$FreeBSD$");
* 1.27- Add support for IGP GART
* 1.28- Add support for VBL on CRTC2
* 1.29- R500 3D cmd buffer support
+ * 1.30- Add support for occlusion queries
+ * 1.31- Add support for num Z pipes from GET_PARAM
*/
#define DRIVER_MAJOR 1
-#define DRIVER_MINOR 29
+#define DRIVER_MINOR 31
#define DRIVER_PATCHLEVEL 0
/*
@@ -368,6 +370,7 @@ typedef struct drm_radeon_private {
unsigned long fb_aper_offset;
int num_gb_pipes;
+ int num_z_pipes;
int track_flush;
drm_local_map_t *mmio;
@@ -758,6 +761,7 @@ extern int r600_cs_init(struct drm_devic
/* pipe config regs */
#define R400_GB_PIPE_SELECT 0x402c
+#define RV530_GB_PIPE_SELECT2 0x4124
#define R500_DYN_SCLK_PWMEM_PIPE 0x000d /* PLL */
#define R300_GB_TILE_CONFIG 0x4018
# define R300_ENABLE_TILING (1 << 0)
Modified: head/sys/dev/drm/radeon_state.c
==============================================================================
--- head/sys/dev/drm/radeon_state.c Sun Aug 23 14:55:57 2009 (r196470)
+++ head/sys/dev/drm/radeon_state.c Sun Aug 23 15:02:58 2009 (r196471)
@@ -3078,6 +3078,9 @@ static int radeon_cp_getparam(struct drm
case RADEON_PARAM_NUM_GB_PIPES:
value = dev_priv->num_gb_pipes;
break;
+ case RADEON_PARAM_NUM_Z_PIPES:
+ value = dev_priv->num_z_pipes;
+ break;
default:
DRM_DEBUG("Invalid parameter %d\n", param->param);
return -EINVAL;
More information about the svn-src-all
mailing list