Date: Sun, 23 Aug 2009 15:02:58 +0000 (UTC) From: Robert Noland <rnoland@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r196471 - head/sys/dev/drm Message-ID: <200908231502.n7NF2w1C064327@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200908231502.n7NF2w1C064327>