[Mesa-dev] [PATCH 03/11] radeon: remove dri_mirror state

Ian Romanick idr at freedesktop.org
Thu Jul 9 10:43:58 PDT 2015


On 07/08/2015 10:07 AM, Emil Velikov wrote:
> Most of the data stored(duplicated) was unused, and for the one that is
> follow the approach set by other drivers.
> This eliminates the use of legacy (dri1) types.
> 
> XXX: The radeon code is the only user of __DRIscreen::drm_version (the
> only __DRIversion outside of dri1 land). Should we move it into radeon
> and/or bump the min. required drm module version ?
> 
> Cc: Ian Romanick <ian.d.romanick at intel.com>

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

I think the cleanups suggested by Michel and Emil sound like a good idea
too, FWIW.

> Cc: Marek Olšák <marek.olsak at amd.com>
> Cc: Michel Dänzer <michel.daenzer at amd.com>
> Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
> ---
>  src/mesa/drivers/dri/radeon/radeon_common.c         | 18 +++++++++---------
>  src/mesa/drivers/dri/radeon/radeon_common_context.c |  7 ++-----
>  src/mesa/drivers/dri/radeon/radeon_common_context.h | 19 +++----------------
>  src/mesa/drivers/dri/radeon/radeon_texture.c        |  2 +-
>  4 files changed, 15 insertions(+), 31 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c
> index 2a8bd6c9..d834d9b 100644
> --- a/src/mesa/drivers/dri/radeon/radeon_common.c
> +++ b/src/mesa/drivers/dri/radeon/radeon_common.c
> @@ -164,7 +164,7 @@ uint32_t radeonGetAge(radeonContextPtr radeon)
>  
>  	gp.param = RADEON_PARAM_LAST_CLEAR;
>  	gp.value = (int *)&age;
> -	ret = drmCommandWriteRead(radeon->dri.fd, DRM_RADEON_GETPARAM,
> +	ret = drmCommandWriteRead(radeon->radeonScreen->driScreen->fd, DRM_RADEON_GETPARAM,
>  				  &gp, sizeof(gp));
>  	if (ret) {
>  		fprintf(stderr, "%s: drmRadeonGetParam: %d\n", __func__,
> @@ -358,8 +358,8 @@ void radeonDrawBuffer( struct gl_context *ctx, GLenum mode )
>         * that the front-buffer has actually been allocated.
>         */
>  		if (!was_front_buffer_rendering && radeon->is_front_buffer_rendering) {
> -			radeon_update_renderbuffers(radeon->dri.context,
> -				radeon->dri.context->driDrawablePriv, GL_FALSE);
> +			radeon_update_renderbuffers(radeon->driContext,
> +				radeon->driContext->driDrawablePriv, GL_FALSE);
>        }
>  	}
>  
> @@ -375,8 +375,8 @@ void radeonReadBuffer( struct gl_context *ctx, GLenum mode )
>  					|| (mode == GL_FRONT);
>  
>  		if (!was_front_buffer_reading && rmesa->is_front_buffer_reading) {
> -			radeon_update_renderbuffers(rmesa->dri.context,
> -						    rmesa->dri.context->driReadablePriv, GL_FALSE);
> +			radeon_update_renderbuffers(rmesa->driContext,
> +						    rmesa->driContext->driReadablePriv, GL_FALSE);
>  	 	}
>  	}
>  	/* nothing, until we implement h/w glRead/CopyPixels or CopyTexImage */
> @@ -399,7 +399,7 @@ void radeon_window_moved(radeonContextPtr radeon)
>  void radeon_viewport(struct gl_context *ctx)
>  {
>  	radeonContextPtr radeon = RADEON_CONTEXT(ctx);
> -	__DRIcontext *driContext = radeon->dri.context;
> +	__DRIcontext *driContext = radeon->driContext;
>  	void (*old_viewport)(struct gl_context *ctx);
>  
>  	if (_mesa_is_winsys_fbo(ctx->DrawBuffer)) {
> @@ -693,6 +693,7 @@ void rcommonInitCmdBuf(radeonContextPtr rmesa)
>  {
>  	GLuint size;
>  	struct drm_radeon_gem_info mminfo = { 0 };
> +	int fd = rmesa->radeonScreen->driScreen->fd;
>  
>  	/* Initialize command buffer */
>  	size = 256 * driQueryOptioni(&rmesa->optionCache,
> @@ -711,8 +712,7 @@ void rcommonInitCmdBuf(radeonContextPtr rmesa)
>  			"Allocating %d bytes command buffer (max state is %d bytes)\n",
>  			size * 4, rmesa->hw.max_state_size * 4);
>  
> -	rmesa->cmdbuf.csm =
> -		radeon_cs_manager_gem_ctor(rmesa->radeonScreen->driScreen->fd);
> +	rmesa->cmdbuf.csm = radeon_cs_manager_gem_ctor(fd);
>  	if (rmesa->cmdbuf.csm == NULL) {
>  		/* FIXME: fatal error */
>  		return;
> @@ -725,7 +725,7 @@ void rcommonInitCmdBuf(radeonContextPtr rmesa)
>  				  (void (*)(void *))rmesa->glCtx.Driver.Flush, &rmesa->glCtx);
>  
>  
> -	if (!drmCommandWriteRead(rmesa->dri.fd, DRM_RADEON_GEM_INFO,
> +	if (!drmCommandWriteRead(fd, DRM_RADEON_GEM_INFO,
>  				 &mminfo, sizeof(mminfo))) {
>  		radeon_cs_set_limit(rmesa->cmdbuf.cs, RADEON_GEM_DOMAIN_VRAM,
>  				    mminfo.vram_visible);
> diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c
> index 3d0ceda..4660d98 100644
> --- a/src/mesa/drivers/dri/radeon/radeon_common_context.c
> +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c
> @@ -162,10 +162,7 @@ GLboolean radeonInitContext(radeonContextPtr radeon,
>  	_mesa_meta_init(ctx);
>  
>  	/* DRI fields */
> -	radeon->dri.context = driContextPriv;
> -	radeon->dri.screen = sPriv;
> -	radeon->dri.fd = sPriv->fd;
> -	radeon->dri.drmMinor = sPriv->drm_version.minor;
> +	radeon->driContext = driContextPriv;
>  
>  	/* Setup IRQs */
>  	fthrottle_mode = driQueryOptioni(&radeon->optionCache, "fthrottle_mode");
> @@ -325,7 +322,7 @@ radeon_bits_per_pixel(const struct radeon_renderbuffer *rb)
>   */
>  void radeon_prepare_render(radeonContextPtr radeon)
>  {
> -    __DRIcontext *driContext = radeon->dri.context;
> +    __DRIcontext *driContext = radeon->driContext;
>      __DRIdrawable *drawable;
>      __DRIscreen *screen;
>  
> diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.h b/src/mesa/drivers/dri/radeon/radeon_common_context.h
> index dc72592..d142a87 100644
> --- a/src/mesa/drivers/dri/radeon/radeon_common_context.h
> +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.h
> @@ -342,17 +342,6 @@ struct radeon_store {
>  	int elts_start;
>  };
>  
> -struct radeon_dri_mirror {
> -	__DRIcontext *context;	/* DRI context */
> -	__DRIscreen *screen;	/* DRI screen */
> -
> -	drm_context_t hwContext;
> -	drm_hw_lock_t *hwLock;
> -	int hwLockCount;
> -	int fd;
> -	int drmMinor;
> -};
> -
>  typedef void (*radeon_tri_func) (radeonContextPtr,
>  				 radeonVertex *,
>  				 radeonVertex *, radeonVertex *);
> @@ -385,6 +374,7 @@ struct radeon_cmdbuf {
>  
>  struct radeon_context {
>     struct gl_context glCtx;             /**< base class, must be first */
> +   __DRIcontext *driContext;               /* DRI context */
>     radeonScreenPtr radeonScreen;	/* Screen private DRI data */
>  
>     /* Texture object bookkeeping
> @@ -407,9 +397,6 @@ struct radeon_context {
>     /* Drawable information */
>     unsigned int lastStamp;
>  
> -   /* Mirrors of some DRI state */
> -   struct radeon_dri_mirror dri;
> -
>     /* Busy waiting */
>     GLuint do_usleeps;
>     GLuint do_irqs;
> @@ -502,12 +489,12 @@ static inline radeonContextPtr RADEON_CONTEXT(struct gl_context *ctx)
>  
>  static inline __DRIdrawable* radeon_get_drawable(radeonContextPtr radeon)
>  {
> -	return radeon->dri.context->driDrawablePriv;
> +	return radeon->driContext->driDrawablePriv;
>  }
>  
>  static inline __DRIdrawable* radeon_get_readable(radeonContextPtr radeon)
>  {
> -	return radeon->dri.context->driReadablePriv;
> +	return radeon->driContext->driReadablePriv;
>  }
>  
>  extern const char const *radeonVendorString;
> diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c
> index edfd48b..1a17898 100644
> --- a/src/mesa/drivers/dri/radeon/radeon_texture.c
> +++ b/src/mesa/drivers/dri/radeon/radeon_texture.c
> @@ -531,7 +531,7 @@ void radeon_image_target_texture_2d(struct gl_context *ctx, GLenum target,
>  	__DRIscreen *screen;
>  	__DRIimage *image;
>  
> -	screen = radeon->dri.screen;
> +	screen = radeon->radeonScreen->driScreen;
>  	image = screen->dri2.image->lookupEGLImage(screen, image_handle,
>  						   screen->loaderPrivate);
>  	if (image == NULL)
> 



More information about the mesa-dev mailing list