[Intel-gfx] [PATCH] Fix directRenderingType check
Eric Anholt
eric at anholt.net
Fri Dec 12 03:20:31 CET 2008
On Fri, 2008-12-12 at 09:45 +0800, Wang, Zhenyu Z wrote:
> On 2008.12.11 10:46:55 -0800, Eric Anholt wrote:
> > On Thu, 2008-12-11 at 17:02 +0800, Zhenyu Wang wrote:
> > > Don't miss classic texture memory allocation in DRI.
> > > ---
> > > src/i830_driver.c | 28 +++++++++++++---------------
> > > 1 files changed, 13 insertions(+), 15 deletions(-)
> > >
> > > diff --git a/src/i830_driver.c b/src/i830_driver.c
> > > index 7590257..4ed20f1 100644
> > > --- a/src/i830_driver.c
> > > +++ b/src/i830_driver.c
> > > @@ -1557,21 +1557,14 @@ I830AccelMethodInit(ScrnInfoPtr pScrn)
> > > pI830->directRenderingType = DRI_DISABLED;
> > >
> > > #ifdef XF86DRI
> > > - if (pI830->directRenderingType == DRI_XF86DRI) {
> > > - if ((pI830->accel == ACCEL_NONE) || pI830->SWCursor) {
> > > - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it "
> > > - "needs HW cursor and 2D acceleration.\n");
> > > - pI830->directRenderingType = DRI_DISABLED;
> > > - } else if (pScrn->depth != 16 && pScrn->depth != 24) {
> > > - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it "
> > > - "runs only at depths 16 and 24.\n");
> > > - pI830->directRenderingType = DRI_DISABLED;
> > > - }
> > > -
> > > - if (pI830->directRenderingType == DRI_XF86DRI) {
> > > - pI830->allocate_classic_textures =
> > > - xf86ReturnOptValBool(pI830->Options, OPTION_LEGACY3D, TRUE);
> > > - }
> > > + if ((pI830->accel == ACCEL_NONE) || pI830->SWCursor) {
> > > + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it "
> > > + "needs HW cursor and 2D acceleration.\n");
> > > + pI830->directRenderingType = DRI_DISABLED;
> > > + } else if (pScrn->depth != 16 && pScrn->depth != 24) {
> > > + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it "
> > > + "runs only at depths 16 and 24.\n");
> > > + pI830->directRenderingType = DRI_DISABLED;
> > > }
> >
> > The swcursor bit certainly should stay under if == XF86DRI, as we no
> > longer need hw cursor due to the client directly drawing to the
> > framebuffer.
> >
>
> ok, I was also not sure about sw cursor, just origin if == XF86DRI will
> never be true, as we set DRI_NONE and only check enable/disable config.
>
> How about this one? Also move the xvmc config check and fix log message.
>
> diff --git a/src/i830_driver.c b/src/i830_driver.c
> index 7590257..d3b539a 100644
> --- a/src/i830_driver.c
> +++ b/src/i830_driver.c
> @@ -1557,21 +1557,14 @@ I830AccelMethodInit(ScrnInfoPtr pScrn)
> pI830->directRenderingType = DRI_DISABLED;
>
> #ifdef XF86DRI
> - if (pI830->directRenderingType == DRI_XF86DRI) {
> - if ((pI830->accel == ACCEL_NONE) || pI830->SWCursor) {
> - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it "
> - "needs HW cursor and 2D acceleration.\n");
> - pI830->directRenderingType = DRI_DISABLED;
> - } else if (pScrn->depth != 16 && pScrn->depth != 24) {
> - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it "
> - "runs only at depths 16 and 24.\n");
> - pI830->directRenderingType = DRI_DISABLED;
> - }
> -
> - if (pI830->directRenderingType == DRI_XF86DRI) {
> - pI830->allocate_classic_textures =
> - xf86ReturnOptValBool(pI830->Options, OPTION_LEGACY3D, TRUE);
> - }
> + if (pI830->accel == ACCEL_NONE) {
> + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it "
> + "needs 2D acceleration.\n");
> + pI830->directRenderingType = DRI_DISABLED;
> + } else if (pScrn->depth != 16 && pScrn->depth != 24) {
> + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it "
> + "runs only at depths 16 and 24.\n");
> + pI830->directRenderingType = DRI_DISABLED;
> }
> #endif /* XF86DRI */
>
> @@ -1691,14 +1684,6 @@ I830XvInit(ScrnInfoPtr pScrn)
> xf86DrvMsg(pScrn->scrnIndex, from, "video overlay key set to 0x%x\n",
> pI830->colorKey);
> #endif
> -#ifdef INTEL_XVMC
> - pI830->XvMCEnabled = FALSE;
> - from = (pI830->directRenderingType != DRI_DISABLED &&
> - xf86GetOptValBool(pI830->Options, OPTION_XVMC,
> - &pI830->XvMCEnabled)) ? X_CONFIG : X_DEFAULT;
> - xf86DrvMsg(pScrn->scrnIndex, from, "Intel XvMC decoder %sabled\n",
> - pI830->XvMCEnabled ? "en" : "dis");
> -#endif
> }
>
> static void
> @@ -3105,8 +3090,16 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
> /* If DRI hasn't been explicitly disabled, try to initialize it.
> * It will be used by the memory allocator.
> */
> + if (pI830->directRenderingType == DRI_NONE && pI830->SWCursor)
> + pI830->directRenderingType = DRI_DISABLED;
> +
> if (pI830->directRenderingType == DRI_NONE && I830DRIScreenInit(pScreen))
> pI830->directRenderingType = DRI_XF86DRI;
> +
> + if (pI830->directRenderingType == DRI_XF86DRI) {
> + pI830->allocate_classic_textures =
> + xf86ReturnOptValBool(pI830->Options, OPTION_LEGACY3D, TRUE);
> + }
> #endif
>
> /* Enable tiling by default */
> @@ -3426,6 +3418,14 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
> xf86DPMSInit(pScreen, xf86DPMSSet, 0);
>
> #ifdef I830_XV
> +#ifdef INTEL_XVMC
> + pI830->XvMCEnabled = FALSE;
> + from = (pI830->directRenderingType == DRI_XF86DRI &&
> + xf86GetOptValBool(pI830->Options, OPTION_XVMC,
> + &pI830->XvMCEnabled)) ? X_CONFIG : X_DEFAULT;
> + xf86DrvMsg(pScrn->scrnIndex, from, "Intel XvMC decoder %sabled\n",
> + pI830->XvMCEnabled ? "en" : "dis");
> +#endif
> /* Init video */
> if (pI830->XvEnabled && !pI830->use_drm_mode)
> I830InitVideo(pScreen);
>
OK, I think this looks good.
(God, this took a long time to thing through. Need to kill some
options, badly)
--
Eric Anholt
eric at anholt.net eric.anholt at intel.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20081211/68f18527/attachment.sig>
More information about the Intel-gfx
mailing list