[PATCH] Remove spurious use of MI_SET_CONTEXT.

Keith Whitwell keith at tungstengraphics.com
Mon Dec 3 11:23:25 PST 2007


Kristian -- following up on myself, this should probably be part of the 
invarient state, rather than removed altogether.

Keith

Kristian Høgsberg wrote:
> From: Kristian Høgsberg <krh at temari.boston.redhat.com>
> 
> The driver uses MI_SET_CONTEXT to save the current state before
> emitting the invariant 3d state.  Nothing ever restores this state though,
> so this patch removes that.  This was also the only remaining use of
> the ring buffer in TTM mode, so we're one step closer to a ring-buffer
> free DDX driver.
> ---
>  src/common.h      |    2 +-
>  src/i830.h        |    2 --
>  src/i830_driver.c |   11 -----------
>  src/i830_memory.c |   10 ----------
>  4 files changed, 1 insertions(+), 24 deletions(-)
> 
> diff --git a/src/common.h b/src/common.h
> index f558e8f..46bfa8e 100644
> --- a/src/common.h
> +++ b/src/common.h
> @@ -232,7 +232,7 @@ union intfloat {
>  
>  #define BEGIN_LP_RING(n)						\
>  	RING_LOCALS							\
> -	DO_LP_RING(n)							\
> +	DO_LP_RING(n)
>  
>  /* Memory mapped register access macros */
>  #define INREG8(addr)        *(volatile CARD8  *)(RecPtr->MMIOBase + (addr))
> diff --git a/src/i830.h b/src/i830.h
> index 9387651..cbc1b93 100644
> --- a/src/i830.h
> +++ b/src/i830.h
> @@ -404,8 +404,6 @@ typedef struct _I830Rec {
>     void (*PointerMoved)(int, int, int);
>     CreateScreenResourcesProcPtr    CreateScreenResources;
>  
> -   i830_memory *logical_context;
> -
>  #ifdef XF86DRI
>     i830_memory *back_buffer;
>     i830_memory *third_buffer;
> diff --git a/src/i830_driver.c b/src/i830_driver.c
> index 6393a61..27df05b 100644
> --- a/src/i830_driver.c
> +++ b/src/i830_driver.c
> @@ -2254,17 +2254,6 @@ IntelEmitInvarientState(ScrnInfoPtr pScrn)
>     if (*pI830->last_3d != LAST_3D_OTHER)
>        return;
>  
> -   ctx_addr = pI830->logical_context->offset;
> -   assert((pI830->logical_context->offset & 2047) == 0);
> -   {
> -      BEGIN_LP_RING(2);
> -      OUT_RING(MI_SET_CONTEXT);
> -      OUT_RING(pI830->logical_context->offset |
> -	       CTXT_NO_RESTORE |
> -	       CTXT_PALETTE_SAVE_DISABLE | CTXT_PALETTE_RESTORE_DISABLE);
> -      ADVANCE_LP_RING();
> -   }
> -
>     if (!IS_I965G(pI830))
>     {
>        if (IS_I9XX(pI830))
> diff --git a/src/i830_memory.c b/src/i830_memory.c
> index 85b6528..6287bab 100644
> --- a/src/i830_memory.c
> +++ b/src/i830_memory.c
> @@ -347,7 +347,6 @@ i830_reset_allocations(ScrnInfoPtr pScrn)
>      pI830->exa_offscreen = NULL;
>      pI830->exa_965_state = NULL;
>      pI830->overlay_regs = NULL;
> -    pI830->logical_context = NULL;
>  #ifdef XF86DRI
>      pI830->back_buffer = NULL;
>      pI830->third_buffer = NULL;
> @@ -1356,15 +1355,6 @@ i830_allocate_2d_memory(ScrnInfoPtr pScrn)
>  	pI830->SWCursor = TRUE;
>      }
>  
> -    /* Space for the X Server's 3D context.  32k is fine for right now. */
> -    pI830->logical_context = i830_allocate_memory(pScrn, "logical 3D context",
> -						  KB(32), GTT_PAGE_SIZE, 0);
> -    if (pI830->logical_context == NULL) {
> -	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
> -		   "Failed to allocate logical context space.\n");
> -	return FALSE;
> -    }
> -
>      /* even in XAA, 965G needs state mem buffer for rendering */
>      if (IS_I965G(pI830) && !pI830->noAccel && pI830->exa_965_state == NULL) {
>  	pI830->exa_965_state =





More information about the xorg mailing list