diff options
author | Keith Packard <keithp@keithp.com> | 2005-02-28 20:45:15 +0000 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2005-02-28 20:45:15 +0000 |
commit | b4b27e9eaa43401ae70e5d03823012bf8c78848f (patch) | |
tree | 0eba720193bbf3db85d1a625b0829a259c7fc5bf /hw/kdrive/ati | |
parent | 409c0618bced6df02eed7af77107ff74508c0f3f (diff) |
Force DPMS normal on screen enable
Add placeholder for bit used to redirect input
Add macrovision register defines
Diffstat (limited to 'hw/kdrive/ati')
-rw-r--r-- | hw/kdrive/ati/ChangeLog | 551 | ||||
-rw-r--r-- | hw/kdrive/ati/ati_reg.h | 4 |
2 files changed, 555 insertions, 0 deletions
diff --git a/hw/kdrive/ati/ChangeLog b/hw/kdrive/ati/ChangeLog new file mode 100644 index 000000000..1f9ba29f0 --- /dev/null +++ b/hw/kdrive/ati/ChangeLog @@ -0,0 +1,551 @@ +2005-02-28 Keith Packard <keithp@keithp.com> + + * ati_reg.h: + Add macrovision register defines + +2005-01-24 19:37 anholt + + * ati_dma.c, ati_draw.c, ati_reg.h: Finish converting RB2D_DSTCACHE + to RB3D_DSTCACHE. Remove an extra pixel cache flush in the idle + function. Init an extra reg for r200, and annotate the + TCL_BYPASS better. Also, clean up some style nits from the last + commit. + +2005-01-24 18:39 keithp + + * ati.h, ati_draw.c, ati_reg.h, radeon_composite.c: Add tracing. + Hack Radeon cache registers to use 3D addresses. Works on M6 + +2005-01-24 17:38 anholt + + * ati_dri.c: Silence a warning about uninitialized variable (though + it would be). + +2005-01-20 08:22 anholt + + * ati_dma.c, ati_dma.h, ati_dri.c: Add a set of macros for dealing + with the repeated code to wait for a while reading a + register/attempting DMA. Now it'll wait for a certain number of + seconds rather than a certain number of times through the loop + before deciding that it's timed out and resetting the hardware. + Also, add more timeout handling, and reset the draw state after + resetting the engine. + +2005-01-19 23:28 anholt + + * radeon_composite.c: Use RadeonSwitchTo3D() instead of doing the + WAIT_UNTIL ourselves (RST3D() also does DC_FLUSH, which may be + important). + +2005-01-19 23:09 anholt + + * ati_video.c: Add R200 XV support, and make R100 (hopefully) use + linear filtering instead of nearest. Also, use RadeonSwitchTo3D + instead of doing the WAIT_UNTIL ourselves. + +2005-01-19 17:09 anholt + + * ati_dma.c, ati_reg.h: Make R200 PDMA work -- primary queue sizes + are now 9 bits, not 8. + +2004-12-22 10:39 anholt + + * ati_draw.c, ati_reg.h, radeon_composite.c: Back out the previous + day's broken R200 "fix" -- the same number of coords are always + emitted. Fix the real problem, which was not enough regs being + initialized in ati_draw.c. Fix a typo that was resulting in + alpha coming out as 0 * src or 0 * broken instead of src * 1 or + src * mask. Assign the blending results to R0, as appears to be + necessary. Unbreak the dst-alpha-blend-with-no-dst-alpha code. + Yow. And set the right DMA count for the r200 traps code. + +2004-12-21 01:51 anholt + + * ati_draw.c, radeon_composite.c: Fix r200 render (for real this + time?) by setting tex1_comp_cnt right for non-mask rendering. + Reenable it. Also, R200TexFormats was used instead of R100 in + one place. Harmless so far, because the formats were in the same + order. + +2004-12-21 01:49 anholt + + * ati_dri.c: Whitespace nit. + +2004-09-19 20:12 anholt + + * ati_draw.c, ati_reg.h, radeon_composite.c: Fix the R200 Render + code. Composite and Trapezoids are now supported just as well as + on R100. + +2004-09-19 03:57 anholt + + * ati_dri.c, ati_reg.h: Unbreak the AGP DRI case. That was quite a + pile of broken code. + +2004-09-13 23:26 anholt + + * ati.c, ati_reg.h: Add proper PCI/AGP detection, based on Mike + Harris's code for Radeon, but using the MMIO mirror of the bits + instead of config space. + +2004-09-12 16:22 anholt + + * ati_draw.c: - Fix a segfault on VT switch with DRI. Still dies + due to cursor allocation troubles. - Move the + RemoveBlockAndWakeupHandlers to match + RegisterBlockAndWakeupHandlers. - Enable R100 trapezoid + "acceleration" when DRI is working, so that it can be exposed + and worked on. + +2004-09-12 16:01 anholt + + * ati_dri.c: Fix a bad argument missed in the previous commit for + ATIDRIDMA* functions. + +2004-09-12 15:21 anholt + + * ati_draw.c: Move the RegisterBlockAndWakeupHandlers to before DRI + initialization. The change to use that instead of manual + wrapping made the DMA dispatch come after the lock had been + dropped, causing lots of pain. + +2004-09-12 13:31 anholt + + * ati.h, ati_dma.c, ati_dri.c: Reset the CCE/CP on engine reset, + and make the ATIDRIDMA functions take a more useful argument. + +2004-09-12 13:19 anholt + + * ati_draw.c: Add missing kaa.h include for kaaInitTrapOffsets. + +2004-09-12 13:02 anholt + + * ati_dri.c: Fix handling of is_agp. is_agp is whether the card is + actually AGP, while using_agp should say whether AGP is being + used as part of DMA/DRI. + +2004-09-12 12:52 anholt + + * ati_dma.c, ati_dma.h, ati_dri.c: Improve error handling, + especially in the DRI case. Do some FatalErrors instead of + ErrorFs for things that are really bad, and put limits on some + loops. Now, sometimes instead of hanging the entire system, we + (mostly-) cleanly drop to console when the card has hung. + +2004-09-11 02:28 anholt + + * ati.h, ati_dma.h, ati_draw.c, ati_draw.h, ati_reg.h, + r128_composite.c, radeon_composite.c: - Add disabled WIP + trapezoid code for R128 and R100. The R128 rendering is not + doing an add of 1 per triangle like I hoped, and instead seems + to be saturating all the pixels or something. The R100 + acceleration renders pretty well, with some gaps. Note that + both are slower than software due to lack of DMA to submit + vertices. - Mostly fix R128 and Radeon transform support, + including supporting bilinear filtering on R128. Subpixel + offsets are still probably an issue (reported by rendercheck), + but I want to make 100% sure about my understanding of the + protocol before changing everybody, including fb. - Add support + for dst formats without alpha to R128 Composite. - Remove the + R128 Blend code, which has long outlived its usefulness. (I + kept it around for one reason: It could be useful for the w/h + > 1024 case with no mask and a non-src op. That seems pretty + infrequent and not worth the trouble). + +2004-07-24 10:02 keithp + + * ati.c: Check for mmio before restoring crtc/crtc2 pitch registers + +2004-07-22 11:17 keithp + + * ati.c, ati.h, ati_cursor.c, ati_reg.h: 2004-07-22 Keith Packard + <keithp@keithp.com> + + reviewed by: <delete if not using a buddy> + + * hw/kdrive/ati/ati.c: (ATISetOffscreen), (ATISetPitch), + (ATIRandRSetConfig), (ATIPreserve), (ATIRestore), + (ATIEnable): + * hw/kdrive/ati/ati.h: + * hw/kdrive/ati/ati_cursor.c: (RadeonLoadCursor), + (ATIUnloadCursor), (ATICursorEnable): + * hw/kdrive/ati/ati_reg.h: + Correct pitch so that accelerator can run on 1400x1050 + screens. + Add a few more register sets for cursors. + +2004-07-19 05:07 anholt + + * radeon_composite.c: Add support for a8b8g8r8 and x8b8g8r8 + pictures, which showed up frequently with metacity usage. + +2004-07-19 04:42 anholt + + * ati_cursor.c: Breakage in last commit to this file: + pCurPriv->area isn't set up until Enable, these days. + +2004-07-19 04:19 anholt + + * ati_draw.c: Set the right number of texture coordinates for r200 + Render support (still disabled, needs to be tested). + +2004-07-19 04:16 anholt + + * r128_composite.c, radeon_composite.c: - Add Radeon picture + transform support. - On R128, don't refer to an old Composite's + mask transform when the current Composite doesn't have a mask. + - Staticize some global variables in r128_composite.c. + +2004-07-19 00:53 anholt + + * ati.c, ati.h, ati_cursor.c, ati_draw.c, ati_draw.h: Use the + offscreen memory manager as much as possible to do the + reservation of memory at startup. Do some drive-by cleanups + while I'm here (sorry!). + +2004-07-19 00:20 anholt + + * r128_composite.c: Add support for transforms of textures on R128. + +2004-07-03 03:23 anholt + + * r128_composite.c: Clean up Rage 128 composite code. Now it + composites more operations correctly and is simpler. + +2004-06-27 17:48 keithp + + * ati.c, ati.h, ati_cursor.c, ati_draw.c: 2004-06-27 Keith Packard + <keithp@keithp.com> + + * hw/kdrive/ati/ati.c: (ATICardInit), (ATISetOffscreen), + (ATIScreenInit), (ATIRandRSetConfig), (ATIRandRInit), + (ATIFinishInitScreen), (ATIEnable): + * hw/kdrive/ati/ati.h: + * hw/kdrive/ati/ati_cursor.c: (ATICursorInit): + * hw/kdrive/ati/ati_draw.c: (RadeonSwitchTo2D), + (RadeonSwitchTo3D), + (ATIBlockHandler), (ATIWakeupHandler), (ATIDrawEnable), + (ATIDrawDisable), (ATIDrawFini): + Separate out off-screen allocation from Init. + Fix Enable to update off-screen addresses. + Wrap RandR to update off-screen addresses. + + * hw/kdrive/fbdev/fbdev.c: (fbdevMapFramebuffer): + Set off_screen_base and memory_size fields correctly. + +2004-06-25 21:13 keithp + + * ati.c, ati_cursor.c, ati_draw.c, ati_reg.h: 2004-06-25 Keith + Packard <keithp@keithp.com> + + * hw/kdrive/ati/ati.c: (ATIScreenInit): + * hw/kdrive/ati/ati_cursor.c: (ATIMoveCursor), + (ClassicAllocCursorColors), (ClassicSetCursorColors), + (ClassicRecolorCursor), (ClassicLoadCursor), + (RadeonLoadCursor), + (ATIRealizeCursor), (ATISetCursor), (ATICursorEnable), + (ATIRecolorCursor): + * hw/kdrive/ati/ati_draw.c: (ATIDrawFini): + * hw/kdrive/ati/ati_reg.h: + Add ARGB cursor support for Radeon cards. + +2004-06-10 12:22 anholt + + * ati_draw.c: - Pass the right pixel mask (all ones) in to + PrepareSolid in the solid-fill-based composite acceleration. - + Use a real pixmap when doing an UploadToScratch (For + pDrawable->type == DRAWABLE_WINDOW, you need to get the backing + pixmap). - Pass back the x/y offsets from kaaGetOffscreenPixmap + unconditionally, because they'll be used in the scratch case. - + Turn on the Render acceleration for Rage 128 and Radeon + 100-series at last! + +2004-06-10 02:50 anholt + + * ati_draw.c: Align scratch area offsets to the offscreen byte + alignment. + +2004-06-10 01:37 anholt + + * ati_dma.c: Oops, testers reported that the last patch actually + didn't work (conflicts occurred), so the R300 PDMA doesn't work. + Disable. + +2004-06-09 22:57 anholt + + * ati_dma.c, ati_microcode.c: Bug #242: Fix setup of R300 cards, by + providing R300 CP code from volodya-project and initializing + PDMA. + +2004-05-17 13:18 anholt + + * Makefile.am, ati.c, ati.h, ati_cursor.c, ati_dma.c, ati_dma.h, + ati_draw.c, ati_draw.h, ati_dri.c, ati_microcode.c, ati_reg.h, + ati_video.c, r128_composite.c, radeon_composite.c: Overhaul of + the ATI driver: - Add monochrome hardware cursor support. - Try + to auto-detect AGP support for DRI on Radeons. And fail. + Detect it properly on R128. - Set up card for pseudo-DMA if + possible. Convert 2D rendering code to prepare DMA packets + only. Use generic code to decode DMA packets to MMIO if PDMA + is unavailable. Add WIP code to support "real" DMA without DRM + support. - Dispatch pending DMA commands when the server sleeps. + Otherwise some things, such as typing in an xterm, wouldn't + show up for a time. - Fix Radeon Composite acceleration in + many ways, and add Rage 128 Composite acceleration. Disable + them both due to still-not-understood issues they have. They + fail with In, Out, AtopReverse, and Xor, and text rendering is + strange. - Add textured XV support for R100 and Rage 128. No + brightness/sat controls, but it does support multiple ports, + and cooperates with Composite. - Add WIP code for hostdata + uploads. - Many cleanups and fixes. + +2004-01-24 21:31 anholt + + * ati_dri.c: Disable GLX visuals code on !GLXEXT, and remove a + useless prototype. + +2004-01-24 17:30 anholt + + * ati.c, ati.h, ati_dri.c, radeon_composite.c: - Add glx visuals + code based on XFree86's Radeon driver. - Reserve areas for + back/depth/span when USING_DRI && GLXEXT. This would be better + in a TransitionTo3d, but we'd need to work with the offscreen + memory manager for that. - Misc. fixes to ati_dri.c for DRI+GLX. + Needs more work still. + +2004-01-24 17:16 anholt + + * ati_draw.h: Oops, turn fallback output back off. + +2004-01-24 17:04 anholt + + * ati_dri.c: Whitespace cleanup. + +2004-01-10 16:10 anholt + + * ati_draw.c, r128_blendtmp.h: Support 1x1 repeat sources in R128's + Blend. + +2004-01-09 00:43 anholt + + * ati.c, ati.h, ati_draw.c, ati_draw.h, ati_dri.c: Change PCI ID + information field to be one of r128, r100, r200, r300. This is + all the information we need so far. Put that information into + atic, and use it correctly in the code (unlike before). + +2004-01-08 12:18 anholt + + * ati_draw.c, radeon_composite.c: Compile fixes for non-DRI case + and for non-C99 compiler. + +2004-01-08 00:25 anholt + + * ati.c: Forced commit: Previous commit included the removal of the + 8192 scanline limit on offscreen memory in the fbdev case. I + remember daenzer (who originally put that code in) saying he + wasn't sure of it, and there doesn't seem to be any reason for + that limit given how acceleration is done. + +2004-01-08 00:16 anholt + + * ati.c, ati.h, ati_draw.c: - Add a new UploadToScratch kaa hook + for putting the data for a single pixmap into temporary + offscreen storage. Subsequent UploadToScratch may clobber the + data of previous ones. This allows hardware acceleration of + composite operations on glyphs. - Add a new UploadToScreen kaa + hook for doing the actual moving of data to framebuffer. This + would allow us to do things like hostdata blits or memcpy to + agp and then blit. - Add an UploadToScreen on ATI which is just + memcpy, but which will be replaced with a hostdata blit soon. + - Add UploadToScratch on ATI and reserve 64k of scratch space. + This provided a 3x speedup of rgb24text on my Radeon. + +2004-01-06 18:30 anholt + + * radeon_composite.c: Speed things up slightly by removing Z values + from emitted vertices and by emitting as a tri fan rather than a + tri list. A rect list would save an additional vertex (out of 4) + per rectangle, but there's no measurable speed difference and the + tri fan may be useful when transforms come into play. + +2004-01-04 12:47 anholt + + * ati_draw.c, radeon_composite.c: - Correctly set the texture + coordinate set source for the second texture unit. - Re-enable + Radeon's Composite accel now that fonts work again. + +2004-01-03 03:46 anholt + + * ati_draw.c, radeon_composite.c: - Add more Composite operations, + including Saturate, to Radeon Composite accel. I don't 100% + trust that the math works for Saturate, but I can't tell from + existing information. - Fix texture pitch fallback checks. - + Fallback when src or mask have transforms. - Disable Radeon + Composite accel until the offset thing is fixed. - Set + offscreenPitch to 64 on Radeon thanks to new information and a + kaa fix. Fixes acceleration at width!=1024. + +2003-12-31 15:24 anholt + + * radeon_composite.c: Some strange \240 character snuck into the + original commit of this file. + +2003-12-30 00:45 anholt + + * ati_drawtmp.h: There's never a copy between different depths. + Remove the check. + +2003-12-30 00:23 anholt + + * Makefile.am, ati_draw.c, ati_draw.h, ati_drawtmp.h, ati_reg.h, + radeon_composite.c: - Add new Composite hook for kdrive drivers, + which only ensures that the pixmaps are offscreen and don't + have alpha maps. It is the last case checked before going to + software fallback - Use the new Composite hook in the ati driver + to implement acceleration of most Composites that get done in + an xcompmgr environment on r100 series cards. It is only + available when using the DRM. There are still some corruption + issues, but the DRI is still non-default and I need to get this + into version control. + +2003-12-29 01:04 anholt + + * Makefile.am: Add dependency lines so that servers are rebuilt + when server libraries are changed. + +2003-12-28 22:24 anholt + + * Makefile.am, ati.c, ati.h, ati_draw.c, ati_draw.h, ati_drawtmp.h, + ati_dri.c, ati_dri.h, ati_dripriv.h, ati_reg.h, ati_sarea.h, + ati_stub.c, r128_blendtmp.h, r128_common.h, r128_sarea.h, + radeon_common.h, radeon_sarea.h: Merge dri-0-1-branch to trunk. + Notable changes: - Add libdrm and libdri. Portions of the DRI + extension are stubbed out. - Use the DRM in the ATI driver + when available. This provides a minor performance improvement + in x11perf, and opens the possibility of using the 3d hardware + for acceleration in the future. - Implement solid fill + acceleration for Composite in KAA. - Implement Blend hook for + Composite and use it on r128. - Fix a bug of mine that resulted + in overuse of offscreen memory. - Fix many miscellaneous bugs in + ATI driver and add PCI IDs. + +2003-12-28 21:10 anholt + + * ati_drawtmp.h, r128_blendtmp.h: - Disable libdrm verbosity. It + isn't important enough yet to make a run-time flag for it. - + Fix the (void)atic; tricks to quiet unused variable warnings in + ATI template files. Mixing statements and variable defines works + in newer compilers, but not pdx's. + +2003-12-28 01:16 anholt + + * ati.h, ati_draw.c, ati_draw.h, ati_drawtmp.h, ati_dri.c, + r128_blendtmp.h: - Allow acceleration between same-depth pixmaps, + rather than between anything and a dst that matched the screen + depth (fixes corruption for non-screen-depth src and makes more + acceleration possible). - Add ATI_FALLBACK macro and use it to + allow verbose descriptions of why hardware acceleration fails. + - Check that src and dst alignment meet requirements of the card + before accelerating. The BIOS may set up screens that don't + meet the requirements. - Fix the R128 offset alignment (32 + bytes, not 8). - Enable Blend operation even if screen is 24bpp + (it will fail if the dest is 24bpp anyway). + +2003-12-27 02:46 anholt + + * ati_reg.h, r128_blendtmp.h: Properly initialize texture registers + in Blend. Fixes problems with blending code such as whiteness in + test-render, or no blending at all. + + Tested by: andersca + +2003-12-23 14:29 anholt + + * Makefile.am, ati_draw.c, ati_drawtmp.h, ati_reg.h, + r128_blendtmp.h: - Implement acceleration of Composite on R128 + when there is no mask, no transformation, no repeat, and only + certain ops are used. - Add debugging output for software + fallbacks for Composite. - Allow pixmaps in offscreen that don't + match root depth. - Clean up some mess in ati_reg.h. + + Many thanks to andersca for a lot of this code. + +2003-12-09 21:01 anholt + + * ati_draw.c: Add missing kaaDrawFini to ATI driver. + +2003-12-01 14:56 anholt + + * Makefile.am, ati.c, ati.h, ati_draw.c, ati_draw.h, ati_drawtmp.h, + ati_dri.c, ati_dri.h, ati_dripriv.h, ati_reg.h, ati_sarea.h, + ati_stub.c, r128_common.h, r128_sarea.h, radeon_common.h, + radeon_sarea.h: - Initial add of enough of the DRI to create a 2d + driver that uses the DRM for its acceleration. - Converted the + ATI driver to use the DRM to execute rendering commands using + DMA instead of MMIO when available. + +2003-11-30 20:33 anholt + + * Makefile.am, ati.c, ati.h, ati_stub.c: - Add fbdev mode-setting + backend to Xati. It and vesa are compiled in when available, + with fbdev being used by default. - Use depth 16 by default when + vesa backend is used. - Add MMIO defines for PowerPC (should be + in a common location). + + Many thanks for Michel Daenzer for much of this code. + +2003-11-30 19:15 anholt + + * ati.c: Add more RV250 PCI IDs. + +2003-11-30 17:46 anholt + + * ati_draw.c: Remove sys/io.h inclusion from some files that didn't + need it, and change asm/io.h to sys/io.h in vga.c, which newer + Linux complains about. + +2003-11-25 14:39 anholt + + * ati.c: Add new Radeon 9200 PCI IDs. + +2003-11-23 02:12 anholt + + * ati_draw.c: - Fix Radeon offscreen pixmap pitch alignment. - + Remove usleeps from idle and waitavail code, recommended by + keithp. - Add a workaround for apparent broken acceleration with + Rage 128 and offset alignment with 8-bit acceleration (24-hack + and plain 8-bit). - Minor cleanup of setup code. + +2003-11-22 18:08 anholt + + * ati.c: Add RV250 PCI IDs. + +2003-11-19 23:49 anholt + + * ati.c, ati.h, ati_draw.c, ati_reg.h: - Fix a bug in pitch + alignment for offscren pixmaps. - Add 24-bit acceleration for + Xati using the 8-bit trick from mach64. - Add offscreen pixmap + support to Xati. + +2003-11-19 16:05 anholt + + * ati.c, ati_draw.c: - Fix confusion of depth/bitsPerPixel in + ati_draw.c - Disable acceleration with 24bpp due to apparent + broken acceleration. Accel at 24bpp was the cause of the + crashes when people tried to use any depth over 16. XFree86 + doesn't support 24 either. - Disable at < 8bpp, too. - Add the + other Rage 128 PCI IDs. - Remove unnecessary setting of scissor + registers (only default scissor gets used). + +2003-11-19 00:32 anholt + + * .cvsignore, Makefile.am, ati.c, ati.h, ati_draw.c, ati_reg.h, + ati_stub.c: - Add PCI information (device/vendor id, bus + location) to KdCardAttr to help with ati, and future DRM + drivers. - Add new "ati" kdrive driver. It has ancestry in the + r128 driver from andersca, but took a detour through being the + WIP SiS 300 driver on the way. It supports Radeons (tested on + QD VIVO and 7500) and Rage 128. Current limitations include + that it requires depth 16 and that the other Rage 128 PCI IDs + aren't included yet. + diff --git a/hw/kdrive/ati/ati_reg.h b/hw/kdrive/ati/ati_reg.h index c0c8dd29c..32291d8f4 100644 --- a/hw/kdrive/ati/ati_reg.h +++ b/hw/kdrive/ati/ati_reg.h @@ -282,6 +282,10 @@ #define R128_REG_PM4_MICRO_CNTL 0x07fc # define R128_PM4_MICRO_FREERUN (1 << 30) +#define RADEON_TV_MASTER_CNTL 0x0800 +# define RADEON_TV_MACROVISION (1 << 5) +# define RADEON_TVCLK_ALWAYS_ON (1 << 30) + #define R128_REG_BM_CHUNK_0_VAL 0x0a18 # define R128_BM_PTR_FORCE_TO_PCI (1 << 21) # define R128_BM_PM4_RD_FORCE_TO_PCI (1 << 22) |