Summary: | Non-DRI build broken recently (6.7.99.1). | ||||||
---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | Mike A. Harris <mharris> | ||||
Component: | Driver/Radeon | Assignee: | Mike Harris <mharris> | ||||
Status: | RESOLVED DUPLICATE | QA Contact: | |||||
Severity: | blocker | ||||||
Priority: | highest | CC: | ajax, mharris | ||||
Version: | git | ||||||
Hardware: | All | ||||||
OS: | Linux (All) | ||||||
Whiteboard: | |||||||
i915 platform: | i915 features: | ||||||
Bug Depends on: | |||||||
Bug Blocks: | 351 | ||||||
Attachments: |
|
Description
Mike A. Harris
2004-08-10 22:45:52 UTC
Here's the problem: if (info->accel->NeedToSync) { info->accel->Sync(pScrn); if (info->CPStarted) RADEONInit3DEngineForRender(pScrn); } The code above, from R100SetupTextureMMIO() gets called, but the check for info-CPStarted blows up because CPStarted structure member isn't defined for the non-DRI case. Then RADEONInit3DEngineForRender(pScrn) is called but only if CPStarted is set. This is obviously incorrect, since the code in RADEONInit3DEngineForRender(pScrn) has conditional compilation for both the DRI and non-DRI cases, and for the DRI case, it already checks internally if CPStarted has been set or not: void RADEONInit3DEngineForRender(ScrnInfoPtr pScrn) { #ifdef XF86DRI RADEONInfoPtr info = RADEONPTR (pScrn); if (info->CPStarted) RadeonInit3DEngineCP(pScrn); else #endif RadeonInit3DEngineMMIO(pScrn); } As such, the if blocks in both R100SetupTextureMMIO() and R200SetupTextureMMIO() right now which check if CPStarted is set or not, will result in RADEONInit3DEngineForRender() never being called unless DRI is enabled, which is obviously wrong. The correct fix for this problem, is to remove the conditional checks for CPStarted prior to calling RADEONInit3DEngineForRender(), which will result in RADEONInit3DEngineForRender() making that decision internally. This should fix both the compile time problem, and also the runtime problem that would have occured in the non-DRI case, had the existing code actually compiled (had CPStarted been a structure member outside of the XF86DRI conditional). I'll attach a patch to fix this shortly. Changing Hardware to "All" as this problem isn't PPC specific, just discovered during a PPC non-DRI build. Created attachment 600 [details] [review] xorg-x11-6.8.0-build-fix-for-non-dri-builds.patch Patch to fix the problems outlined above. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.