summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--3D_with_free_drivers_and_low_power_consumption.mdwn19
-rw-r--r--3D_with_free_drivers_and_low_power_consumption.moin15
-rw-r--r--3Dlabs.mdwn32
-rw-r--r--3Dlabs.moin26
-rw-r--r--3dfx.mdwn70
-rw-r--r--3dfx.moin63
-rw-r--r--AGP.mdwn104
-rw-r--r--AGP.moin192
-rw-r--r--AGPBenchmarks.mdwn (renamed from AGPBenchmarks.moin)182
-rw-r--r--AMD.mdwn65
-rw-r--r--AMD.moin58
-rw-r--r--API.mdwn11
-rw-r--r--API.moin10
-rw-r--r--ARB.mdwn9
-rw-r--r--ARB.moin8
-rw-r--r--ATI.mdwn (renamed from FrontPage/17zvy4402.html)0
-rw-r--r--ATI.moin1
-rw-r--r--ATIMach64.mdwn64
-rw-r--r--ATIMach64.moin88
-rw-r--r--ATIRadeon.mdwn434
-rw-r--r--ATIRadeon.moin357
-rw-r--r--ATIRage128.mdwn34
-rw-r--r--ATIRage128.moin29
-rw-r--r--AdamJackson.mdwn8
-rw-r--r--AdamJackson.moin8
-rw-r--r--AdminGroup.mdwn9
-rw-r--r--AdminGroup.moin8
-rw-r--r--AlanCox.mdwn17
-rw-r--r--AlanCox.moin10
-rw-r--r--AlanHourihane.mdwn25
-rw-r--r--AlanHourihane.moin15
-rw-r--r--AlecAri.mdwn (renamed from AlecAri.moin)39
-rw-r--r--AlexDeucher.mdwn19
-rw-r--r--AlexDeucher.moin17
-rw-r--r--AlexanderStohr.mdwn2
-rw-r--r--AlexanderStohr.moin1
-rw-r--r--AndrewRandrianasulu.mdwn (renamed from AndrewRandrianasulu.moin)131
-rw-r--r--AuthorshipAndAcknowledgements.mdwn7
-rw-r--r--AuthorshipAndAcknowledgements.moin5
-rw-r--r--BSD.mdwn11
-rw-r--r--BSD.moin6
-rw-r--r--BadContent.mdwn9
-rw-r--r--BadContent.moin4805
-rw-r--r--Benchmarking.mdwn121
-rw-r--r--Benchmarking.moin117
-rw-r--r--BinaryCompatability.mdwn108
-rw-r--r--BinaryCompatability.moin147
-rw-r--r--BrianPaul.mdwn19
-rw-r--r--BrianPaul.moin12
-rw-r--r--BugZilla.mdwn6
-rw-r--r--BugZilla.moin5
-rw-r--r--Building.mdwn (renamed from Building.moin)578
-rw-r--r--BuildingWithLLVM.mdwn (renamed from BuildingWithLLVM.moin)64
-rw-r--r--CAS.mdwn (renamed from CAS.moin)21
-rw-r--r--CVSView.mdwn8
-rw-r--r--CVSView.moin7
-rw-r--r--CVSup.mdwn (renamed from CVSup.moin)47
-rw-r--r--CategoryFaq.mdwn19
-rw-r--r--CategoryFaq.moin11
-rw-r--r--CategoryGlossary.mdwn7
-rw-r--r--CategoryGlossary.moin5
-rw-r--r--CategoryHardware.mdwn2
-rw-r--r--CategoryHardware.moin2
-rw-r--r--CategoryHardwareChipset.mdwn11
-rw-r--r--CategoryHardwareChipset.moin6
-rw-r--r--CategoryHardwareVendor.mdwn11
-rw-r--r--CategoryHardwareVendor.moin6
-rw-r--r--CategoryHelpWanted.mdwn9
-rw-r--r--CategoryHelpWanted.moin7
-rw-r--r--CategoryOperatingSystem.mdwn11
-rw-r--r--CategoryOperatingSystem.moin6
-rw-r--r--CategoryTemplate.mdwn14
-rw-r--r--CategoryTemplate.moin17
-rw-r--r--CategoryTroubleshooting.mdwn11
-rw-r--r--CategoryTroubleshooting.moin6
-rw-r--r--CirrusLogic.mdwn26
-rw-r--r--CirrusLogic.moin20
-rw-r--r--CommunicationSchemes.mdwn18
-rw-r--r--CommunicationSchemes.moin23
-rw-r--r--CompiledVertexArray.mdwn13
-rw-r--r--CompiledVertexArray.moin27
-rw-r--r--CompositeSwap.mdwn211
-rw-r--r--CompositeSwap.moin192
-rw-r--r--ConfigurationForDevelopers.mdwn101
-rw-r--r--ConfigurationForDevelopers.moin90
-rw-r--r--ConfigurationInfrastructure.mdwn (renamed from ConfigurationInfrastructure.moin)137
-rw-r--r--ConfigurationOptions.mdwn (renamed from ConfigurationOptions.moin)199
-rw-r--r--Contributing.mdwn0
-rw-r--r--Contributing.moin1
-rw-r--r--CurrentDevelopers.mdwn48
-rw-r--r--CurrentDevelopers.moin41
-rw-r--r--CvsBranches.mdwn146
-rw-r--r--CvsBranches.moin106
-rw-r--r--CvsPolicy.mdwn192
-rw-r--r--CvsPolicy.moin263
-rw-r--r--CvsRepository.mdwn83
-rw-r--r--CvsRepository.moin72
-rw-r--r--DDX.mdwn23
-rw-r--r--DDX.moin22
-rw-r--r--DMA.mdwn11
-rw-r--r--DMA.moin18
-rw-r--r--DONETemplate.mdwn3
-rw-r--r--DONETemplate.moin1
-rw-r--r--DRI.mdwn11
-rw-r--r--DRI.moin14
-rw-r--r--DRI2.mdwn4
-rw-r--r--DRI2.moin3
-rw-r--r--DRILocking.mdwn (renamed from DRILocking.moin)146
-rw-r--r--DRM.mdwn89
-rw-r--r--DRM.moin135
-rw-r--r--DRMAccessControl.mdwn (renamed from DRMAccessControl.moin)28
-rw-r--r--DRMProcess.mdwn (renamed from DRMProcess.moin)97
-rw-r--r--DRMRedesign.mdwn (renamed from DRMRedesign.moin)50
-rw-r--r--DRMTemplates.mdwn121
-rw-r--r--DRMTemplates.moin126
-rw-r--r--DanMcCabe.mdwn26
-rw-r--r--DanMcCabe.moin18
-rw-r--r--DanielStone.mdwn2
-rw-r--r--DanielStone.moin1
-rw-r--r--DanilKutkevich.mdwn29
-rw-r--r--DanilKutkevich.moin18
-rw-r--r--DaveAirlie.mdwn29
-rw-r--r--DaveAirlie.moin22
-rw-r--r--DenisKrivosheev.mdwn22
-rw-r--r--DenisKrivosheev.moin12
-rw-r--r--DevelopingForMesa.mdwn30
-rw-r--r--DevelopingForMesa.moin26
-rw-r--r--Development.mdwn39
-rw-r--r--Development.moin38
-rw-r--r--Direct3D.mdwn11
-rw-r--r--Direct3D.moin12
-rw-r--r--DirectFB.mdwn20
-rw-r--r--DirectFB.moin19
-rw-r--r--DirectRendering.mdwn11
-rw-r--r--DirectRendering.moin6
-rw-r--r--DirectRenderingToRedirectedWindows.mdwn33
-rw-r--r--DirectRenderingToRedirectedWindows.moin32
-rw-r--r--Documentation.mdwn55
-rw-r--r--Documentation.moin107
-rw-r--r--Download.mdwn113
-rw-r--r--Download.moin102
-rw-r--r--DriArchitecture.mdwn14
-rw-r--r--DriArchitecture.moin12
-rw-r--r--DriConf.mdwn318
-rw-r--r--DriConf.moin308
-rw-r--r--DriDriver.mdwn9
-rw-r--r--DriDriver.moin9
-rw-r--r--DriExtension.mdwn17
-rw-r--r--DriExtension.moin14
-rw-r--r--DriHistory.mdwn240
-rw-r--r--DriHistory.moin355
-rw-r--r--DriMemoryManagerDesign.mdwn256
-rw-r--r--DriMemoryManagerDesign.moin232
-rw-r--r--DriTroubleshooting.mdwn253
-rw-r--r--DriTroubleshooting.moin222
-rw-r--r--DriWithoutX.mdwn39
-rw-r--r--DriWithoutX.moin33
-rw-r--r--DriverFiles.mdwn (renamed from DriverFiles.moin)130
-rw-r--r--DrmMapHandling.mdwn77
-rw-r--r--DrmMapHandling.moin77
-rw-r--r--DrmModesetting.mdwn116
-rw-r--r--DrmModesetting.moin101
-rw-r--r--EditGroup.mdwn18
-rw-r--r--EditGroup.moin19
-rw-r--r--EricAnholt.mdwn27
-rw-r--r--EricAnholt.moin14
-rw-r--r--FBDRI.mdwn21
-rw-r--r--FBDRI.moin20
-rw-r--r--FIFO.mdwn11
-rw-r--r--FIFO.moin7
-rw-r--r--FSAA.mdwn11
-rw-r--r--FSAA.moin7
-rw-r--r--FeatureMatrix.mdwn45
-rw-r--r--FeatureMatrix.moin42
-rw-r--r--FelixKuehling.mdwn25
-rw-r--r--FelixKuehling.moin15
-rw-r--r--FindPage.moin23
-rw-r--r--FrankWorsley.mdwn22
-rw-r--r--FrankWorsley.moin12
-rw-r--r--FreeBSD.mdwn21
-rw-r--r--FreeBSD.moin15
-rw-r--r--FrontPage.mdwn35
-rw-r--r--FrontPage.moin32
-rw-r--r--FullScreen.mdwn15
-rw-r--r--FullScreen.moin15
-rw-r--r--GART.mdwn15
-rw-r--r--GART.moin22
-rw-r--r--GARTAddressingLimits.mdwn33
-rw-r--r--GARTAddressingLimits.moin30
-rw-r--r--GLU.mdwn11
-rw-r--r--GLU.moin9
-rw-r--r--GLUT.mdwn11
-rw-r--r--GLUT.moin11
-rw-r--r--GLX.mdwn11
-rw-r--r--GLX.moin12
-rw-r--r--GLXExtension.mdwn17
-rw-r--r--GLXExtension.moin11
-rw-r--r--GLcore.mdwn (renamed from GLcore.moin)7
-rw-r--r--GLcoreExtension.mdwn (renamed from GLcoreExtension.moin)93
-rw-r--r--GLdispatch.mdwn134
-rw-r--r--GLdispatch.moin120
-rw-r--r--GSoC_2008.mdwn (renamed from GSoC_2008.moin)90
-rw-r--r--Gallium3D.mdwn11
-rw-r--r--Gallium3D.moin9
-rw-r--r--GalliumCompute.mdwn130
-rw-r--r--GalliumCompute.moin128
-rw-r--r--GeForce.mdwn (renamed from GeForce.moin)3
-rw-r--r--GettingStarted.mdwn58
-rw-r--r--GettingStarted.moin54
-rw-r--r--Glide.mdwn34
-rw-r--r--Glide.moin54
-rw-r--r--GlossaryTemplate.mdwn15
-rw-r--r--GlossaryTemplate.moin10
-rw-r--r--HAL.mdwn19
-rw-r--r--HAL.moin11
-rw-r--r--HardwareChipsetTemplate.mdwn18
-rw-r--r--HardwareChipsetTemplate.moin10
-rw-r--r--HardwareVendorTemplate.mdwn20
-rw-r--r--HardwareVendorTemplate.moin13
-rw-r--r--HardwareWithoutMipmaps.mdwn91
-rw-r--r--HardwareWithoutMipmaps.moin83
-rw-r--r--HomepageTemplate.mdwn20
-rw-r--r--HomepageTemplate.moin12
-rw-r--r--IRC.mdwn10
-rw-r--r--IRC.moin7
-rw-r--r--IRCMeetings.mdwn (renamed from IRCMeetings.moin)29
-rw-r--r--IanRomanick.mdwn20
-rw-r--r--IanRomanick.moin15
-rw-r--r--IanRomanickToDo.mdwn73
-rw-r--r--IanRomanickToDo.moin196
-rw-r--r--IndirectRendering.mdwn16
-rw-r--r--IndirectRendering.moin12
-rw-r--r--Intel.mdwn95
-rw-r--r--Intel.moin90
-rw-r--r--IntelGL.mdwn (renamed from IntelGL.moin)50
-rw-r--r--IntelGMA.mdwn8
-rw-r--r--IntelGMA.moin3
-rw-r--r--IntelPerformance.mdwn73
-rw-r--r--IntelPerformance.moin42
-rw-r--r--IntelPerformanceTuning.mdwn118
-rw-r--r--IntelPerformanceTuning.moin95
-rw-r--r--IntelRegisters.mdwn276
-rw-r--r--IntelRegisters.moin295
-rw-r--r--JeanChristopheCardot.mdwn4
-rw-r--r--JeanChristopheCardot.moin3
-rw-r--r--JeffWaddell.mdwn22
-rw-r--r--JeffWaddell.moin12
-rw-r--r--JensOwen.mdwn19
-rw-r--r--JensOwen.moin12
-rw-r--r--JesseZhang.mdwn4
-rw-r--r--JesseZhang.moin3
-rw-r--r--JonSmirl.mdwn13
-rw-r--r--JonSmirl.moin10
-rw-r--r--JoseFonseca.mdwn21
-rw-r--r--JoseFonseca.moin11
-rw-r--r--KDrive.mdwn15
-rw-r--r--KDrive.moin12
-rw-r--r--KMSFirstSteps.mdwn6
-rw-r--r--KMSFirstSteps.moin5
-rw-r--r--KeithWhitwell.mdwn20
-rw-r--r--KeithWhitwell.moin13
-rw-r--r--LeifDelgass.mdwn21
-rw-r--r--LeifDelgass.moin11
-rw-r--r--Links.mdwn80
-rw-r--r--Links.moin73
-rw-r--r--LinusTorvalds.mdwn (renamed from LinusTorvalds.moin)3
-rw-r--r--Linux.mdwn24
-rw-r--r--Linux.moin22
-rw-r--r--LinuxWorld.mdwn2
-rw-r--r--LinuxWorld.moin2
-rw-r--r--LocalBadContent.mdwn2
-rw-r--r--LocalBadContent.moin14
-rw-r--r--LocalSpellingWords.mdwn (renamed from LocalSpellingWords.moin)293
-rw-r--r--MAOS.mdwn15
-rw-r--r--MAOS.moin10
-rw-r--r--MESAX_array_element_base.mdwn107
-rw-r--r--MESAX_array_element_base.moin200
-rw-r--r--MMIO.mdwn11
-rw-r--r--MMIO.moin14
-rw-r--r--MTRR.mdwn11
-rw-r--r--MTRR.moin12
-rw-r--r--MailingLists.mdwn37
-rw-r--r--MailingLists.moin62
-rw-r--r--Mali.mdwn32
-rw-r--r--Mali.moin25
-rw-r--r--Matrox.mdwn55
-rw-r--r--Matrox.moin48
-rw-r--r--MergedFB.mdwn (renamed from MergedFB.moin)129
-rw-r--r--Mesa.mdwn13
-rw-r--r--Mesa.moin11
-rw-r--r--MesaDriver.mdwn201
-rw-r--r--MesaDriver.moin192
-rw-r--r--MesaImplementationNotesOld.mdwn105
-rw-r--r--MesaImplementationNotesOld.moin95
-rw-r--r--MesaWishList.mdwn41
-rw-r--r--MesaWishList.moin36
-rw-r--r--MichelDaenzer.mdwn11
-rw-r--r--MichelDaenzer.moin8
-rw-r--r--MikeHarris.mdwn2
-rw-r--r--MikeHarris.moin1
-rw-r--r--MiniGLX.mdwn20
-rw-r--r--MiniGLX.moin14
-rw-r--r--MissingFunctionality.mdwn48
-rw-r--r--MissingFunctionality.moin46
-rw-r--r--MultiHead.mdwn (renamed from MultiHead.moin)49
-rw-r--r--NDA.mdwn66
-rw-r--r--NDA.moin130
-rw-r--r--NV1.mdwn (renamed from NV1.moin)48
-rw-r--r--NVIDIA.mdwn (renamed from NVIDIA.moin)75
-rw-r--r--NVIDIAGeForce.mdwn6
-rw-r--r--NVIDIAGeForce.moin4
-rw-r--r--NeverWinterNights.mdwn31
-rw-r--r--NeverWinterNights.moin57
-rw-r--r--NewDeveloperAccount.mdwn (renamed from NewDeveloperAccount.moin)27
-rw-r--r--NextDRMVersion.mdwn12
-rw-r--r--NextDRMVersion.moin14
-rw-r--r--No2048Limit.mdwn9
-rw-r--r--No2048Limit.moin7
-rw-r--r--NoAccel.mdwn14
-rw-r--r--NoAccel.moin9
-rw-r--r--NormalUserBuild.mdwn (renamed from NormalUserBuild.moin)282
-rw-r--r--NumberNine.mdwn (renamed from NumberNine.moin)61
-rw-r--r--OpenGL.mdwn18
-rw-r--r--OpenGL.moin21
-rw-r--r--OpenGLFeatures.mdwn54
-rw-r--r--OpenGLFeatures.moin53
-rw-r--r--PCI.mdwn11
-rw-r--r--PCI.moin6
-rw-r--r--PIO.mdwn11
-rw-r--r--PIO.moin13
-rw-r--r--PageflipBenchmarks.mdwn (renamed from PageflipBenchmarks.moin)184
-rw-r--r--PartiallyAliasedFunctions.mdwn47
-rw-r--r--PartiallyAliasedFunctions.moin65
-rw-r--r--PowerManagement.mdwn7
-rw-r--r--PowerManagement.moin5
-rw-r--r--PowerVR.mdwn (renamed from PowerVR.moin)56
-rw-r--r--Profiling.mdwn92
-rw-r--r--Profiling.moin92
-rw-r--r--QuickDraw3D.mdwn (renamed from QuickDraw3D.moin)8
-rw-r--r--R200ToDo.mdwn10
-rw-r--r--R200ToDo.moin10
-rw-r--r--R300.mdwn59
-rw-r--r--R300.moin62
-rw-r--r--R300Application.mdwn223
-rw-r--r--R300Application.moin109
-rw-r--r--R300Benchmark.mdwn (renamed from R300Benchmark.moin)118
-rw-r--r--R300Compiler.mdwn (renamed from R300Compiler.moin)125
-rw-r--r--R300FragmentProgramOptimization.mdwn (renamed from R300FragmentProgramOptimization.moin)130
-rw-r--r--R300Textures.mdwn (renamed from R300Textures.moin)128
-rw-r--r--R300ToDo.mdwn115
-rw-r--r--R300ToDo.moin109
-rw-r--r--R300_Portal.mdwn21
-rw-r--r--R300_Portal.moin18
-rw-r--r--R600ToDo.mdwn132
-rw-r--r--R600ToDo.moin152
-rw-r--r--Radeon%Architecture.mdwn (renamed from Radeon%Architecture.moin)212
-rw-r--r--Radeon%Companion%1.mdwn31
-rw-r--r--Radeon%Companion%1.moin35
-rw-r--r--Radeon.mdwn125
-rw-r--r--Radeon.moin113
-rw-r--r--Radeon200M.mdwn257
-rw-r--r--Radeon200M.moin260
-rw-r--r--RadeonTroubleshooting.mdwn36
-rw-r--r--RadeonTroubleshooting.moin33
-rw-r--r--Radeon_Companion_2.mdwn45
-rw-r--r--Radeon_Companion_2.moin49
-rw-r--r--Radeon_Companion_3.mdwn (renamed from Radeon_Companion_3.moin)61
-rw-r--r--Radeon_Companion_4.mdwn (renamed from Radeon_Companion_4.moin)63
-rw-r--r--RadeonsiToDo.mdwn95
-rw-r--r--RadeonsiToDo.moin109
-rw-r--r--RedBook.mdwn5
-rw-r--r--RedBook.moin2
-rw-r--r--References.mdwn76
-rw-r--r--References.moin33
-rw-r--r--Rendition.mdwn (renamed from Rendition.moin)45
-rw-r--r--Resources.mdwn2
-rw-r--r--Resources.moin1
-rw-r--r--ReverseEngineering.mdwn99
-rw-r--r--ReverseEngineering.moin124
-rw-r--r--S3.mdwn15
-rw-r--r--S3.moin11
-rw-r--r--S3Savage.mdwn59
-rw-r--r--S3Savage.moin57
-rw-r--r--S3TC.mdwn9
-rw-r--r--S3TC.moin19
-rw-r--r--S3Virge.mdwn54
-rw-r--r--S3Virge.moin57
-rw-r--r--SAREA.mdwn15
-rw-r--r--SAREA.moin21
-rw-r--r--SDL.mdwn11
-rw-r--r--SDL.moin13
-rw-r--r--SGI.mdwn17
-rw-r--r--SGI.moin12
-rw-r--r--SIS650.mdwn18
-rw-r--r--SIS650.moin10
-rw-r--r--SLI.mdwn11
-rw-r--r--SLI.moin8
-rw-r--r--SMedia.mdwn21
-rw-r--r--SMedia.moin17
-rw-r--r--SharedMemoryTransport.mdwn (renamed from SharedMemoryTransport.moin)917
-rw-r--r--SiS.mdwn37
-rw-r--r--SiS.moin29
-rw-r--r--SiS300.mdwn34
-rw-r--r--SiS300.moin26
-rw-r--r--SiS530.mdwn26
-rw-r--r--SiS530.moin16
-rw-r--r--SiS6326.mdwn30
-rw-r--r--SiS6326.moin26
-rw-r--r--SigGraph.mdwn11
-rw-r--r--SigGraph.moin6
-rw-r--r--SiliconMotion.mdwn23
-rw-r--r--SiliconMotion.moin19
-rw-r--r--SiliconMotionSM722.mdwn36
-rw-r--r--SiliconMotionSM722.moin29
-rw-r--r--SiliconMotionSM731.mdwn35
-rw-r--r--SiliconMotionSM731.moin27
-rw-r--r--Solaris.mdwn23
-rw-r--r--Solaris.moin17
-rw-r--r--SourceForge.mdwn (renamed from SourceForge.moin)3
-rw-r--r--Status.mdwn28
-rw-r--r--Status.moin24
-rw-r--r--StereoSupport.mdwn11
-rw-r--r--StereoSupport.moin13
-rw-r--r--SummerOfCode.mdwn22
-rw-r--r--SummerOfCode.moin18
-rw-r--r--SunFFB.mdwn22
-rw-r--r--SunFFB.moin15
-rw-r--r--Sven-Hendrik_Haase.mdwn47
-rw-r--r--Sven-Hendrik_Haase.moin35
-rw-r--r--TCL.mdwn18
-rw-r--r--TCL.moin14
-rw-r--r--TG.mdwn7
-rw-r--r--TG.moin12
-rw-r--r--TTMFencing.mdwn68
-rw-r--r--TTMFencing.moin167
-rw-r--r--TestingAndDebugging.mdwn134
-rw-r--r--TestingAndDebugging.moin168
-rw-r--r--TextureCompression.mdwn41
-rw-r--r--TextureCompression.moin75
-rw-r--r--TextureMapping.mdwn11
-rw-r--r--TextureMapping.moin8
-rw-r--r--TextureMemoryManagement.mdwn21
-rw-r--r--TextureMemoryManagement.moin60
-rw-r--r--TimoJyrinki.mdwn23
-rw-r--r--TimoJyrinki.moin12
-rw-r--r--TnL.mdwn11
-rw-r--r--TnL.moin8
-rw-r--r--ToDo.mdwn109
-rw-r--r--ToDo.moin99
-rw-r--r--TormodVolden.mdwn (renamed from TormodVolden.moin)21
-rw-r--r--Trident.mdwn28
-rw-r--r--Trident.moin21
-rw-r--r--Troubleshooting.mdwn12
-rw-r--r--Troubleshooting.moin10
-rw-r--r--TroubleshootingTemplate.mdwn23
-rw-r--r--TroubleshootingTemplate.moin16
-rw-r--r--UtahGLX.mdwn17
-rw-r--r--UtahGLX.moin19
-rw-r--r--V4L2Integration.mdwn4
-rw-r--r--V4L2Integration.moin3
-rw-r--r--VIA.mdwn12
-rw-r--r--VIA.moin8
-rw-r--r--VIACLE266.mdwn30
-rw-r--r--VIACLE266.moin25
-rw-r--r--VNC.mdwn4
-rw-r--r--VNC.moin3
-rw-r--r--VilleSyrjala.mdwn22
-rw-r--r--VilleSyrjala.moin12
-rw-r--r--WhosWho.mdwn17
-rw-r--r--WhosWho.moin14
-rw-r--r--WikiSandBox.mdwn8
-rw-r--r--WikiSandBox.moin7
-rw-r--r--WorkQueue.mdwn164
-rw-r--r--WorkQueue.moin162
-rw-r--r--X11.mdwn11
-rw-r--r--X11.moin13
-rw-r--r--XEngine.mdwn (renamed from XEngine.moin)28
-rw-r--r--XFree86.mdwn11
-rw-r--r--XFree86.moin7
-rw-r--r--XGI.mdwn34
-rw-r--r--XGI.moin27
-rw-r--r--Xinerama.mdwn22
-rw-r--r--Xinerama.moin16
-rw-r--r--ZBuffer.mdwn11
-rw-r--r--ZBuffer.moin20
-rw-r--r--chipset.mdwn11
-rw-r--r--chipset.moin19
-rw-r--r--glXGetProcAddressNeverReturnsNULL.mdwn63
-rw-r--r--glXGetProcAddressNeverReturnsNULL.moin55
-rw-r--r--glxinfo.mdwn (renamed from glxinfo.moin)96
-rw-r--r--iXMicro.mdwn (renamed from iXMicro.moin)53
-rw-r--r--ioctl.mdwn12
-rw-r--r--ioctl.moin10
-rw-r--r--libGL.mdwn30
-rw-r--r--libGL.moin26
-rw-r--r--libGLDriver.mdwn45
-rw-r--r--libGLDriver.moin69
-rw-r--r--nVidia.mdwn0
-rw-r--r--nVidia.moin1
499 files changed, 12868 insertions, 17505 deletions
diff --git a/3D_with_free_drivers_and_low_power_consumption.mdwn b/3D_with_free_drivers_and_low_power_consumption.mdwn
new file mode 100644
index 0000000..3ab7479
--- /dev/null
+++ b/3D_with_free_drivers_and_low_power_consumption.mdwn
@@ -0,0 +1,19 @@
+
+
+# 3D with free drivers and low power consumption
+
+Chipsets and [[GraphicsCards|GraphicsCards]] supported by free drivers can be used without problems or restrictions if your system is updated. Free drivers normally improve from version to the next version; proprietary drivers could be instable if you update to a more recent version. Low power consumption helps to reduce costs, allows to build silent systems and helps to reduce CO2-emission.
+
+
+## AGP Cards
+[[!table header="no" class="mointable" data="""
+ Card | Chipset | Max.Power | Idle Power | cooling | 3D supported from ...
+ HIS Radeon 9000 | RV250 | 28 Watt | | passive | radeon driver with x.org >=7.2
+ HIS Radeon 9600 | RV350 | 15 Watt | | passive | ?? radeon driver with x.org >=??
+"""]]
+
+
+## PCI-E Cards
+
+
+## Notebook Chipsets
diff --git a/3D_with_free_drivers_and_low_power_consumption.moin b/3D_with_free_drivers_and_low_power_consumption.moin
deleted file mode 100644
index 36d1f41..0000000
--- a/3D_with_free_drivers_and_low_power_consumption.moin
+++ /dev/null
@@ -1,15 +0,0 @@
-= 3D with free drivers and low power consumption =
-
-Chipsets and GraphicsCards supported by free drivers can be used without problems or restrictions if your system is updated.
-Free drivers normally improve from version to the next version; proprietary drivers could be instable if you update to a more recent version.
-Low power consumption helps to reduce costs, allows to build silent systems and helps to reduce CO2-emission.
-
-== AGP Cards ==
-
-|| Card || Chipset || Max.Power || Idle Power || cooling || 3D supported from ... ||
-|| HIS Radeon 9000 || RV250 || 28 Watt || || passive || radeon driver with x.org >=7.2 ||
-|| HIS Radeon 9600 || RV350 || 15 Watt || || passive || ?? radeon driver with x.org >=?? ||
-
-== PCI-E Cards ==
-
-== Notebook Chipsets ==
diff --git a/3Dlabs.mdwn b/3Dlabs.mdwn
new file mode 100644
index 0000000..91fc383
--- /dev/null
+++ b/3Dlabs.mdwn
@@ -0,0 +1,32 @@
+
+
+# 3Dlabs
+
+**Chipsets** [[!map pages="^3Dlabs.+"]]
+
+
+## Status
+
+Supported chipsets
+
+ * MX/Gamma Chipset
+Example graphics cards
+
+ * Oxygen GMX 2000
+Important notes:
+
+ * [[IanRomanick|IanRomanick]] is planning to clean up the current driver and add support for the 500tx: [[announcement|http://dri.sourceforge.net/IRC-logs/20030908.txt]] from DRI IRC meeting.
+ * Sven Luther also did some preliminary work for permedia chips. That code is available on the tdlabs-0-0-1 branch in DRI CVS.
+
+## Specifications
+
+
+## Resources
+
+ * [[3Dlabs homepage|http://www.3dlabs.com/]]
+ * [[3Dlabs proprietary Linux drivers|http://www.3dlabs.com/support/drivers/index.htm#linux]]
+
+
+---
+
+ [[CategoryHardwareVendor|CategoryHardwareVendor]]
diff --git a/3Dlabs.moin b/3Dlabs.moin
deleted file mode 100644
index 3547a5b..0000000
--- a/3Dlabs.moin
+++ /dev/null
@@ -1,26 +0,0 @@
-= 3Dlabs =
-
-'''Chipsets'''
-<<PageList(^3Dlabs.+)>>
-
-== Status ==
-
-Supported chipsets
- * MX/Gamma Chipset
-
-Example graphics cards
- * Oxygen GMX 2000
-
-Important notes:
- * IanRomanick is planning to clean up the current driver and add support for the 500tx: [[http://dri.sourceforge.net/IRC-logs/20030908.txt|announcement]] from DRI IRC meeting.
- * Sven Luther also did some preliminary work for permedia chips. That code is available on the tdlabs-0-0-1 branch in DRI CVS.
-
-== Specifications ==
-
-== Resources ==
-
- * [[http://www.3dlabs.com/|3Dlabs homepage]]
- * [[http://www.3dlabs.com/support/drivers/index.htm#linux|3Dlabs proprietary Linux drivers]]
-
-----
-CategoryHardwareVendor
diff --git a/3dfx.mdwn b/3dfx.mdwn
new file mode 100644
index 0000000..3390d55
--- /dev/null
+++ b/3dfx.mdwn
@@ -0,0 +1,70 @@
+
+
+# 3dfx
+
+3dfx is the company that produced the Voodoo chipset, the first successful consumer 3D chipset for the PC.
+
+
+## Status
+
+Supported cards
+
+ * 3dfx Voodoo5
+ * 3dfx Voodoo4
+ * 3dfx Voodoo3
+ * 3dfx Voodoo Banshee
+ * Velocity 100/200
+Unsupported Cards (2D only):
+
+ * 3dfx Voodoo2
+ * 3dfx Voodoo1
+Voodoo1/Voodoo2 use Glide2 and very different interfaces to later cards. While it is not impossible to write DRI modules for Voodoo1/2 the hardware is not designed for windowed 3D
+
+Alan Cox has a glide-free XFree86 driver for Voodoo1/2 [[here|ftp://people.redhat.com/alan/XFree86/Voodoo]]. This driver has been integrated into Xorg.
+
+Important notes:
+
+ * 3dfx is now defunct.
+ * Hardware acceleration is only supported at 16bpp on the Voodoo 3 and the Banshee.
+ * 16bpp and 24bpp are supported on the Voodoo 5.
+ * The driver lacks a current maintainer.
+ * The driver needs significant work.
+ * SLI is currently not supported. We are looking for volunteers to complete the SLI work. Note that this is quite difficult to complete.
+ * AGP support in your kernel does not matter to the 3dfx driver, as it doesn't use AGP on Linux/BSD.
+The tdfx driver uses the Glide library as a HAL, so that needs to be installed before building. This should be supplied by your distribution, but if not the build process goes like this:
+
+
+[[!format txt """
+cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/glide co -r glide-devel-branch Glide3
+cd Glide3
+./chores.3dfx --clean --generate
+./configure --help
+./configure # options here
+./build.3dfx
+su
+(enter root password)
+./build.3dfx install
+"""]]
+The Glide build is known to be touchy. Gentoo users will want to say `export WANT_AUTOMAKE=1.7` before running `chores.3dfx`. If this branch doesn't build for you, you may have better luck by checking out the Glide trunk by omitting `-r glide-devel-branch` from the `cvs` command. You'll need `nasm` installed in order to get the optimized assembly code.
+
+Good luck.
+
+
+## Future work
+
+Glide is very fragile, and using it as a wrapper layer means that the tdfx driver doesn't look much like the other drivers at the source code level. This makes the tdfx driver rather hard to maintain. We should rewrite it to talk to the hardware directly.
+
+Currently no one is working on this.
+
+
+## Specifications
+
+You can get them at [[http://www.medex.hu/~danthe/tdfx/|http://www.medex.hu/~danthe/tdfx/]].
+
+**Note**: this link is now dead. It's mirrored on web.archive.org at: [[http://web.archive.org/web/20050311015540/http://www.medex.hu/~danthe/tdfx/|http://web.archive.org/web/20050311015540/http://www.medex.hu/~danthe/tdfx/]].
+
+
+
+---
+
+ [[CategoryGlossary|CategoryGlossary]], [[CategoryHardwareVendor|CategoryHardwareVendor]]
diff --git a/3dfx.moin b/3dfx.moin
deleted file mode 100644
index 4632549..0000000
--- a/3dfx.moin
+++ /dev/null
@@ -1,63 +0,0 @@
-= 3dfx =
-
-3dfx is the company that produced the Voodoo chipset, the first successful
-consumer 3D chipset for the PC.
-
-== Status ==
-
-Supported cards
- * 3dfx Voodoo5
- * 3dfx Voodoo4
- * 3dfx Voodoo3
- * 3dfx Voodoo Banshee
- * Velocity 100/200
-
-Unsupported Cards (2D only):
- * 3dfx Voodoo2
- * 3dfx Voodoo1
-
-Voodoo1/Voodoo2 use Glide2 and very different interfaces to later cards. While it is not impossible to write DRI modules for Voodoo1/2 the hardware is not designed for windowed 3D
-
-Alan Cox has a glide-free XFree86 driver for Voodoo1/2 [[ftp://people.redhat.com/alan/XFree86/Voodoo|here]]. This driver has been integrated into Xorg.
-
-Important notes:
- * 3dfx is now defunct.
- * Hardware acceleration is only supported at 16bpp on the Voodoo 3 and the Banshee.
- * 16bpp and 24bpp are supported on the Voodoo 5.
- * The driver lacks a current maintainer.
- * The driver needs significant work.
- * SLI is currently not supported. We are looking for volunteers to complete the SLI work. Note that this is quite difficult to complete.
- * AGP support in your kernel does not matter to the 3dfx driver, as it doesn't use AGP on Linux/BSD.
-
-The tdfx driver uses the Glide library as a HAL, so that needs to be installed before building. This should be supplied by your distribution, but if not the build process goes like this:
-
-{{{
-cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/glide co -r glide-devel-branch Glide3
-cd Glide3
-./chores.3dfx --clean --generate
-./configure --help
-./configure # options here
-./build.3dfx
-su
-(enter root password)
-./build.3dfx install
-}}}
-
-The Glide build is known to be touchy. Gentoo users will want to say `export WANT_AUTOMAKE=1.7` before running `chores.3dfx`. If this branch doesn't build for you, you may have better luck by checking out the Glide trunk by omitting `-r glide-devel-branch` from the `cvs` command. You'll need `nasm` installed in order to get the optimized assembly code.
-
-Good luck.
-
-== Future work ==
-
-Glide is very fragile, and using it as a wrapper layer means that the tdfx driver doesn't look much like the other drivers at the source code level. This makes the tdfx driver rather hard to maintain. We should rewrite it to talk to the hardware directly.
-
-Currently no one is working on this.
-
-== Specifications ==
-
-You can get them at http://www.medex.hu/~danthe/tdfx/.
-
-'''Note''': this link is now dead. It's mirrored on web.archive.org at: http://web.archive.org/web/20050311015540/http://www.medex.hu/~danthe/tdfx/.
-
-----
-CategoryGlossary, CategoryHardwareVendor
diff --git a/AGP.mdwn b/AGP.mdwn
new file mode 100644
index 0000000..14d530a
--- /dev/null
+++ b/AGP.mdwn
@@ -0,0 +1,104 @@
+
+
+# Accelerated Graphics Port (AGP)
+
+AGP is a dedicated high-speed bus that allows the graphics controller to fetch large amounts of data directly from system memory. It uses a Graphics Address Re-Mapping Table (GART) to provide a physically-contiguous view of scattered pages in system memory for DMA transfers.
+
+With AGP, main memory is specifically used for advanced three-dimensional features, such as textures, alpha buffers, and ZBuffer``s.
+
+There are two primary AGP usage models for 3D rendering that have to do with how data are partitioned and accessed, and the resultant interface data flow characteristics.
+DMA
+: In the DMA model, the primary graphics memory is the local memory associated with the accelerator, referred to as the local frame buffer. 3D structures are stored in system memory, but are not used (or executed) directly from this memory; rather they are copied to primary (local) memory (the DMA operation) to which the rendering engine's address generator makes its references. This implies that the traffic on the AGP tends to be long, sequential transfers, serving the purpose of bulk data transport from system memory to primary graphics (local) memory. This sort of access model is amenable to a linked list of physical addresses provided by software (similar to the operation of a disk or network I/O device), and is generally not sensitive to a non-contiguous view of the memory space.
+
+execute
+: In the execute model, the accelerator uses both the local memory and the system memory as primary graphics memory. From the accelerator's perspective, the two memory systems are logically equivalent; any data structure may be allocated in either memory, with performance optimization as the only criterion for selection. In general, structures in system memory space are not copied into the local memory prior to use by the accelerator, but are executed in place. This implies that the traffic on the AGP tends to be short, random accesses, which are not amenable to an access model based on software resolved lists of physical addresses. Because the accelerator generates direct references into system memory, a contiguous view of that space is essential; however, since system memory is dynamically allocated in random 4K pages, it is necessary in the execute model to provide an address mapping mechanism that maps random 4K pages into a single contiguous, physical address space.
+
+
+**Note:** The AGP supports both the DMA and the execute model. However, since a primary motivation of the AGP is to reduce growth pressure on local memory, the execute model is the design focus.
+
+AGP also allows to issue several access requests in a pipelined fashion while waiting for the data transfers to occur. Such pipelining of access requests results in having several read and/or write requests outstanding in the corelogic's request queue at any point in time.
+
+
+## Resources
+
+ * [[AGP Technology Home|http://www.intel.com/technology/agp/index.htm]]
+ * [[AGP Implementors Forum Q&A|http://www.agpforum.org/faq_ans.htm]] Link changed, [[archived version|http://web.archive.org/web/20021214224953/http://www.agpforum.org/faq_ans.htm]]
+ * [[AGP Specification 2.0|http://www.intel.com/technology/agp/agp_index.htm]] Link changed, [[try this one|http://esd.cs.ucr.edu/webres/agp20.pdf]]
+ * [[AGP 3.0 v1.0 spec|http://www.playtool.com/pages/agpcompat/agp30.pdf]]
+
+## Frequently Asked Questions
+
+
+### Why not use the existing XFree86 AGP manipulation calls?
+
+You have to understand that the DRI functions have a different purpose than the ones in XFree86. The DRM has to know about AGP, so it talks to the AGP kernel module itself. It has to be able to protect certain regions of AGP memory from the client side 3D drivers, yet it has to export some regions of it as well. While most of this functionality (most, not all) can be accomplished with the `/dev/agpgart` interface, it makes sense to use the DRM's current authentication mechanism. This means that there is less complexity on the client side. If we used `/dev/agpgart`, then the client would have to open two devices, authenticate to both of them, and make half a dozen calls to agpgart, and only then care about the DRM device.
+
+**Note:** As a side note, the XFree86 calls were written after the DRM functions.
+
+Also to answer a previous question about not using XFree86 calls for memory mapping, you have to understand that under most OS's (probably Solaris as well), XFree86's functions will only work for root privileged processes. The whole point of the DRI is to allow processes that can connect to the X server to do some form of direct to hardware rendering. If we limited ourselves to using XFree86's functionality, we would not be able to do this. We don't want everyone to be root.
+
+
+### How do I use AGP?
+
+You can also use [[this|http://dri.sourceforge.net/res/testgart.c]] test program as a bit more documentation as to how agpgart is used.
+
+
+### How to allocate AGP memory?
+
+Generally programs do the following:
+
+ 1. open `/dev/agpgart`
+ 1. `ioctl(ACQUIRE)`
+ 1. `ioctl(INFO)` to determine amount of memory for AGP
+ 1. mmap the device
+ 1. `ioctl(SETUP)` to set the AGP mode
+ 1. `ioctl(ALLOCATE)` a chunk o memory, specifying offset in aperture
+ 1. `ioctl(BIND)` that same chunk o memory
+Every time you update the GART, you have to flush the cache and/or TLB's. This is expensive. Therefore, you allocate and bind the pages you'll use, and `mmap()` just returns the right pages when needed.
+
+Then you need to have a remap of the AGP aperture in the kernel which you can access. Use ioremap to do that.
+
+After that you have access to the AGP memory. You probably want to make sure that there is a write-combining MTRR over the aperture. There is code in `mga_drv.c` in our kernel directory that shows you how to do that.
+
+
+### If one has to insert pages in order to check for -EBUSY errors and loop through the entire GART, wouldn't it be better if the driver filled up ''pg_start'' of the ''agp_bind'' structure instead of the user filling it up?
+
+All this allocation should be done by only one process. If you need memory in the GART you should be asking the X server for it (or whatever your controlling process is). Things are implemented this way so that the controlling process can know intimate details of how memory is laid out. This is very important for the I810, since you want to set tiled memory on certain regions of the aperture. If you made the kernel do the layout, then you would have to create device specific code in the kernel to make sure that the backbuffer/dcache are aligned for tiled memory. This adds complexity to the kernel that doesn't need to be there, and imposes restrictions on what you can do with AGP memory. Also, the current X server implementation (4.0) actually locks out other applications from adding to the GART. While the X server is active, the X server is the only one who can add memory. Only the controlling process may add things to the GART, and while a controlling process is active, no other application can be the controlling process.
+
+Microsoft's VGART does things like you are describing I believe. I think it's bad design. It enforces a policy on whoever uses it, and is not flexible. When you are designing low level system routines I think it is very important to make sure your design has the minimum of policy. Otherwise when you want to do something different you have to change the interface, or create custom drivers for each application that needs to do things differently.
+
+
+### How does the DMA transfer mechanism works?
+
+Here's a proposal for an zero-ioctl (best case) DMA transfer mechanism.
+
+Let's call it 'kernel ringbuffers'. The premise is to replace the calls to the 'fire-vertex-buffer' ioctl with code to write to a client-private mapping shared by the kernel (like the current SAREA, but for each client).
+
+Starting from the beginning:
+
+ * Each client has a private piece of AGP memory, into which it will put secure commands (typically vertices and texture data). The client may expand or shrink this region according to load.
+ * Each client has a shared user/kernel region of cached memory. (Per-context SAREA). This is managed like a ring, with head and tail pointers.
+ * The client emits vertices to AGP memory (as it currently does with DMA buffers).
+ * When a state change, clear, swap, flush, or other event occurs, the client:Grabs the hardware lock.Re-emits any invalidated state to the head of the ring.Emits a command to fire the portion of AGP space as vertices.Updates the head pointer in the ring.Releases the lock.
+ * The kernel is responsible for processing all of the rings. Several events might cause the kernel to examine active rings for commands to be dispatched:
+ * A flush ioctl. (Called by impatient clients)
+ * A periodic timer. (If this is low overhead?)
+ * An interrupt previously emitted by the kernel. (If timers don't work)
+Additionally, for those who've been paying attention, you'll notice that some of the assumptions that we currently use to manage hardware state between multiple active contexts are broken if client commands to hardware aren't executed serially in an order which is knowable to the clients. Otherwise, a client that grabs the heavy lock doesn't know what state has been invalidated or textures swapped out by other clients.
+
+This could be solved by keeping per-context state in the kernel and implementing a proper texture manager. That's something we need to do anyway, but it's not a requirement for this mechanism to work.
+
+Instead, force the kernel to fire all outstanding commands on client ringbuffers whenever the heavyweight lock changes hands. This provides the same serialized semantics as the current mechanism, and also simplifies the kernel's task as it knows that only a single context has an active ring buffer (the one last to hold the lock).
+
+An additional mechanism is required to allow clients to know which pieces of their AGP buffer is pending execution by the hardware, and which pieces of the buffer are available to be reused. This is also exactly what _NV_vertex_array_range_ requires.
+
+
+# Kernel patches
+
+Kernel patch to get AGP 8X working on a VIA KT400. The patch is for a 2.4.21pre5 but patches, compiles and runs perfectly in a 2.4.21. This patch is needed for this chipset because it works **only** in 8X when you plug a 8X card.
+
+* [[Linux Kernel Mailing List|http://lists.insecure.org/lists/linux-kernel/2003/Mar/3999.html]]
+
+---
+
+ [[CategoryGlossary|CategoryGlossary]], [[CategoryFaq|CategoryFaq]]
diff --git a/AGP.moin b/AGP.moin
deleted file mode 100644
index cac7940..0000000
--- a/AGP.moin
+++ /dev/null
@@ -1,192 +0,0 @@
-= Accelerated Graphics Port (AGP) =
-
-AGP is a dedicated high-speed bus that allows the graphics controller to fetch
-large amounts of data directly from system memory. It uses a Graphics Address
-Re-Mapping Table (GART) to provide a physically-contiguous view of scattered
-pages in system memory for DMA transfers.
-
-With AGP, main memory is specifically used for advanced three-dimensional
-features, such as textures, alpha buffers, and ZBuffer``s.
-
-There are two primary AGP usage models for 3D rendering that have to do with
-how data are partitioned and accessed, and the resultant interface data
-flow characteristics.
-
- DMA:: In the DMA model, the primary graphics memory is the local memory
- associated with the accelerator, referred to as the local frame buffer. 3D
- structures are stored in system memory, but are not used (or executed)
- directly from this memory; rather they are copied to primary (local) memory
- (the DMA operation) to which the rendering engine's address generator makes its
- references. This implies that the traffic on the AGP tends to be long,
- sequential transfers, serving the purpose of bulk data transport from system
- memory to primary graphics (local) memory. This sort of access model is
- amenable to a linked list of physical addresses provided by software (similar
- to the operation of a disk or network I/O device), and is generally not sensitive
- to a non-contiguous view of the memory space.
-
- execute:: In the execute model, the accelerator uses both the local memory and
- the system memory as primary graphics memory. From the accelerator's
- perspective, the two memory systems are logically equivalent; any data
- structure may be allocated in either memory, with performance optimization as
- the only criterion for selection. In general, structures in system memory space
- are not copied into the local memory prior to use by the accelerator, but are
- executed in place. This implies that the traffic on the AGP tends to be
- short, random accesses, which are not amenable to an access model based on
- software resolved lists of physical addresses. Because the accelerator
- generates direct references into system memory, a contiguous view of that space
- is essential; however, since system memory is dynamically allocated in random
- 4K pages, it is necessary in the execute model to provide an address mapping
- mechanism that maps random 4K pages into a single contiguous, physical address
- space.
-
-'''Note:''' The AGP supports both the DMA and the execute model. However, since
-a primary motivation of the AGP is to reduce growth pressure on local memory,
-the execute model is the design focus.
-
-AGP also allows to issue several access requests in a pipelined fashion while
-waiting for the data transfers to occur. Such pipelining of access requests results
-in having several read and/or write requests outstanding in the corelogic's
-request queue at any point in time.
-
-== Resources ==
-
- * [[http://www.intel.com/technology/agp/index.htm|AGP Technology Home]]
- * [[http://www.agpforum.org/faq_ans.htm|AGP Implementors Forum Q&A]]
- Link changed, [[ http://web.archive.org/web/20021214224953/http://www.agpforum.org/faq_ans.htm | archived version]]
- * [[http://www.intel.com/technology/agp/agp_index.htm|AGP Specification 2.0]]
- Link changed, [[http://esd.cs.ucr.edu/webres/agp20.pdf| try this one]]
- * [[http://www.playtool.com/pages/agpcompat/agp30.pdf | AGP 3.0 v1.0 spec]]
-
-== Frequently Asked Questions ==
-
-=== Why not use the existing XFree86 AGP manipulation calls? ===
-
-You have to understand that the DRI functions have a different purpose than the
-ones in XFree86. The DRM has to know about AGP, so it talks to the AGP kernel
-module itself. It has to be able to protect certain regions of AGP memory from
-the client side 3D drivers, yet it has to export some regions of it as well.
-While most of this functionality (most, not all) can be accomplished with the
-`/dev/agpgart` interface, it makes sense to use the DRM's current
-authentication mechanism. This means that there is less complexity on the
-client side. If we used `/dev/agpgart`, then the client would have to open two
-devices, authenticate to both of them, and make half a dozen calls to agpgart,
-and only then care about the DRM device.
-
-'''Note:''' As a side note, the XFree86 calls were written after the DRM
-functions.
-
-
-Also to answer a previous question about not using XFree86 calls for memory
-mapping, you have to understand that under most OS's (probably Solaris as well),
-XFree86's functions will only work for root privileged processes. The whole
-point of the DRI is to allow processes that can connect to the X server to do
-some form of direct to hardware rendering. If we limited ourselves to using
-XFree86's functionality, we would not be able to do this. We don't want
-everyone to be root.
-
-=== How do I use AGP? ===
-
-You can also use [[http://dri.sourceforge.net/res/testgart.c|this]] test program
-as a bit more documentation as to how agpgart is used.
-
-=== How to allocate AGP memory? ===
-
-Generally programs do the following:
-
- 1. open `/dev/agpgart`
- 1. `ioctl(ACQUIRE)`
- 1. `ioctl(INFO)` to determine amount of memory for AGP
- 1. mmap the device
- 1. `ioctl(SETUP)` to set the AGP mode
- 1. `ioctl(ALLOCATE)` a chunk o memory, specifying offset in aperture
- 1. `ioctl(BIND)` that same chunk o memory
-
-Every time you update the GART, you have to flush the cache and/or TLB's. This
-is expensive. Therefore, you allocate and bind the pages you'll use, and `mmap()`
-just returns the right pages when needed.
-
-Then you need to have a remap of the AGP aperture in the kernel which you can
-access. Use ioremap to do that.
-
-After that you have access to the AGP memory. You probably want to make sure
-that there is a write-combining MTRR over the aperture. There is code in
-`mga_drv.c` in our kernel directory that shows you how to do that.
-
-=== If one has to insert pages in order to check for -EBUSY errors and loop through the entire GART, wouldn't it be better if the driver filled up ''pg_start'' of the ''agp_bind'' structure instead of the user filling it up? ===
-
-All this allocation should be done by only one process. If you need memory in
-the GART you should be asking the X server for it (or whatever your controlling
-process is). Things are implemented this way so that the controlling process
-can know intimate details of how memory is laid out. This is very important for
-the I810, since you want to set tiled memory on certain regions of the
-aperture. If you made the kernel do the layout, then you would have to create
-device specific code in the kernel to make sure that the backbuffer/dcache are
-aligned for tiled memory. This adds complexity to the kernel that doesn't need
-to be there, and imposes restrictions on what you can do with AGP memory. Also,
-the current X server implementation (4.0) actually locks out other applications
-from adding to the GART. While the X server is active, the X server is the only
-one who can add memory. Only the controlling process may add things to the GART,
-and while a controlling process is active, no other application can be the
-controlling process.
-
-Microsoft's VGART does things like you are describing I believe. I think it's
-bad design. It enforces a policy on whoever uses it, and is not flexible. When
-you are designing low level system routines I think it is very important to
-make sure your design has the minimum of policy. Otherwise when you want to do
-something different you have to change the interface, or create custom drivers
-for each application that needs to do things differently.
-
-=== How does the DMA transfer mechanism works? ===
-
-Here's a proposal for an zero-ioctl (best case) DMA transfer mechanism.
-
-Let's call it 'kernel ringbuffers'. The premise is to replace the calls to the
-'fire-vertex-buffer' ioctl with code to write to a client-private mapping
-shared by the kernel (like the current SAREA, but for each client).
-
-Starting from the beginning:
-
- * Each client has a private piece of AGP memory, into which it will put secure commands (typically vertices and texture data). The client may expand or shrink this region according to load.
-
- * Each client has a shared user/kernel region of cached memory. (Per-context SAREA). This is managed like a ring, with head and tail pointers.
- * The client emits vertices to AGP memory (as it currently does with DMA buffers).
-
- * When a state change, clear, swap, flush, or other event occurs, the client:Grabs the hardware lock.Re-emits any invalidated state to the head of the ring.Emits a command to fire the portion of AGP space as vertices.Updates the head pointer in the ring.Releases the lock.
-
- * The kernel is responsible for processing all of the rings. Several events might cause the kernel to examine active rings for commands to be dispatched:
-
- * A flush ioctl. (Called by impatient clients)
-
- * A periodic timer. (If this is low overhead?)
-
- * An interrupt previously emitted by the kernel. (If timers don't work)
-
-Additionally, for those who've been paying attention, you'll notice that some
-of the assumptions that we currently use to manage hardware state between
-multiple active contexts are broken if client commands to hardware aren't
-executed serially in an order which is knowable to the clients. Otherwise, a
-client that grabs the heavy lock doesn't know what state has been invalidated
-or textures swapped out by other clients.
-
-This could be solved by keeping per-context state in the kernel and
-implementing a proper texture manager. That's something we need to do anyway,
-but it's not a requirement for this mechanism to work.
-
-Instead, force the kernel to fire all outstanding commands on client
-ringbuffers whenever the heavyweight lock changes hands. This provides the same
-serialized semantics as the current mechanism, and also simplifies the kernel's
-task as it knows that only a single context has an active ring buffer (the one
-last to hold the lock).
-
-An additional mechanism is required to allow clients to know which pieces of
-their AGP buffer is pending execution by the hardware, and which pieces of the
-buffer are available to be reused. This is also exactly what
-''NV_vertex_array_range'' requires.
-
-= Kernel patches =
-
-Kernel patch to get AGP 8X working on a VIA KT400. The patch is for a 2.4.21pre5 but patches, compiles and runs perfectly in a 2.4.21. This patch is needed for this chipset because it works '''only''' in 8X when you plug a 8X card.
-
-* [[http://lists.insecure.org/lists/linux-kernel/2003/Mar/3999.html|Linux Kernel Mailing List]]
-----
-CategoryGlossary, CategoryFaq
diff --git a/AGPBenchmarks.moin b/AGPBenchmarks.mdwn
index 05fcea0..996d931 100644
--- a/AGPBenchmarks.moin
+++ b/AGPBenchmarks.mdwn
@@ -1,91 +1,91 @@
-The effect of AGP settings on 3d performance comes up often, and I've always told people not to bother with tweaking AGP since it doesn't matter. But I realized I should really make sure that what I say is true. So, I've benchmarked a couple of things with AGP at 1x and 4x. I chose quake3, since it's an old standby and I've got scripts for it, and ipers, since it's very vertex-dispatch intensive (though vtxfmt fallbacks may be hurting it a lot these days and making it a less useful test). The machine was a P4 running at 1Ghz with a Radeon 64MB VIVO, with Options "AGPMode" "4" vs not in the xorg.conf. Drivers were Mesa CVS as of around 2004-11-01.
-
-Quake3 (640x480, defaults, running demofour script from idr):
-{{{
-x 1x
-+ 4x
-+--------------------------------------------------------------------------+
-| x + +|
-|x x x + + +|
-| |______A_______| |_____M_A________||
-+--------------------------------------------------------------------------+
- N Min Max Median Avg Stddev
-x 5 127.2 127.4 127.3 127.3 0.070710678
-+ 5 127.7 127.9 127.8 127.82 0.083666003
-Difference at 95.0% confidence
- 0.52 +/- 0.11297
- 0.408484% +/- 0.0887435%
- (Student's t, pooled s = 0.0774597)
-}}}
-
-So, there was a 0.4% improvement by going to AGP 4x. However, what about the thrashing case? I hacked the DDX to only allocate 1MB for on-card textures and re-ran the test. (Note that with the default allocation of 8MB of AGP memory, this means I've got 5MB of space for textures available).
-
-{{{
-x 1x-1M
-+ 4x-1M
-+--------------------------------------------------------------------------+
-|x +|
-|x +|
-|x +|
-|x +|
-|A A|
-+--------------------------------------------------------------------------+
- N Min Max Median Avg Stddev
-x 4 96.4 96.4 96.4 96.4 0
-+ 4 125.3 125.4 125.4 125.375 0.05
-Difference at 95.0% confidence
- 28.975 +/- 0.061175
- 30.0571% +/- 0.0634595%
- (Student's t, pooled s = 0.0353553)
-}}}
-
-A 30% difference in a serious texture thrashing case. OK, interesting. I dropped the first run of each of them because they were clearly outliers. I can't explain why, but check the next test. I used the RADEON_GARTTEXTURING_FORCE_DISABLE environment variable to disable GART texturing and re-ran, while at the 1M on-card texture size.
-
-{{{
-x 1x-1M-noagptex
-+ 4x-1M-noagptex
-+--------------------------------------------------------------------------+
-|x + |
-|xx ++|
-|xx ++|
-|A| A||
-+--------------------------------------------------------------------------+
- N Min Max Median Avg Stddev
-x 5 52.2 52.3 52.2 52.24 0.054772256
-+ 5 60.3 60.4 60.3 60.34 0.054772256
-Difference at 95.0% confidence
- 8.1 +/- 0.0798822
- 15.5054% +/- 0.152914%
- (Student's t, pooled s = 0.0547723)
-}}}
-
-Interestingly, these framerates are just what the outliers on the first runs of the previous test were. Perhaps we've got a bug, where the first client doesn't get AGP texturing? Odd, but possible. Anyway, with no AGP texturing, we're seeing a 15% performance improvement from increased AGP speeds, probably because textures are being uploaded to the card as hostdata blits (the texture data is written to the command ring which is in AGP space, and sent to the card that way).
-
-How about the case of using AGP textures, with the card space being limited but AGP space being relatively large? I set Options "AGPSize" "64", giving me 61M of AGP texture space.
-
-{{{
-x 1x-1M-61Magp
-+ 4x-1M-61Magp
-+--------------------------------------------------------------------------+
-|x +|
-|x +|
-|x +|
-|x +|
-|A A|
-+--------------------------------------------------------------------------+
- N Min Max Median Avg Stddev
-x 4 95.4 95.4 95.4 95.4 0
-+ 4 125.4 125.5 125.5 125.45 0.057735027
-Difference at 95.0% confidence
- 30.05 +/- 0.0706388
- 31.499% +/- 0.0740449%
- (Student's t, pooled s = 0.0408248)
-}}}
-
-Again, I threw out the first run of each test for being outliers. A 31% performance improvement, so I probably wasn't thrashing when I was running with AGP the first time.
-
-Unfortunately, ipers doesn't have any reporting mechanism, and its measurement is too imprecise to say much. However, both at 1x and 4x the framerate flipped between 12.50 and 14.29 fps.
-
-It appears that for normal usage on cards where you aren't significantly restricted in terms of local memory, 4x AGP buys you almost nothing (.4%). If you're needing to grab nearly all of your textures from AGP, it can be a performance improvement of as much as 30%, and it can improve texture upload performance to card memory sufficiently for a 15% improvement when that's made to be a bottleneck.
-
--- EricAnholt
+
+The effect of AGP settings on 3d performance comes up often, and I've always told people not to bother with tweaking AGP since it doesn't matter. But I realized I should really make sure that what I say is true. So, I've benchmarked a couple of things with AGP at 1x and 4x. I chose quake3, since it's an old standby and I've got scripts for it, and ipers, since it's very vertex-dispatch intensive (though vtxfmt fallbacks may be hurting it a lot these days and making it a less useful test). The machine was a P4 running at 1Ghz with a Radeon 64MB VIVO, with Options "AGPMode" "4" vs not in the xorg.conf. Drivers were Mesa CVS as of around 2004-11-01.
+
+Quake3 (640x480, defaults, running demofour script from idr):
+[[!format txt """
+x 1x
++ 4x
++--------------------------------------------------------------------------+
+| x + +|
+|x x x + + +|
+| |______A_______| |_____M_A________||
++--------------------------------------------------------------------------+
+ N Min Max Median Avg Stddev
+x 5 127.2 127.4 127.3 127.3 0.070710678
++ 5 127.7 127.9 127.8 127.82 0.083666003
+Difference at 95.0% confidence
+ 0.52 +/- 0.11297
+ 0.408484% +/- 0.0887435%
+ (Student's t, pooled s = 0.0774597)
+"""]]
+So, there was a 0.4% improvement by going to AGP 4x. However, what about the thrashing case? I hacked the DDX to only allocate 1MB for on-card textures and re-ran the test. (Note that with the default allocation of 8MB of AGP memory, this means I've got 5MB of space for textures available).
+
+
+[[!format txt """
+x 1x-1M
++ 4x-1M
++--------------------------------------------------------------------------+
+|x +|
+|x +|
+|x +|
+|x +|
+|A A|
++--------------------------------------------------------------------------+
+ N Min Max Median Avg Stddev
+x 4 96.4 96.4 96.4 96.4 0
++ 4 125.3 125.4 125.4 125.375 0.05
+Difference at 95.0% confidence
+ 28.975 +/- 0.061175
+ 30.0571% +/- 0.0634595%
+ (Student's t, pooled s = 0.0353553)
+"""]]
+A 30% difference in a serious texture thrashing case. OK, interesting. I dropped the first run of each of them because they were clearly outliers. I can't explain why, but check the next test. I used the RADEON_GARTTEXTURING_FORCE_DISABLE environment variable to disable GART texturing and re-ran, while at the 1M on-card texture size.
+
+
+[[!format txt """
+x 1x-1M-noagptex
++ 4x-1M-noagptex
++--------------------------------------------------------------------------+
+|x + |
+|xx ++|
+|xx ++|
+|A| A||
++--------------------------------------------------------------------------+
+ N Min Max Median Avg Stddev
+x 5 52.2 52.3 52.2 52.24 0.054772256
++ 5 60.3 60.4 60.3 60.34 0.054772256
+Difference at 95.0% confidence
+ 8.1 +/- 0.0798822
+ 15.5054% +/- 0.152914%
+ (Student's t, pooled s = 0.0547723)
+"""]]
+Interestingly, these framerates are just what the outliers on the first runs of the previous test were. Perhaps we've got a bug, where the first client doesn't get AGP texturing? Odd, but possible. Anyway, with no AGP texturing, we're seeing a 15% performance improvement from increased AGP speeds, probably because textures are being uploaded to the card as hostdata blits (the texture data is written to the command ring which is in AGP space, and sent to the card that way).
+
+How about the case of using AGP textures, with the card space being limited but AGP space being relatively large? I set Options "AGPSize" "64", giving me 61M of AGP texture space.
+
+
+[[!format txt """
+x 1x-1M-61Magp
++ 4x-1M-61Magp
++--------------------------------------------------------------------------+
+|x +|
+|x +|
+|x +|
+|x +|
+|A A|
++--------------------------------------------------------------------------+
+ N Min Max Median Avg Stddev
+x 4 95.4 95.4 95.4 95.4 0
++ 4 125.4 125.5 125.5 125.45 0.057735027
+Difference at 95.0% confidence
+ 30.05 +/- 0.0706388
+ 31.499% +/- 0.0740449%
+ (Student's t, pooled s = 0.0408248)
+"""]]
+Again, I threw out the first run of each test for being outliers. A 31% performance improvement, so I probably wasn't thrashing when I was running with AGP the first time.
+
+Unfortunately, ipers doesn't have any reporting mechanism, and its measurement is too imprecise to say much. However, both at 1x and 4x the framerate flipped between 12.50 and 14.29 fps.
+
+It appears that for normal usage on cards where you aren't significantly restricted in terms of local memory, 4x AGP buys you almost nothing (.4%). If you're needing to grab nearly all of your textures from AGP, it can be a performance improvement of as much as 30%, and it can improve texture upload performance to card memory sufficiently for a 15% improvement when that's made to be a bottleneck.
+
+-- [[EricAnholt|EricAnholt]]
diff --git a/AMD.mdwn b/AMD.mdwn
new file mode 100644
index 0000000..1f1fdce
--- /dev/null
+++ b/AMD.mdwn
@@ -0,0 +1,65 @@
+
+
+# Advanced Micro Devices, Inc. (formerly ATI Technologies Inc.)
+
+
+## Status
+
+Supported chipsets:
+
+ * [[Mach64|ATIMach64]] (Rage Pro)
+ * [[Rage 128|ATIRage128]] (Standard, Pro, Mobility)
+ * [[Radeon|ATIRadeon]] up to HD 5970-series (i.e. Radeon SDR/DDR, Radeon 7000-9800, and Radeon X300-X1250, Radeon X1300 - X1950, Radeon HD 2000 - HD 5970 are supported)
+Important notes:
+
+ * The [[Radeon naming scheme|http://dri.sourceforge.net/doc/radeon_naming.phtml]] explained.
+ * For Radeon PCI support see the FAQ.
+ * Rage Fury Maxx is NOT supported by the DRI.
+ * The Radeon seems to have problems with certain early VIA chipsets. Your best bet is to try and see if it works.
+ * 3D support for the Radeon 9500-9800 (R300 series), X300-X850 (R400 series) and X1300 - X1950 (R500 series) is via the r300_dri driver. For the HD series, 3D support is provided in the r600 driver, and there is both the classic DRI driver and Gallium driver in development. The stability has improved a lot since 2008, thanks to specifications released by AMD also for their (ATI's) older chipsets.
+ * R500 series support is available in Mesa 7.0.4 release or newer
+ * Radeon HD 6000 (R800) series does not yet have DRI 3D driver, see below for information about the specifications being released by AMD
+Example graphics cards:
+
+ * Radeon HD 4670
+ * Radeon X1650
+ * Radeon X700
+ * Radeon 8500
+ * Rage Fury
+ * Rage Magnum
+ * Xpert 2000
+ * Xpert 128
+ * Xpert 99
+ * All-in-Wonder 128
+
+### TVOut
+
+Check the [[radeonTV|http://www.x.org/wiki/radeonTV]] page at wiki.x.org for information about how TV-Out (and TV capture) for ATI cards got to official X.org drivers from the [[GATOS|http://gatos.sourceforge.net/]] project. TV-Out may now be enabled using Randr 1.2 ("xrandr" utility) for supported cards, by eg:
+
+1. xrandr --addmode S-video 800x600
+1. xrandr --output S-video --mode 800x600
+1. xrandr --output S-video --set tv_standard ntsc
+
+## Specifications
+
+
+### History
+
+ATI had a 'developer program'. Specifications of all ATI chips up to the Radeon 9200 were made available to DRI developers under NDA on an individual case basis. Please read carefully the NDA page before you consider applying.
+
+
+### Currently
+
+For R500, R600, R700 and R800 (Radeon X1000- HD 6000 series) AMD/ATI has had a habit of releasing specifications from basic mode-setting all the way to shaders. AMD is also funding developers to develop fully open drivers "radeon" (X.Org DDX driver), "r300" and "r600" (Mesa 3D drivers and kernel DRM drivers) using the specifications together with the community, see for example [[http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-ati;a=summary|http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-ati;a=summary]] .
+
+
+## Resources
+
+ * [[ATI homepage|http://www.ati.com/]]
+ * [[ATI's Linux and XFree86 information|http://www.ati.com/support/faq/linux.html]]
+ * [[ATI's proprietary Linux drivers|http://www.ati.com/support/driver.html]]
+
+
+---
+
+ [[CategoryHardwareVendor|CategoryHardwareVendor]] [[TitleIndex|TitleIndex]]
diff --git a/AMD.moin b/AMD.moin
deleted file mode 100644
index 60553e7..0000000
--- a/AMD.moin
+++ /dev/null
@@ -1,58 +0,0 @@
-= Advanced Micro Devices, Inc. (formerly ATI Technologies Inc.) =
-
-== Status ==
-
-Supported chipsets:
- * [[ATIMach64| Mach64]] (Rage Pro)
- * [[ATIRage128| Rage 128]] (Standard, Pro, Mobility)
- * [[ATIRadeon| Radeon]] up to HD 5970-series (i.e. Radeon SDR/DDR, Radeon 7000-9800, and Radeon X300-X1250, Radeon X1300 - X1950, Radeon HD 2000 - HD 5970 are supported)
-
-Important notes:
- * The [[http://dri.sourceforge.net/doc/radeon_naming.phtml|Radeon naming scheme]] explained.
- * For Radeon PCI support see the FAQ.
- * Rage Fury Maxx is NOT supported by the DRI.
- * The Radeon seems to have problems with certain early VIA chipsets. Your best bet is to try and see if it works.
- * 3D support for the Radeon 9500-9800 (R300 series), X300-X850 (R400 series) and X1300 - X1950 (R500 series) is via the r300_dri driver. For the HD series, 3D support is provided in the r600 driver, and there is both the classic DRI driver and Gallium driver in development. The stability has improved a lot since 2008, thanks to specifications released by AMD also for their (ATI's) older chipsets.
- * R500 series support is available in Mesa 7.0.4 release or newer
- * Radeon HD 6000 (R800) series does not yet have DRI 3D driver, see below for information about the specifications being released by AMD
-
-Example graphics cards:
- * Radeon HD 4670
- * Radeon X1650
- * Radeon X700
- * Radeon 8500
- * Rage Fury
- * Rage Magnum
- * Xpert 2000
- * Xpert 128
- * Xpert 99
- * All-in-Wonder 128
-
-=== TVOut ===
-
-Check the [[http://www.x.org/wiki/radeonTV|radeonTV]] page at wiki.x.org for information about how TV-Out (and TV capture) for ATI cards got to official X.org drivers from the [[http://gatos.sourceforge.net/|GATOS]] project. TV-Out may now be enabled using Randr 1.2 ("xrandr" utility) for supported cards, by eg:
-
- 1. xrandr --addmode S-video 800x600
- 1. xrandr --output S-video --mode 800x600
- 1. xrandr --output S-video --set tv_standard ntsc
-
-== Specifications ==
-
-=== History ===
-ATI had a 'developer program'. Specifications of all ATI chips up to the
-Radeon 9200 were made available to DRI developers under NDA on an individual case
-basis. Please read carefully the NDA page before you consider applying.
-
-=== Currently ===
-
-For R500, R600, R700 and R800 (Radeon X1000- HD 6000 series) AMD/ATI has had a habit of releasing specifications from basic mode-setting all the way to shaders. AMD is also funding developers to develop fully open drivers "radeon" (X.Org DDX driver), "r300" and "r600" (Mesa 3D drivers and kernel DRM drivers) using the specifications together with the community, see for example http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-ati;a=summary .
-
-== Resources ==
-
- * [[http://www.ati.com/|ATI homepage]]
- * [[http://www.ati.com/support/faq/linux.html|ATI's Linux and XFree86 information]]
- * [[http://www.ati.com/support/driver.html|ATI's proprietary Linux drivers]]
-
-----
-CategoryHardwareVendor
-TitleIndex
diff --git a/API.mdwn b/API.mdwn
new file mode 100644
index 0000000..ab909e3
--- /dev/null
+++ b/API.mdwn
@@ -0,0 +1,11 @@
+
+
+## Application Programming Interface (API)
+
+Common name used to describe the interface a programmer uses to access a library. Common 3D API's include OpenGL, Direct3D, QuickDraw3D, Renderman, Glide, and there are dozens of other lesser known ones. The two most popular real-time 3D API's these days are OpenGL and Direct3D. Glide enjoyed a dominant but brief popularity on the PC platform in the late 1990s.
+
+
+
+---
+
+ [[CategoryGlossary|CategoryGlossary]]
diff --git a/API.moin b/API.moin
deleted file mode 100644
index f1f8e30..0000000
--- a/API.moin
+++ /dev/null
@@ -1,10 +0,0 @@
-== Application Programming Interface (API) ==
-
-Common name used to describe the interface a programmer uses to access a
-library. Common 3D API's include OpenGL, Direct3D, QuickDraw3D, Renderman,
-Glide, and there are dozens of other lesser known ones. The two most popular
-real-time 3D API's these days are OpenGL and Direct3D. Glide enjoyed a dominant
-but brief popularity on the PC platform in the late 1990s.
-
-----
-CategoryGlossary
diff --git a/ARB.mdwn b/ARB.mdwn
new file mode 100644
index 0000000..5f558ea
--- /dev/null
+++ b/ARB.mdwn
@@ -0,0 +1,9 @@
+
+
+## Architecture Review Board (ARB)
+
+The group of companies (including SGI, IBM, Intel, ATI, nVidia, Microsoft, and others) responsible for the continued refinement and improvement of the OpenGL specifications. It is largely because of the ARB that OpenGL remains a clean, consistent, portable, vendor-neutral API.
+
+---
+
+ [[CategoryGlossary|CategoryGlossary]]
diff --git a/ARB.moin b/ARB.moin
deleted file mode 100644
index a79e9a0..0000000
--- a/ARB.moin
+++ /dev/null
@@ -1,8 +0,0 @@
-== Architecture Review Board (ARB) ==
-
-The group of companies (including SGI, IBM, Intel, ATI, nVidia, Microsoft, and
-others) responsible for the continued refinement and improvement of the OpenGL
-specifications. It is largely because of the ARB that OpenGL remains a clean,
-consistent, portable, vendor-neutral API.
-----
-CategoryGlossary
diff --git a/FrontPage/17zvy4402.html b/ATI.mdwn
index e69de29..e69de29 100644
--- a/FrontPage/17zvy4402.html
+++ b/ATI.mdwn
diff --git a/ATI.moin b/ATI.moin
deleted file mode 100644
index df45524..0000000
--- a/ATI.moin
+++ /dev/null
@@ -1 +0,0 @@
-#REDIRECT AMD
diff --git a/ATIMach64.mdwn b/ATIMach64.mdwn
new file mode 100644
index 0000000..14b15b8
--- /dev/null
+++ b/ATIMach64.mdwn
@@ -0,0 +1,64 @@
+
+
+# ATI Mach64
+
+
+## Status
+
+**Warning!** linux-core was [[dropped|http://cgit.freedesktop.org/mesa/drm/commit/?id=9dd3613073aa2491cef440725fdfa0cf1e8f1a42]] from freedesktop drm git repo with mach64 module inside, and module doesn't appear in mainstream kernel, as of 17-09-2010. You can try to build it from external sources, provided by your distribution, but mainstream situation is not good.
+
+---
+
+DRI support for mach64 has been moved to the DRI and Mesa trunks. This means DRI works on any recent distribution as of 2007.
+
+On Linux systems, the DRM module is not included in official kernels. At least Mandriva 2007 systems come with a patch to include the Mach64 DRM, but it has been dropped for 2008 release. (Please can someone indicate where is mach64 drm gone?)
+
+All mach64 chips with a triangle setup engine are supported. This includes the 3D Rage Pro, 3D Rage LT Pro, 3D Rage XL, 3D Rage XC, and 3D Rage Mobility. Cards without a triangle setup engine cannot be supported; this includes VT chips, 3D Rage, 3D Rage II/II+/IIc, and 3D Rage LT.
+
+[[LeifDelgass|LeifDelgass]] has a page describing the status of the old mach64 branch [[here|http://www.retinalburn.net/linux/dri_status.html]]. He also has a [[page|http://www.retinalburn.net/linux/test_results.html]] has links with the results of OpenGL conformance and performance tests on the mach64 branch.
+
+
+### How do I build the mach64 branch?
+
+Follow the instructions on the Building page. Mach64 is now on the DRI trunk.
+
+Build instructions for older branches are in [[LeifDelgass|LeifDelgass]]' [[Compiling the mach64 branch of DRI mini-HOWTO|http://www.retinalburn.net/linux/dri_HOWTO.html]] .
+
+
+### Why isn't Mach64 built by default?
+
+The reason the Mach64 driver isn't built by default yet is due to lack of proper security. At the moment, despite the fact that the client submitted buffers are checked and copied, a malicious client can change the buffer contents after the check/copy because _all_ buffers are mapped on client space. Therefore security can be compromised by using the Mach64 bus mastering abilities to read/write from/to system memory.
+
+Things that need to be done:
+
+ * Provide a mechanism to allocate private DMA buffers which aren't mapped into the clients. The current DRM DMA buffer API is both arcane and incomplete in this this aspect. A new API is being worked, and is useable if these private DMA buffers are allocated by the DRM instead of the DDX. I'm merging into Mach64 branch as I speak, so this point can be considered done.
+ * Allocate and manage the private DMA buffers from above in Mach64 DRM. See [[http://sourceforge.net/mailarchive/forum.php?thread_id=1925221&forum_id=7177|http://sourceforge.net/mailarchive/forum.php?thread_id=1925221&forum_id=7177]] for a more detailed description of what to do. Besides having to basically write a new/separate buffer management code we also need to integrate it with the existing one. The reason we need to keep the current buffer management code is that plain texture/bitmap data is of no security concern and needs to be dispatched as fast as possible, which means no copying into private buffers.
+There are more things were the Mach64 driver needs a little work but the items above are the ones preventing it to be merged into the DRI trunk, and upstream.
+
+ * -- [[JoseFonseca|JoseFonseca]]
+As an update, the driver is waiting for some changes I'm preparing for the DRM common code that will allow the managament of several DMA buffers pools.
+
+I can't really give a timeframe to driver completion - my laptop went dead several months ago and it's no longer something that affects me directly. Still I'm commited to finish it as my time permits it.
+
+ * -- [[JoseFonseca|JoseFonseca]]
+
+### Latest status
+
+Posted on the dri-users list Dec 8, 2007: (doesn't show up in the archive for some reason)
+
+* _The work to get Mach64 secure was already done by George ([[https://bugs.freedesktop.org/show_bug.cgi?id=6242|https://bugs.freedesktop.org/show_bug.cgi?id=6242]]). Dave Airlie had concerns with the blits, but I reviewed the code with him I found it to be secure (basically we don't let the client touch dma buffers -- it's not the most efficient way for blits, but is is simple as it doesn't imply maintaining two sets of buffers, one private another public). Now I've cleaned up the code a bit (especially eliminating some macros) and commented more, to make it easier to understand and maintain. Hopefully it will be merged soon. José_
+
+## Specifications
+
+Several DRI developers got specifications from ATI under individual NDA.
+
+The driver from the UtahGLX project can also be used as a guide.
+
+
+## Resources
+
+
+
+---
+
+ [[CategoryHardwareChipset|CategoryHardwareChipset]]
diff --git a/ATIMach64.moin b/ATIMach64.moin
deleted file mode 100644
index 4bfda09..0000000
--- a/ATIMach64.moin
+++ /dev/null
@@ -1,88 +0,0 @@
-= ATI Mach64 =
-
-== Status ==
-
-'''Warning!''' linux-core was [[ http://cgit.freedesktop.org/mesa/drm/commit/?id=9dd3613073aa2491cef440725fdfa0cf1e8f1a42 | dropped ]] from freedesktop drm git repo with mach64 module inside, and module doesn't appear in mainstream kernel, as of 17-09-2010. You can try to build it from external sources, provided by your distribution, but mainstream situation is not good.
-
-
----
-
-DRI support for mach64 has been moved to the DRI and Mesa trunks. This means DRI works on any recent distribution as of 2007.
-
-On Linux systems, the DRM module is not included in official kernels. At least Mandriva 2007 systems come with a patch to include the Mach64 DRM, but it has been dropped for 2008 release. (Please can someone indicate where is mach64 drm gone?)
-
-All mach64 chips with a triangle setup engine are supported. This includes the 3D Rage Pro, 3D Rage LT Pro, 3D Rage XL, 3D Rage XC, and 3D Rage Mobility. Cards without a triangle setup engine cannot be supported; this includes VT chips, 3D Rage, 3D Rage II/II+/IIc, and 3D Rage LT.
-
-LeifDelgass has a page describing the status of the old mach64 branch [[http://www.retinalburn.net/linux/dri_status.html|here]]. He also has a [[http://www.retinalburn.net/linux/test_results.html|page]] has links with the results of OpenGL conformance and performance tests on the mach64 branch.
-
-=== How do I build the mach64 branch? ===
-
-Follow the instructions on the Building page. Mach64 is now on the DRI trunk.
-
-Build instructions for older branches are in LeifDelgass' [[http://www.retinalburn.net/linux/dri_HOWTO.html|Compiling the mach64 branch of DRI mini-HOWTO]] .
-
-=== Why isn't Mach64 built by default? ===
-
-The reason the Mach64 driver isn't built by default
-yet is due to lack of proper security. At the moment, despite the fact that the client submitted
-buffers are checked and copied, a malicious client can change the buffer
-contents after the check/copy because _all_ buffers are mapped on client space.
-Therefore security can be compromised by using the Mach64 bus mastering abilities
-to read/write from/to system memory.
-
-Things that need to be done:
-
- * Provide a mechanism to allocate private DMA buffers which aren't mapped into
- the clients. The current DRM DMA buffer API is both arcane and incomplete in
- this this aspect. A new API is being worked, and is useable if these private DMA
- buffers are allocated by the DRM instead of the DDX. I'm merging into Mach64
- branch as I speak, so this point can be considered done.
-
- * Allocate and manage the private DMA buffers from above in Mach64 DRM. See
- http://sourceforge.net/mailarchive/forum.php?thread_id=1925221&forum_id=7177 for
- a more detailed description of what to do. Besides having to basically write a
- new/separate buffer management code we also need to integrate it with the
- existing one. The reason we need to keep the current buffer management code is
- that plain texture/bitmap data is of no security concern and needs to be
- dispatched as fast as possible, which means no copying into private buffers.
-
-There are more things were the Mach64 driver needs a little work but the items
-above are the ones preventing it to be merged into the DRI trunk, and upstream.
-
- -- JoseFonseca
-
-As an update, the driver is waiting for some changes I'm preparing for the DRM
-common code that will allow the managament of several DMA buffers pools.
-
-I can't really give a timeframe to driver completion - my laptop went dead
-several months ago and it's no longer something that affects me directly. Still
-I'm commited to finish it as my time permits it.
-
- -- JoseFonseca
-
-=== Latest status ===
-Posted on the dri-users list Dec 8, 2007: (doesn't show up in the archive for some reason)
- ''The work to get Mach64 secure was already done by George (https://bugs.freedesktop.org/show_bug.cgi?id=6242).
-
- Dave Airlie had concerns with the blits, but I reviewed the code with
- him I found it to be secure (basically we don't let the client touch dma
- buffers -- it's not the most efficient way for blits, but is is simple
- as it doesn't imply maintaining two sets of buffers, one private another
- public).
-
- Now I've cleaned up the code a bit (especially eliminating some macros)
- and commented more, to make it easier to understand and maintain.
- Hopefully it will be merged soon.
-
- José''
-
-== Specifications ==
-
-Several DRI developers got specifications from ATI under individual NDA.
-
-The driver from the UtahGLX project can also be used as a guide.
-
-== Resources ==
-
-----
-CategoryHardwareChipset
diff --git a/ATIRadeon.mdwn b/ATIRadeon.mdwn
new file mode 100644
index 0000000..f4d2bd7
--- /dev/null
+++ b/ATIRadeon.mdwn
@@ -0,0 +1,434 @@
+
+
+### Summary
+
+This page contains information about Radeon chipset naming, and some other, possibly outdated information.
+
+The main portal for 3D acceleration on Radeon is aptly named [[Radeon|Radeon]].
+
+[[!toc ]]
+
+
+### AMD/ATI Radeon chipset 3D support
+
+Note this tables mainly applies to x86 machines. We make a best effort to support PowerPC/Sun cards with [[OpenFirmware|OpenFirmware]], but we cannot always support these due to Apple/Sun hardcoding most of the details in their drivers.
+
+
+#### driver radeon/radeon_dri.so
+
+_Stable._
+
+
+##### rv100 / M6
+
+Original Radeons:
+
+* Radeon VE (1 texture pipeline, no TCL)
+Rereleased Radeons:
+
+* Radeon 7000 / M6 (1 texture pipeline, no TCL)
+The only differences between the releases are more RAM and higher clock speeds (possible due to a manufacturing process shrink) on the 7000.
+
+
+##### R100
+
+Original Radeons:
+
+* Radeon SDR
+* Radeon DDR / LE
+Rereleased Radeons:
+
+* Radeon 7200 (SDR / DDR)
+The only differences between the releases are more RAM and higher clock speeds (possible due to a manufacturing process shrink) on the 7X00 cards.
+
+
+##### rv200 / M7
+
+* Radeon 7500 (DDR)
+* FireGL 7800 (Mobile)
+The 7500 has a tweaked core, more RAM and higher clock speeds (possible due to a manufacturing process shrink). Despite the name (rv200), these cards are r100 based.
+
+
+#### driver radeon/r200_dri.so
+
+_Stable._
+
+
+##### R200
+
+Radeon 2:
+
+* Radeon 8500 LE
+* Radeon 8500
+* Radeon 9100
+* FireGL 8700
+* FireGL 8800
+The difference between the 8500, 8500 LE, 8700, and the 8800 is clock speed. The 8500 LE is made by third party manufacturers.
+
+The amounts of memory on these cards differs eg the 8800 has twice the memory as the 8700.
+
+All are based on the R200 chipset (this is why they can all use the FireGL drivers) and have DDR.
+
+The Radeon 9100 is a rerelease of the Radeon 8500 because it is faster than the Radeon 9000 (see below), the windows drivers offer "pixel shader supported video deblocking filtering" for this card.
+
+
+##### rv250 / M9
+
+Radeon 2:
+
+* Radeon 9000
+* Radeon 9000 Pro
+The 9000 cards use the Rv250 chipset which is a heavily modified R200 chip, the clock speed increased, the number of texture units per pipeline halved, while the windows drivers offer "pixel shader supported video deblocking filtering" for this card.
+
+
+##### rv280 / M9+
+
+Radeon 2:
+
+* Radeon 9200SE
+* Radeon 9200
+* Radeon 9250
+The difference between the Rv250 and the Rv280 is that the R9200 has AGP 8x while the Rv250 has AGP 4x.
+
+The 9200SE is a toned down version of the 9200 and has half the memory bandwidth (64 bit versus 128 bit) and lower clock speed (200 MHz versus 250 MHz).
+
+One problem with the 9200SE is that some older XFree86 servers will not detect the chipset. To make this work, you can manually set the
+
+* ChipID 0x5964
+or
+
+* ChipID 0x5961
+to the Device line.
+
+You may also read [[http://users.actrix.co.nz/michael/radeon9200.html|http://users.actrix.co.nz/michael/radeon9200.html]]
+
+
+#### driver radeon/r300_dri.so
+
+Status (see also the [[r300 portal|R300_Portal]]) Unstable.
+
+Started as [[r300 project|http://r300.sourceforge.net/]], currently maintained in Mesa 3D, 3D driver for r3xx-r5xx cards. To build the latest version see Building.
+
+
+##### R300
+
+Radeon 3:
+
+* Radeon 9500
+* Radeon 9500 Pro
+* Radeon 9700
+* Radeon 9700 Pro
+The main difference between the 9500 Pro, and the 9500 is the number or rendering pipelines, half have been disabled in the 9500.
+
+The main difference between the 9500 cards, and the 9700 cards is the bus width, 128 bit for 9500's, 256 bit for 9700's.
+
+The difference between the 9700 Pro, and the 9700 is clock speed. The 9700 is made by third party manufacturers.
+
+All are based on the R300 chipset (this is probably why they can all use the FireGL drivers) and have DDR.
+
+
+##### rv350 / M10
+
+Radeon 3:
+
+* Radeon 9600
+* Radeon 9600 Pro
+The 9600 uses the Rv350 chipset which is a heavily modified R300 chip, the clock speed increased, the memory interface and Hyper-Z optimized, the number of pipelines halved, using a 0.13µm process.
+
+
+##### R350
+
+Radeon 3:
+
+* Radeon 9800
+* Radeon 9800 Pro
+Both these cards use the R350 chip which is a R300 chip which has been modified to be more efficient by improving its Hyper-Z implementation and colour compression algorithms, they also have a higher clock.
+
+The difference between the 9800 Pro and the 9800 is clock speed.
+
+
+##### rv360 / M11 / M12
+
+* Radeon 9600 XT
+The only differences between the rv350 and the rv360 appear to be an improvement in the manufacturing process and a boost in speed.
+
+
+##### R360
+
+* Radeon 9800 XT
+
+##### RV370 / M22
+
+* Radeon Xpress 200M
+* Radeon X300
+* Radeon X550
+* Radeon X1050
+
+##### RV380 / M24
+
+* Radeon X600, M24
+
+##### RS400
+
+* Radeon XPRESS 200/200M IGP
+Broken memory initialisation for 2D/3D. ( git version has fixes for this since June 2007, needs more testing on differing models )
+
+
+##### RV410 / M26
+
+* Radeon X700, M26 PCIE
+
+##### R420 / M18
+
+* Radeon X800 AGP
+
+##### R423/R430 / M28
+
+* Radeon X800, M28 PCIE
+
+##### R480/R481
+
+* Radeon X850 PCIE/AGP
+
+##### RV505
+
+* Radeon X1550, X1550 64bit
+Cut off version both in size and power of the R520.
+
+
+##### RV515 / M52 / M54 / M64
+
+* Radeon X1300, X1400, X1550, X1600; FireGL V3300, V3350
+Cut off version both in size and power of the R520.
+
+
+##### RV516
+
+* Radeon X1300, X1550, X1550 64bit, X1600; FireMV 2250
+Cut off version both in size and power of the R520.
+
+
+##### R520 / M58
+
+* Radeon X1800; FireGL V5300, V7200, V7300, V7350
+New chip design and memory controller. See the [[R520 wikipedia page|http://en.wikipedia.org/wiki/Radeon_R520]] for more info.
+
+
+##### RV530 / M54
+
+* Radeon X1300 XT, X1600, X1600 Pro, X1650; FireGL V3400, V5200
+Same as R515, but with more pixel shaders and one vertex shader
+
+
+##### RV535 / M64 / M66
+
+* Radeon X1300, X1650
+Smaller build process from RV530
+
+
+##### RV550 / M71
+
+* Radeon X2300 HD
+
+##### RV560
+
+* Radeon X1650
+
+##### RV570
+
+* Radeon X1950, X1950 GT; FireGL V7400
+Smaller build process from R580 with less texture units and pixel shaders. Also the first to have a internal Crossfire connector
+
+
+##### R580 / M59
+
+* Radeon X1900, X1950; AMD Stream Processor
+Update the R520 design, changed the pixel shader processor to texture processor ratio for better performance.
+
+
+#### driver radeon/r600_dri.so
+
+_Experimental._ Support has been merged to mesa 7.6 but still a lot of features are missing.
+
+
+##### R600
+
+* Radeon HD 2900 GT/Pro/XT; FireGL V7600, V8600, V8650
+New chip based in the "Unified shader model", different from previous chips. See [[R600 wikipedia|http://en.wikipedia.org/wiki/Radeon_R600]] for more info
+
+
+##### RV610 / M72
+
+* Radeon HD 2350, HD 2400 Pro/XT, HD 2400 Pro AGP; FireGL V4000
+RV610 variants have most of the shaders removed from the R600.
+
+
+##### RV630 / M76
+
+* Radeon HD 2600 LE/Pro/XT, HD 2600 Pro/XT AGP; Gemini RV630; FireGL V3600/V5600
+RV630 variants have many shaders removed from the R600.
+
+
+##### RV670
+
+* Radeon HD 3800
+
+##### R700 series
+
+* Radeon HD 4xxx
+
+### AMD/ATI Radeon chipset 2D support
+
+
+#### Driver "radeon"
+
+_stable_
+
+All radeons have open source 2D support. Note that R600/R700 series chips (X2300, X4650 etc.) are only recently supported by the "radeon" driver.
+
+As of September 2007, 6.7.194 driver may give better results with EXA output, instead of XAA. This will change DRI rendering performance also.
+
+[[ati/radeon development|http://cgit.freedesktop.org/xorg/driver/xf86-video-ati/]]
+
+
+#### Driver "radeonhd"
+
+_under development_
+
+The new radeonhd driver was initially to offer the sole support for R500/R600/R700 cards, but nowadays also the radeon driver supports those. It's therefore overlapping with radeon's card support, and radeonhd might be merged to radeon at some point if there's no use for a separate "newer" driver.
+
+[[radeonhd development|http://cgit.freedesktop.org/xorg/driver/xf86-video-radeonhd/]]
+
+
+#### Driver "vesa"
+
+_stable_
+
+The vesa driver can be used on most cards (no acceleration).
+
+
+### Radeon card naming and support information
+
+You also get fancy versions of most of these cards, e.g. VIVO, AIW, etc. This is just added functionality, i.e. stick on a TV tuner, a couple of chips.
+
+The reason for the renaming is to simplify matters for end users i.e. bigger number = better / faster. However rv#00 chipsets are cut down and thus slower versions of the R#00 chipsets with the same model number (and are often even slower than lower-numbered chipsets). The exception is the rv200 which is actually a faster version of the r100 core.
+
+Furthermore:
+
+ * _2D and 3D support available:_
+* 7000 denotes a rv100 based card.
+* 7200 denotes a R100 based card.
+* 7500 denotes a rv200 based card.
+* 8X00 denotes a R200 based card.
+* 9000 denotes a rv250 based card.
+* 9100 denotes a R200 based card
+* 9200 denotes a rv280 based card.
+* 9500 denotes a R300 based card.
+* 9600 denotes a rv350 or rv360 based card.
+* 9700 denotes a R300 based card.
+* 9800 denotes a R350 or R360 based card.
+* X300 denotes a rv370 based card.
+* X550 denotes a rv370 based card.
+* X600 denotes a rv380 based card.
+* X700 denotes a rv410 based card.
+* X800 denotes a R420 or R423 or R430 based card. And some "X800 GTO" cards seems to be based on R480 too.
+* X850 denotes a R480 or R481 based card.
+* X1050 denotes a rv370 based card.
+* X1200 denotes a RS690 based card.
+* X1300 denotes a RV515, RV516 based card. XT are RV530, RV535 based card.
+* X1550 denotes a RV505, RV515, RV516 based card.
+* X1600 denotes a RV515, RV516 based card. Pro are RV530 based card.
+* X1650 denotes a RV530, RV535, RV560 based card.
+* X1800 denotes a R520 based card.
+* X1900 denotes a R580 based card.
+* X1950 denotes a RV570, R580 based card.
+* X2300 denotes a RV550 based card.
+ * _Cards below this point have new 3D acceleration support_
+* HD2350 denotes a RV610 based card.
+* HD2400 denotes a RV610 based card.
+* HD2600 denotes a RV630 based card.
+* HD2900 denotes a R600 based card.
+* HD3850 denotes a RV670 based card.
+* HD3870 denotes a RV670 based card.
+(also see [[Comparison of ATI GPU:s at Wikipedia|http://en.wikipedia.org/wiki/Comparison_of_ATI_graphics_processing_units]])
+
+Legend:
+
+* SE = Stripped down version of the chip which has half the memory bandwidth (64 bit versus 128 bit).
+* VE = Value Edition
+* LE = Light Edition
+* SDR = Single Data Rate (RAM)
+* DDR = Double Data Rate (RAM)
+
+#### IGP
+
+The Radeon IGP chipsets do not have discrete video ram. They share system ram much like the Intel i8xx chips, and VIA/S3 Pro``Savage/Twister chips. There is support for 2D and 3D acceleration for the IGP chipsets in DRI and Mesa CVS. There is experimental 3D for Xpress 200M Northbridge integrated GPUs (june 2007).
+
+
+#### Dualhead
+
+All Radeon's except the 7200 (r100) have two crtcs and a built-in LVDS/TMDS controller. Not all OEMs connect these to actual ports so you may see boards that only support 1 head.
+
+Until driver version 6.7, if you wanted to use HW accelerated 3D on both heads of a dualheaded radeon card, you had to use the Radeon MergedFB option by [[AlexDeucher|AlexDeucher]]. Since version 6.7, the driver supports Randr 1.2, which allows screen hot (un)plugging, and dynamic multiheads. Just try "xrandr --auto" to get to biggest possible mode. A big "Virtual" option is needed to allow big multiheads.
+### Configuration
+
+Also see 'radeon' and 'xorg.conf' manpages.
+
+
+[[!format txt """
+Section "Module"
+ ...
+ Load "glx"
+ Load "dri"
+EndSection
+"""]]
+
+[[!format txt """
+Section "Device"
+ Identifier "name" # your alias
+ Driver "radeon"
+ Option "AccelMethod" "XAA"
+ # XAA/EXA
+ Option "AccelDFS" "1"
+ # 1/0 On for PCIE, off for AGP
+ # Manpage: Use or don't use accelerated EXA DownloadFromScreen hook
+ # when possible.
+ Option "AGPMode" "1"
+ # 1-8 Does not affect PCIE models.
+ Option "AGPFastWrite" "1"
+ # 1/0 Does not affect PCIE models. Not recommended.
+ Option "GARTSize" "64"
+ # 0-64 Megabytes of gart (system) memory used.
+ # Wrongly defaults to 8MB sometimes, see your logfile.
+ # Bigger seems better.
+ Option "EnablePageFlip" "1"
+ # 1/0 Increases 3D performance substantially
+ # seemingly in XAA mode only
+ Option "ColorTiling" "1"
+ # 1/0 Increases 3D performance substantially
+ # affected stability only positively on my system
+EndSection
+"""]]
+
+[[!format txt """
+Section "DRI"
+ Group "video"
+ Mode 0660
+EndSection
+"""]]
+Further finer, and per application, user-space configuration is achieved with [[DriConf|DriConf]]
+
+[[!img http://people.freedesktop.org/~fxkuehl/driconf/driconf.png]
+
+
+### Other drivers
+
+Alternatively proprietary non-libre 2D and 3D support is available through ATI/AMD's [[Fire GL linux driver "fglrx"|http://wiki.x.org/wiki/ATIProprietaryDriver]]
+
+
+
+---
+
+
+
+* [[CategoryHardwareChipset|CategoryHardwareChipset]] \ No newline at end of file
diff --git a/ATIRadeon.moin b/ATIRadeon.moin
deleted file mode 100644
index 40aeee5..0000000
--- a/ATIRadeon.moin
+++ /dev/null
@@ -1,357 +0,0 @@
-=== Summary ===
-
-This page contains information about Radeon chipset naming, and some other, possibly outdated information.
-
-The main portal for 3D acceleration on Radeon is aptly named [[Radeon]].
-
-<<TableOfContents>>
-
-=== AMD/ATI Radeon chipset 3D support ===
-
-Note this tables mainly applies to x86 machines. We make a best effort to support PowerPC/Sun cards with OpenFirmware,
-but we cannot always support these due to Apple/Sun hardcoding most of the details in their drivers.
-
-==== driver radeon/radeon_dri.so ====
-''Stable.''
-
-===== rv100 / M6 =====
-Original Radeons:
-
- * Radeon VE (1 texture pipeline, no TCL)
-Rereleased Radeons:
-
- * Radeon 7000 / M6 (1 texture pipeline, no TCL)
-The only differences between the releases are more RAM and higher clock speeds (possible due to a manufacturing process shrink) on the 7000.
-
-===== R100 =====
-Original Radeons:
-
- * Radeon SDR
- * Radeon DDR / LE
-Rereleased Radeons:
-
- * Radeon 7200 (SDR / DDR)
-The only differences between the releases are more RAM and higher clock speeds (possible due to a manufacturing process shrink) on the 7X00 cards.
-
-===== rv200 / M7 =====
- * Radeon 7500 (DDR)
- * FireGL 7800 (Mobile)
-The 7500 has a tweaked core, more RAM and higher clock speeds (possible due to a manufacturing process shrink). Despite the name (rv200), these cards are r100 based.
-
-==== driver radeon/r200_dri.so ====
-''Stable.''
-
-===== R200 =====
-Radeon 2:
-
- * Radeon 8500 LE
- * Radeon 8500
- * Radeon 9100
- * FireGL 8700
- * FireGL 8800
-The difference between the 8500, 8500 LE, 8700, and the 8800 is clock speed. The 8500 LE is made by third party manufacturers.
-
-The amounts of memory on these cards differs eg the 8800 has twice the memory as the 8700.
-
-All are based on the R200 chipset (this is why they can all use the FireGL drivers) and have DDR.
-
-The Radeon 9100 is a rerelease of the Radeon 8500 because it is faster than the Radeon 9000 (see below), the windows drivers offer "pixel shader supported video deblocking filtering" for this card.
-
-===== rv250 / M9 =====
-Radeon 2:
-
- * Radeon 9000
- * Radeon 9000 Pro
-The 9000 cards use the Rv250 chipset which is a heavily modified R200 chip, the clock speed increased, the number of texture units per pipeline halved, while the windows drivers offer "pixel shader supported video deblocking filtering" for this card.
-
-===== rv280 / M9+ =====
-Radeon 2:
-
- * Radeon 9200SE
- * Radeon 9200
- * Radeon 9250
-The difference between the Rv250 and the Rv280 is that the R9200 has AGP 8x while the Rv250 has AGP 4x.
-
-The 9200SE is a toned down version of the 9200 and has half the memory bandwidth (64 bit versus 128 bit) and lower clock speed (200 MHz versus 250 MHz).
-
-One problem with the 9200SE is that some older XFree86 servers will not detect the chipset. To make this work, you can manually set the
-
- . ChipID 0x5964
-or
-
- . ChipID 0x5961
-to the Device line.
-
-You may also read http://users.actrix.co.nz/michael/radeon9200.html
-
-
-==== driver radeon/r300_dri.so ====
-Status (see also the [[R300_Portal|r300 portal]]) Unstable.
-
-Started as [[http://r300.sourceforge.net/|r300 project]], currently maintained in Mesa 3D, 3D driver for r3xx-r5xx cards. To build the latest version see Building.
-
-===== R300 =====
-Radeon 3:
-
- * Radeon 9500
- * Radeon 9500 Pro
- * Radeon 9700
- * Radeon 9700 Pro
-The main difference between the 9500 Pro, and the 9500 is the number or rendering pipelines, half have been disabled in the 9500.
-
-The main difference between the 9500 cards, and the 9700 cards is the bus width, 128 bit for 9500's, 256 bit for 9700's.
-
-The difference between the 9700 Pro, and the 9700 is clock speed. The 9700 is made by third party manufacturers.
-
-All are based on the R300 chipset (this is probably why they can all use the FireGL drivers) and have DDR.
-
-===== rv350 / M10 =====
-Radeon 3:
-
- * Radeon 9600
- * Radeon 9600 Pro
-The 9600 uses the Rv350 chipset which is a heavily modified R300 chip, the clock speed increased, the memory interface and Hyper-Z optimized, the number of pipelines halved, using a 0.13µm process.
-
-===== R350 =====
-Radeon 3:
-
- * Radeon 9800
- * Radeon 9800 Pro
-Both these cards use the R350 chip which is a R300 chip which has been modified to be more efficient by improving its Hyper-Z implementation and colour compression algorithms, they also have a higher clock.
-
-The difference between the 9800 Pro and the 9800 is clock speed.
-
-===== rv360 / M11 / M12 =====
- * Radeon 9600 XT
-The only differences between the rv350 and the rv360 appear to be an improvement in the manufacturing process and a boost in speed.
-
-===== R360 =====
- * Radeon 9800 XT
-===== RV370 / M22 =====
- * Radeon Xpress 200M
- * Radeon X300
- * Radeon X550
- * Radeon X1050
-===== RV380 / M24 =====
- * Radeon X600, M24
-===== RS400 =====
- * Radeon XPRESS 200/200M IGP
-Broken memory initialisation for 2D/3D. ( git version has fixes for this since June 2007, needs more testing on differing models )
-
-===== RV410 / M26 =====
- * Radeon X700, M26 PCIE
-===== R420 / M18 =====
- * Radeon X800 AGP
-===== R423/R430 / M28 =====
- * Radeon X800, M28 PCIE
-===== R480/R481 =====
- * Radeon X850 PCIE/AGP
-
-===== RV505 =====
- * Radeon X1550, X1550 64bit
-
-Cut off version both in size and power of the R520.
-
-===== RV515 / M52 / M54 / M64 =====
- * Radeon X1300, X1400, X1550, X1600; FireGL V3300, V3350
-
-Cut off version both in size and power of the R520.
-
-===== RV516 =====
- * Radeon X1300, X1550, X1550 64bit, X1600; FireMV 2250
-
-Cut off version both in size and power of the R520.
-
-===== R520 / M58 =====
- * Radeon X1800; FireGL V5300, V7200, V7300, V7350
-
-New chip design and memory controller.
-See the [[http://en.wikipedia.org/wiki/Radeon_R520|R520 wikipedia page]] for more info.
-
-===== RV530 / M54 =====
- * Radeon X1300 XT, X1600, X1600 Pro, X1650; FireGL V3400, V5200
-
-Same as R515, but with more pixel shaders and one vertex shader
-
-===== RV535 / M64 / M66 =====
- * Radeon X1300, X1650
-
-Smaller build process from RV530
-
-===== RV550 / M71 =====
- * Radeon X2300 HD
-
-===== RV560 =====
- * Radeon X1650
-
-===== RV570 =====
- * Radeon X1950, X1950 GT; FireGL V7400
-
-Smaller build process from R580 with less texture units and pixel shaders. Also the first to have a internal Crossfire connector
-
-===== R580 / M59 =====
- * Radeon X1900, X1950; AMD Stream Processor
-
-Update the R520 design, changed the pixel shader processor to texture processor ratio for better performance.
-
-==== driver radeon/r600_dri.so ====
-''Experimental.'' Support has been merged to mesa 7.6 but still a lot of features are missing.
-
-===== R600 =====
- * Radeon HD 2900 GT/Pro/XT; FireGL V7600, V8600, V8650
-
-New chip based in the "Unified shader model", different from previous chips.
-See [[http://en.wikipedia.org/wiki/Radeon_R600|R600 wikipedia]] for more info
-
-===== RV610 / M72 =====
- * Radeon HD 2350, HD 2400 Pro/XT, HD 2400 Pro AGP; FireGL V4000
-
-RV610 variants have most of the shaders removed from the R600.
-
-===== RV630 / M76 =====
- * Radeon HD 2600 LE/Pro/XT, HD 2600 Pro/XT AGP; Gemini RV630; FireGL V3600/V5600
-
-RV630 variants have many shaders removed from the R600.
-
-===== RV670 =====
- * Radeon HD 3800
-
-===== R700 series =====
-
- * Radeon HD 4xxx
-
-=== AMD/ATI Radeon chipset 2D support ===
-==== Driver "radeon" ====
-''stable''
-
-All radeons have open source 2D support. Note that R600/R700 series chips (X2300, X4650 etc.) are only recently supported by the "radeon" driver.
-
-As of September 2007, 6.7.194 driver may give better results with EXA output, instead of XAA. This will change DRI rendering performance also.
-
-[[http://cgit.freedesktop.org/xorg/driver/xf86-video-ati/|ati/radeon development]]
-
-==== Driver "radeonhd" ====
-''under development''
-
-The new radeonhd driver was initially to offer the sole support for R500/R600/R700 cards, but nowadays also the radeon driver supports those. It's therefore overlapping with radeon's card support, and radeonhd might be merged to radeon at some point if there's no use for a separate "newer" driver.
-
-[[http://cgit.freedesktop.org/xorg/driver/xf86-video-radeonhd/|radeonhd development]]
-
-==== Driver "vesa" ====
-''stable''
-
-The vesa driver can be used on most cards (no acceleration).
-
-=== Radeon card naming and support information ===
-
-You also get fancy versions of most of these cards, e.g. VIVO, AIW, etc. This is just added functionality, i.e. stick on a TV tuner, a couple of chips.
-
-The reason for the renaming is to simplify matters for end users i.e. bigger number = better / faster. However rv#00 chipsets are cut down and thus slower versions of the R#00 chipsets with the same model number (and are often even slower than lower-numbered chipsets). The exception is the rv200 which is actually a faster version of the r100 core.
-
-Furthermore:
-
- * ''2D and 3D support available:''
- * 7000 denotes a rv100 based card.
- * 7200 denotes a R100 based card.
- * 7500 denotes a rv200 based card.
- * 8X00 denotes a R200 based card.
- * 9000 denotes a rv250 based card.
- * 9100 denotes a R200 based card
- * 9200 denotes a rv280 based card.
- * 9500 denotes a R300 based card.
- * 9600 denotes a rv350 or rv360 based card.
- * 9700 denotes a R300 based card.
- * 9800 denotes a R350 or R360 based card.
- * X300 denotes a rv370 based card.
- * X550 denotes a rv370 based card.
- * X600 denotes a rv380 based card.
- * X700 denotes a rv410 based card.
- * X800 denotes a R420 or R423 or R430 based card. And some "X800 GTO" cards seems to be based on R480 too.
- * X850 denotes a R480 or R481 based card.
- * X1050 denotes a rv370 based card.
- * X1200 denotes a RS690 based card.
- * X1300 denotes a RV515, RV516 based card. XT are RV530, RV535 based card.
- * X1550 denotes a RV505, RV515, RV516 based card.
- * X1600 denotes a RV515, RV516 based card. Pro are RV530 based card.
- * X1650 denotes a RV530, RV535, RV560 based card.
- * X1800 denotes a R520 based card.
- * X1900 denotes a R580 based card.
- * X1950 denotes a RV570, R580 based card.
- * X2300 denotes a RV550 based card.
- * ''Cards below this point have new 3D acceleration support''
- * HD2350 denotes a RV610 based card.
- * HD2400 denotes a RV610 based card.
- * HD2600 denotes a RV630 based card.
- * HD2900 denotes a R600 based card.
- * HD3850 denotes a RV670 based card.
- * HD3870 denotes a RV670 based card.
-
-(also see [[http://en.wikipedia.org/wiki/Comparison_of_ATI_graphics_processing_units|Comparison of ATI GPU:s at Wikipedia]])
-
-Legend:
-
- * SE = Stripped down version of the chip which has half the memory bandwidth (64 bit versus 128 bit).
- * VE = Value Edition
- * LE = Light Edition
- * SDR = Single Data Rate (RAM)
- * DDR = Double Data Rate (RAM)
-
-==== IGP ====
-The Radeon IGP chipsets do not have discrete video ram. They share system ram much like the Intel i8xx chips, and VIA/S3 Pro``Savage/Twister chips. There is support for 2D and 3D acceleration for the IGP chipsets in DRI and Mesa CVS. There is experimental 3D for Xpress 200M Northbridge integrated GPUs (june 2007).
-
-==== Dualhead ====
-All Radeon's except the 7200 (r100) have two crtcs and a built-in LVDS/TMDS controller. Not all OEMs connect these to actual ports so you may see boards that only support 1 head.
-
-Until driver version 6.7, if you wanted to use HW accelerated 3D on both heads of a dualheaded radeon card, you had to use the Radeon MergedFB option by AlexDeucher.
-Since version 6.7, the driver supports Randr 1.2, which allows screen hot (un)plugging, and dynamic multiheads. Just try "xrandr --auto" to get to biggest possible mode. A big "Virtual" option is needed to allow big multiheads.
-=== Configuration ===
-Also see 'radeon' and 'xorg.conf' manpages.
-
-{{{
-Section "Module"
- ...
- Load "glx"
- Load "dri"
-EndSection
-}}}
-{{{
-Section "Device"
- Identifier "name" # your alias
- Driver "radeon"
- Option "AccelMethod" "XAA"
- # XAA/EXA
- Option "AccelDFS" "1"
- # 1/0 On for PCIE, off for AGP
- # Manpage: Use or don't use accelerated EXA DownloadFromScreen hook
- # when possible.
- Option "AGPMode" "1"
- # 1-8 Does not affect PCIE models.
- Option "AGPFastWrite" "1"
- # 1/0 Does not affect PCIE models. Not recommended.
- Option "GARTSize" "64"
- # 0-64 Megabytes of gart (system) memory used.
- # Wrongly defaults to 8MB sometimes, see your logfile.
- # Bigger seems better.
- Option "EnablePageFlip" "1"
- # 1/0 Increases 3D performance substantially
- # seemingly in XAA mode only
- Option "ColorTiling" "1"
- # 1/0 Increases 3D performance substantially
- # affected stability only positively on my system
-EndSection
-}}}
-{{{
-Section "DRI"
- Group "video"
- Mode 0660
-EndSection
-}}}
-Further finer, and per application, user-space configuration is achieved with DriConf
-
-{{http://people.freedesktop.org/~fxkuehl/driconf/driconf.png}}
-
-=== Other drivers ===
-Alternatively proprietary non-libre 2D and 3D support is available through ATI/AMD's [[http://wiki.x.org/wiki/ATIProprietaryDriver|Fire GL linux driver "fglrx"]]
-
-----
- . CategoryHardwareChipset
diff --git a/ATIRage128.mdwn b/ATIRage128.mdwn
new file mode 100644
index 0000000..b1569a6
--- /dev/null
+++ b/ATIRage128.mdwn
@@ -0,0 +1,34 @@
+
+
+# ATI Rage 128
+
+
+## Status
+
+The ATI Rage128 desktop and mobility chips are supported by the DRI. [[EricAnholt|EricAnholt]] recently added pageflipping support. You can enable pageflipping by adding this to your config:
+
+
+[[!format txt """
+Option "EnablePageFlip" "true"
+"""]]
+It will give you a small boost in performance, but it causes problems for some people.
+
+There is no support for suspend/resume for r128. It shouldn't be too hard to add support. Take a look at the radeon suspend/resume code. I think Xv also needs some fixes for suspend/resume.
+
+Todo: implement hardware-accelerated projective texturing
+
+
+## Specifications
+
+The register documentation is available on Wikipedia
+
+[[http://en.wikipedia.org/wiki/Rage_128|http://en.wikipedia.org/wiki/Rage_128]]
+
+
+## Resources
+
+
+
+---
+
+ [[CategoryHardwareChipset|CategoryHardwareChipset]]
diff --git a/ATIRage128.moin b/ATIRage128.moin
deleted file mode 100644
index 4a77377..0000000
--- a/ATIRage128.moin
+++ /dev/null
@@ -1,29 +0,0 @@
-= ATI Rage 128 =
-
-== Status ==
-
-The ATI Rage128 desktop and mobility chips are supported by the DRI. EricAnholt recently added pageflipping support. You can enable pageflipping by adding this to your config:
-
-{{{
-Option "EnablePageFlip" "true"
-}}}
-
-It will give you a small boost in performance, but it causes problems
-for some people.
-
-There is no support for suspend/resume for r128. It shouldn't be too
-hard to add support. Take a look at the radeon suspend/resume code. I
-think Xv also needs some fixes for suspend/resume.
-
-Todo: implement hardware-accelerated projective texturing
-
-== Specifications ==
-
-The register documentation is available on Wikipedia
-
-http://en.wikipedia.org/wiki/Rage_128
-
-== Resources ==
-
-----
-CategoryHardwareChipset
diff --git a/AdamJackson.mdwn b/AdamJackson.mdwn
new file mode 100644
index 0000000..d0f8b08
--- /dev/null
+++ b/AdamJackson.mdwn
@@ -0,0 +1,8 @@
+
+DRI and X hacker, graphics archaeologist, beer snob.
+
+Current DRI projects:
+
+* [[NumberNine|NumberNine]] driver
+* other stuff (TODO: fill me in)
+[[web page|http://people.freedesktop.org/~ajax/]]
diff --git a/AdamJackson.moin b/AdamJackson.moin
deleted file mode 100644
index b2d6ce7..0000000
--- a/AdamJackson.moin
+++ /dev/null
@@ -1,8 +0,0 @@
-DRI and X hacker, graphics archaeologist, beer snob.
-
-Current DRI projects:
-
- * [[NumberNine]] driver
- * other stuff (TODO: fill me in)
-
-[[http://people.freedesktop.org/~ajax/|web page]]
diff --git a/AdminGroup.mdwn b/AdminGroup.mdwn
new file mode 100644
index 0000000..e074ba7
--- /dev/null
+++ b/AdminGroup.mdwn
@@ -0,0 +1,9 @@
+
+People that administer this wiki:
+
+* [[AdamJackson2|AdamJackson2]]
+* [[AdamJackson|AdamJackson]]
+* [[JoseFonseca|JoseFonseca]]
+* [[DanielStone|DanielStone]]
+* [[ZackRusin|ZackRusin]]
+* [[TollefFogHeen|TollefFogHeen]] \ No newline at end of file
diff --git a/AdminGroup.moin b/AdminGroup.moin
deleted file mode 100644
index 98555b7..0000000
--- a/AdminGroup.moin
+++ /dev/null
@@ -1,8 +0,0 @@
-#acl AdminGroup:admin,read,write All:read
-People that administer this wiki:
- * AdamJackson2
- * AdamJackson
- * JoseFonseca
- * DanielStone
- * ZackRusin
- * TollefFogHeen
diff --git a/AlanCox.mdwn b/AlanCox.mdwn
new file mode 100644
index 0000000..9dfdcef
--- /dev/null
+++ b/AlanCox.mdwn
@@ -0,0 +1,17 @@
+
+
+## Your Name
+Email
+: alan at redhat dot com
+
+Homepage
+:
+.[[http://www.linux.org.uk/diary|http://www.linux.org.uk/diary]]
+
+
+
+
+
+---
+
+ [[CategoryHomepage|CategoryHomepage]]
diff --git a/AlanCox.moin b/AlanCox.moin
deleted file mode 100644
index 3415d24..0000000
--- a/AlanCox.moin
+++ /dev/null
@@ -1,10 +0,0 @@
-== Your Name ==
-
- Email:: alan at redhat dot com
-
- Homepage:: .http://www.linux.org.uk/diary
-
-----
-CategoryHomepage
-
-
diff --git a/AlanHourihane.mdwn b/AlanHourihane.mdwn
new file mode 100644
index 0000000..ae4d3d9
--- /dev/null
+++ b/AlanHourihane.mdwn
@@ -0,0 +1,25 @@
+
+
+## Alan Hourihane
+
+[[!img http://www.tungstengraphics.com/photos/alan.jpg]
+Email
+: alanh at fairlite dot demon dot co dot uk
+
+Homepage
+:
+[[http://www.xfree86.org/~alanh/|http://www.xfree86.org/~alanh/]]
+
+
+Interests
+:
+ * XFree86
+ * 3Dlabs and Trident drivers
+ * VNC
+
+
+
+
+---
+
+ [[CategoryHomepage|CategoryHomepage]]
diff --git a/AlanHourihane.moin b/AlanHourihane.moin
deleted file mode 100644
index f078758..0000000
--- a/AlanHourihane.moin
+++ /dev/null
@@ -1,15 +0,0 @@
-== Alan Hourihane ==
-
-{{http://www.tungstengraphics.com/photos/alan.jpg}}
-
- Email:: alanh at fairlite dot demon dot co dot uk
-
- Homepage:: http://www.xfree86.org/~alanh/
-
- Interests::
- * XFree86
- * 3Dlabs and Trident drivers
- * VNC
-
-----
-CategoryHomepage
diff --git a/AlecAri.moin b/AlecAri.mdwn
index e31ab64..feb9f06 100644
--- a/AlecAri.moin
+++ b/AlecAri.mdwn
@@ -1,13 +1,26 @@
-== Alec Ari ==
-
- Email:: neotheuser@ymail.com
-
- Homepage:: http://neo-technical.wikispaces.com
- Interests:: learning bits and peices of code all over cgit.freedesktop.org
- * compiling things
- * git
-
-Some people refer to me as Neo_The_User as that was my hacker alias back in the day when I was big on PS3 (Playstation 3) hacking. I wrote several different NAND flashers for PSP (Playstation Portable) along with a few other developers. I then started my own Playstation 3 development team along with some other people and then... it kinda just fell apart so now I just tinker with stuff.
-
-----
-CategoryHomepage
+
+
+## Alec Ari
+Email
+:
+[[neotheuser@ymail.com|mailto:neotheuser@ymail.com]]
+
+
+Homepage
+:
+[[http://neo-technical.wikispaces.com|http://neo-technical.wikispaces.com]]
+
+
+Interests
+: learning bits and peices of code all over cgit.freedesktop.org
+ * compiling things
+ * git
+
+
+Some people refer to me as Neo_The_User as that was my hacker alias back in the day when I was big on PS3 (Playstation 3) hacking. I wrote several different NAND flashers for PSP (Playstation Portable) along with a few other developers. I then started my own Playstation 3 development team along with some other people and then... it kinda just fell apart so now I just tinker with stuff.
+
+
+
+---
+
+ [[CategoryHomepage|CategoryHomepage]]
diff --git a/AlexDeucher.mdwn b/AlexDeucher.mdwn
new file mode 100644
index 0000000..3a8df8d
--- /dev/null
+++ b/AlexDeucher.mdwn
@@ -0,0 +1,19 @@
+
+
+## Alex Deucher
+
+Email: agd5f at yahoo dot com
+
+Developer and maintainer of MergedFB support for ATIRadeon hardware and general Xorg developer.
+
+[[S3Savage|S3Savage]] DRI support - available in Xorg 6.9.0+
+
+[[S3Savage|S3Savage]] EXA support - available in xorg cvs
+
+[[S3Savage|S3Savage]] [[Dualhead (Duoview) support|http://www.botchco.com/alex/new-savage/html/]] - available in Xorg 6.9.0+
+
+ATIRage128 [[Dualhead Support|http://www.botchco.com/alex/r128]] - available in Xorg 6.9.0+
+
+[[SiliconMotion|SiliconMotion]] Dualhead Support - in progress
+
+ATIMach64 Dualhead Support - no hardware
diff --git a/AlexDeucher.moin b/AlexDeucher.moin
deleted file mode 100644
index 4e9228b..0000000
--- a/AlexDeucher.moin
+++ /dev/null
@@ -1,17 +0,0 @@
-== Alex Deucher ==
-
-Email: agd5f at yahoo dot com
-
-Developer and maintainer of MergedFB support for ATIRadeon hardware and general Xorg developer.
-
-S3Savage DRI support - available in Xorg 6.9.0+
-
-S3Savage EXA support - available in xorg cvs
-
-S3Savage [[http://www.botchco.com/alex/new-savage/html/|Dualhead (Duoview) support]] - available in Xorg 6.9.0+
-
-ATIRage128 [[http://www.botchco.com/alex/r128|Dualhead Support]] - available in Xorg 6.9.0+
-
-SiliconMotion Dualhead Support - in progress
-
-ATIMach64 Dualhead Support - no hardware
diff --git a/AlexanderStohr.mdwn b/AlexanderStohr.mdwn
new file mode 100644
index 0000000..ad54a98
--- /dev/null
+++ b/AlexanderStohr.mdwn
@@ -0,0 +1,2 @@
+
+[[http://www.dg3mmf.de|http://www.dg3mmf.de]]
diff --git a/AlexanderStohr.moin b/AlexanderStohr.moin
deleted file mode 100644
index 6762016..0000000
--- a/AlexanderStohr.moin
+++ /dev/null
@@ -1 +0,0 @@
-http://www.dg3mmf.de
diff --git a/AndrewRandrianasulu.moin b/AndrewRandrianasulu.mdwn
index 5d911df..307a711 100644
--- a/AndrewRandrianasulu.moin
+++ b/AndrewRandrianasulu.mdwn
@@ -1,63 +1,68 @@
-== Andrew Randrianasulu ==
-
- Email:: randrianasulu_AT_yahoo.com
-
- Homepage:: none
- Interests::
- * Graphics hardware
- * Dogs, dolphins, and so on ...
-
-I have old rv280 (radeon 9200SE) videocard, and some old nvidia cards, all AGP.
-Mostly interested in speed optimization. See this data for some numbers:
-
-[[http://www.opensubscriber.com/message/dri-devel@lists.sourceforge.net/631188.html]]
-
-{{{
-
-AGP 1x, GART only, best: 38 fps
-AGP 1x, GART only, 2nd: 50 fps
-AGP 1x, local only, best: 33 fps
-AGP 1x, local only, 2nd: 74 fps
-AGP 1x, GART+local, best: 54 fps
-AGP 1x, GART+local, 2nd: 75 fps
-
-AGP 2x, GART only, best: 57 fps
-AGP 2x, GART only, 2nd: 70 fps
-AGP 2x, local only, best: 34 fps
-AGP 2x, local only, 2nd: 74 fps
-AGP 2x, GART+local, best: 64 fps
-AGP 2x, GART+local, 2nd: 74 fps
-
-}}}
-
-Where hw was described as
-
-{{{
-Celeron Tualatin 1000@1330 on bx-133 (note this has consequences for AGP
-speed, AGP 1x will actually have transfer rate of "AGP 1.33x", AGP 2x is
-"AGP 2.66x"), 1.06GB/s main memory bandwidth. Graphic card is a Radeon
-7200 SDR (@160Mhz, memory bandwidth is a paltry 2.05GB/s) 32MB.
-}}}
-
-and test was done using Q3 v1.32b
-
-{{{
-QuakeIII 1.32b, 800x600 windowed, timedemo demo four, with color tiling,
-with texture tiling (that's another story, btw...), with hyperz, without
-compressed textures, 32bit textures, trilinear. "best" means highest
-texture quality, "2nd" means I used the second-highest texture quality
-setting.
-}}}
-
-For me currently (09-02-2010) mesa 7.8 in KMS mode, with some hyperz hacked in, gives roughly 20 fps in 1024x768x32 fullscreen. (but i have q3demo v1.11, and demo002)
-
-Hacks are:
-
-
-[[attachment:r200_hyper_hacks_not_working_yet_v5.diff]]
-
-
-[[attachment:r200_hyperz_kernel.patch]]
-
-----
-CategoryHomepage
+
+
+## Andrew Randrianasulu
+Email
+: randrianasulu_AT_yahoo.com
+
+Homepage
+: none
+
+Interests
+:
+ * Graphics hardware
+ * Dogs, dolphins, and so on ...
+
+
+I have old rv280 (radeon 9200SE) videocard, and some old nvidia cards, all AGP. Mostly interested in speed optimization. See this data for some numbers:
+
+[[http://www.opensubscriber.com/message/dri-devel@lists.sourceforge.net/631188.html|http://www.opensubscriber.com/message/dri-devel@lists.sourceforge.net/631188.html]]
+
+
+[[!format txt """
+AGP 1x, GART only, best: 38 fps
+AGP 1x, GART only, 2nd: 50 fps
+AGP 1x, local only, best: 33 fps
+AGP 1x, local only, 2nd: 74 fps
+AGP 1x, GART+local, best: 54 fps
+AGP 1x, GART+local, 2nd: 75 fps
+
+AGP 2x, GART only, best: 57 fps
+AGP 2x, GART only, 2nd: 70 fps
+AGP 2x, local only, best: 34 fps
+AGP 2x, local only, 2nd: 74 fps
+AGP 2x, GART+local, best: 64 fps
+AGP 2x, GART+local, 2nd: 74 fps
+
+"""]]
+Where hw was described as
+
+
+[[!format txt """
+Celeron Tualatin 1000@1330 on bx-133 (note this has consequences for AGP
+speed, AGP 1x will actually have transfer rate of "AGP 1.33x", AGP 2x is
+"AGP 2.66x"), 1.06GB/s main memory bandwidth. Graphic card is a Radeon
+7200 SDR (@160Mhz, memory bandwidth is a paltry 2.05GB/s) 32MB.
+"""]]
+and test was done using Q3 v1.32b
+
+
+[[!format txt """
+QuakeIII 1.32b, 800x600 windowed, timedemo demo four, with color tiling,
+with texture tiling (that's another story, btw...), with hyperz, without
+compressed textures, 32bit textures, trilinear. "best" means highest
+texture quality, "2nd" means I used the second-highest texture quality
+setting.
+"""]]
+For me currently (09-02-2010) mesa 7.8 in KMS mode, with some hyperz hacked in, gives roughly 20 fps in 1024x768x32 fullscreen. (but i have q3demo v1.11, and demo002)
+
+Hacks are:
+
+[[r200_hyper_hacks_not_working_yet_v5.diff|r200_hyper_hacks_not_working_yet_v5.diff]]
+
+[[r200_hyperz_kernel.patch|r200_hyperz_kernel.patch]]
+
+
+
+---
+
+ [[CategoryHomepage|CategoryHomepage]]
diff --git a/AuthorshipAndAcknowledgements.mdwn b/AuthorshipAndAcknowledgements.mdwn
new file mode 100644
index 0000000..97e6175
--- /dev/null
+++ b/AuthorshipAndAcknowledgements.mdwn
@@ -0,0 +1,7 @@
+
+
+# Authorship and Acknowledgments
+
+This Wiki is maintained by [[JoseFonseca|JoseFonseca]], originally based on the _DRI Developer's FAQ_, which in turn was compiled from the posts and comments of the DRI developers mailing list subscribers.
+
+**NOTE:** In the impossibility of getting every person permission to quote them, if you are the author of any material here and don't want its reproduction please contact the author and it will be promptly removed.
diff --git a/AuthorshipAndAcknowledgements.moin b/AuthorshipAndAcknowledgements.moin
deleted file mode 100644
index 1834d25..0000000
--- a/AuthorshipAndAcknowledgements.moin
+++ /dev/null
@@ -1,5 +0,0 @@
-= Authorship and Acknowledgments =
-
-This Wiki is maintained by JoseFonseca, originally based on the ''DRI Developer's FAQ'', which in turn was compiled from the posts and comments of the DRI developers mailing list subscribers.
-
-'''NOTE:''' In the impossibility of getting every person permission to quote them, if you are the author of any material here and don't want its reproduction please contact the author and it will be promptly removed.
diff --git a/BSD.mdwn b/BSD.mdwn
new file mode 100644
index 0000000..23efeff
--- /dev/null
+++ b/BSD.mdwn
@@ -0,0 +1,11 @@
+
+
+# BSD
+
+See FreeBSD.
+
+
+
+---
+
+ [[CategoryOperatingSystem|CategoryOperatingSystem]]
diff --git a/BSD.moin b/BSD.moin
deleted file mode 100644
index b03dd3d..0000000
--- a/BSD.moin
+++ /dev/null
@@ -1,6 +0,0 @@
-= BSD =
-
-See FreeBSD.
-
-----
-CategoryOperatingSystem
diff --git a/BadContent.mdwn b/BadContent.mdwn
new file mode 100644
index 0000000..b40588f
--- /dev/null
+++ b/BadContent.mdwn
@@ -0,0 +1,9 @@
+
+([\w\-_.]+\.)?(l(so|os)tr)\.[a-z]{2,} (blow)[\w\-_.]*job[\w\-_.]*\.[a-z]{2,} (buy)[\w\-_.]*online[\w\-_.]*\.[a-z]{2,} (gambling|porn|busty|prescription|pharmacy|penis|pills|enlarge)[\w\-_.]*\.[a-z]{2,} (diet|penis)[\w\-_.]*(pills|enlargement)[\w\-_.]*\.[a-z]{2,} (annunci|tatuaggi|canzoni|musicali|scarica|sesso|hentai|ragazze|sonnerie)[\w\-_.]*\.[a-z]{2,} (i|la)-sonneries?[\w\-_.]*\.[a-z]{2,} (incest|beastiality)[\w\-_.]*\.[a-z]{2,3} (levitra|lolita|phentermine|viagra|vig-?rx|zyban|valtex|xenical|adipex|meridia\b)[\w\-_.]*\.[a-z]{2,} (magazine)[\w\-_.]*(finder|netfirms)[\w\-_.]*\.[a-z]{2,} (mike)[\w\-_.]*apartment[\w\-_.]*\.[a-z]{2,} (milf)[\w\-_.]*(hunter|moms|fucking)[\w\-_.]*\.[a-z]{2,} (online)[\w\-_.]*casino[\w\-_.]*\.[a-z]{2,} (paid|online)[\w\-_.]*surveys[\w\-_.]*\.[a-z]{2,} (prozac|zoloft|xanax|valium|hydrocodone|vicodin|paxil|vioxx)[\w\-_.]*\.[a-z]{2,} (puss(ie|y)|adult|sex|fuck|suck|cock|virgin)\S{0,15}\.info/ (ragazze)-?\w+\.[a-z]{2,} (ultram\b|\btenuate|tramadol|pheromones|phendimetrazine|ionamin|ortho.?tricyclen|retin.?a)[\w\-_.]*\.[a-z]{2,} (valtrex|zyrtec|\bhgh\b|ambien\b|flonase|allegra|didrex|renova\b|bontril|nexium)[\w\-_.]*\.[a-z]{2,} \.(chat|boom|fromru|hotmail|newmail|nightmail|nm|narod|pochta)\.ru \.[0-9]{5,}\.(com|net|org|us|biz|cn|ru) \.4t\.com \.51\.net \.6x\.to \.a\.la/ \.b3\.nu \.cameroun\.ws \.flywebs\.com \.free-25\.de \.gb.com \.hostrim\.com \.qn.com \.sbn\.bz \.shell\.la \.static\.net \.t35\.com \.uk\.to \.uni\.cc \.w28\.org \.wol\.bz \.wtf\.la \.xs3\.com \.ya\.com \.yadoo\.cn \bda\.ru\b \bde\.gg\b \bde\.nr\b \bde\.tc\b \bde\.tp\b \bgo\.ro\b \w+\.sh\.cn 0008888.com 000site\.com 0020.net 0030.net 00freehost\.com 01-beltonen.com 01-klingeltoene.at 01-klingeltoene.de 01-loghi.com 01-logot?.com 01-logotyper.com 01-melodias?.com 01mobile.com 01-ringe?tones?.com 01-ringe?tones?.us 01-ringsignaler.com 01ringtones.co.uk 01-soittoaanet.com 01-suonerie.com 01-toque.com 0adult-cartoon.com 0cartoon.com 0cartoon-sex.com 0catch.com 0livesex.com 0sex-toons.com 0sfondi.com 0sfondi-desktop.com 0suonerie.com 0toons.com 0xxx-cartoon.com 1000\-celebs\.com 100comm.com 100hgh.com 100-sex.com 100megsfree5\.com 108bikes.com 110fat.com 11126.com 123-sign-making-equipment-and-supplies.com 125mb.com 125we.com 148-law.com 150m\.com 158hk\.com\.cn 163ns.com 163school.com.cn 168Education.com 168marketing.com 168wire.com 16safe.com 17train.com 1816.net 18caixin.com 18ny.com 18show.cn 1accesshost\.com 1afm\.com 1asphost.com 1-bignaturals.com 1concerttickets.com 1-cumfiesta.com 1domiks\.org 1ebalo\.org 1foleks\.org 1footballtickets.com 1golod\.org 1hrens\.org 1ibanusiks\.org 1jolla\.org 1-klingeltone.com 1so.com.cn 1so\.net\.cn 1st-(auto-insurance-4u|phonecard|printer-ink-cartridge|shemale-sex).com 1st-host.org 1stindustrialdirectory.com 1stlookcd.com 1stop[\w-]*.com 1st-payday-loans.net 1sweethost\.com 1-texas-holdem.us 1und1-shopping.de 1-welivetogether.com 1-wholesale-distributor.com 1xp6z.com 2008travel.com 20fr.com 216.130.167.230 24-hour-fitness-online.com 269s.tinline.com 269s\.com 2ndmortgageinterestrates.com 2twinks.com 30-60-90-day-sales-plan\.com 321cigarettes.com 3333.ws 35tk\.com 365jp.com 3ccenter\.com 3host.com 3-sexy.com 3sheng.net 3sixtyfour.com 3yaoi.com 404host.com 41b.net 42tower.ws 4mg.com 4u-topshelfpussy.com 4womenoftheworld.com 5118.com 5118.net.cn 512j.com 5151office\.cn 51asa.com 51dragon.com 51nlp\.com 51weixing.com 51wisdom.com 51zhengxing.net 54eo.com 5782601.net 58798309dyb.com 591dy.com 625fang\.com 63174828.com 63dns.com 65.217.108.182 66.197.102.2 666house\.com 66battery.com 66cable.com 66cellphone.com 66ceramic.com 66floor.com 66interior.com 66logistics.com 66machine.com 66packing.com 66sculpture.com 66supply.com 66tools.com 68685633.com 68l.com 69.61.11.163 69yo.com 6p.org.uk 6x.to 71space\.[a-z]{2,} 7p.org.uk 8848flower.com 888cas.com 888jack.com 888steel.com 888-texas-holdem.com 88aabb.com 88feedstuff.com 88fiber.com 88telephone.com 8cx.net 8cx\.net 8k.com 8th\S*street\S*latina\S*\.[a-z]{2,} 911\.uni\.cc 9136\.cn 91dir.com 91xz.info 999777888.com/jkcy009 99bbcc.com 99caixin.com 99jl.net 9sf\.cn a1-mortgage-finder.com a-1-versicherungsvergleich.de a688.net aaaaaaaa.ru aaff.net aajj.net aaliyah\.ws aauu.net abc3x.com abcink\.com abnehmen-ganz-sicher.com abocams.de abymetro.org.uk ac8888.com academytrans.com accessories-car.com accompagnatrici.cc acme\-arts\.com acmetranslation\.com acornwebdesign.co.uk activeshow\.net acupuncturealliance\.org acyclovir.net ad.huwh.org aducasher.spb.ru adult\-categories\.info adult-dvds?-dot.com adultfreehosting.com adult-free-webcams.com adult-friend.info adultfriendfinder.com adultfriendfindernow.com adultfriendfindersite.com adultfriendsite.com adult-games.name adulthostpro.com adultlingerieuk.com adultnonstop.com adultpics.com adultserviceproviders.com adultshare.com advantage-quotes.com a--e.com aegean.net.cn aektschen.de aerohose.com aesthetics.co.il afreeserver.com agentsmax\.com agreatserver.com aids120.95.cn aimaiti.com aimite.com air520\.com airfare-links.net airshow-china.com.cn airtrip.com.cn akkx\.info alawna.blogspot.com alexanet.com alfago.com alhaurin.to all-debt-consolidation.org allfind.us all-fioricet.com allinsurancetype.com allmagic.ru allof.myphotos.cc alloha.info allohaweb.com all-porn.info all-rxdrugs.com all-we-live-together.com allwoodoxford.com almacenpc.com alprazolam-online.qn.com amateur-(lesbian|movie|naked|site).us amateurs.r00m.com amateursuite.com amateurs-xxx.us amateur-thumbs.net ambien-online-order.zx81.at ambien-prescription.qn.com americacashfast.com americancdduplication.com americanpaydayloans.net american-single-dating.com amoxicillin-online.net amoyplastic.com anacondasex\.info analloverz.com anal-sex-pictures.us anchuang.com.cn andyedf.de angenehmen-aufenthalt.de angrybirdsblog\.com animalsex-movies-archive.com animalsex-pics-gallery.com anime1.org anime-adult.us anlinet.com annuaire.biz.ly annuaire.tk anonymous-blogger.com antely.com anti-exploit.com antu.com.cn anxietydisorders.biz anything4health.com anzwers\.net anzwers\.org a-onedigitizing.com a-oneemb.com aotubang.com aotubangshi.net ap8\.com apa-redlion.com apicalsoft.com a-pics.net apollopatch.com appliances66.com apply-to-green-card.org appollo.org approachina.com approval-loan.com a-purfectdream-expression.com aquari.ru aquatyca.net arbat\.or\.at arcsecurity.co.uk area-code-npa-nxx.com argendrom.com armor2net.com aromacc.com arrecife.to arterydesign.com artsdeal.com asianbum.com asian-girls.name asian-nude.blogspot.com asian-sex-woman.com asp169.com ass-picture.us a-stories.com atetech.com.cn atkinsexpert.com auctionmoneymakers.com auktions-uebersicht.de austinlawteam\.com autodetailproducts.com autodirektversicherung.com autofinanzierung-autokredit.de autofinanzierung-zum-festzins.de autohandelsmarktplatz.de autoing.com\.cn autoing\.com\.cn auto-insurance-links.net autokredit-autofinanzierung.de autokredit-tipp.de auto-loans-usa.biz automotive.com autoversicherung-vergleichen.info autumn-jade.com avon-one.com awxk.net ayamonte.to ba2000.com babes-d.com babes-maidens\.info babes-plus.com baby-info\.org babymarktplatz-aktiv.de baby-perfekt.de background-check.info bad-movies.net bad-passion.com bahraichfun.com baidublog.com baifaa.cn balancingmachine.cn bali-dewadewi-tours.com balidiscovery.org bali-hotels.co.uk balivillas.net banialoba3w.150m.com bannedhome.com banned-pics.com barbate.to barcelona.to barcode555.com barcodes.cn bare.org barely-legald.com barely-legal-teenb.com bargeld-tipp.de barrym.co.uk bast3.ru batukaru\.[a-z]{2,} bayareabags\.com bbell.com bbs.csnec.net bccec.com.cn bccinet.org bc-printer.com bdi-bone.com bdsensors.com.cn bdsm-story.blogspot.com beast(iality|sex)-(movies|stories|animal-sex-stories).(com|net) beaumont-bar.co.uk beauty333.com beauty-farm.net beautysilk.net beer-china.com beijingkh.com belinking.com beltonen-logos-spel.com benalmadena-costa-del-sol.to benavista.to benessere.us benidorm.to bestasianteens.com best-buy-cialis.com best-cialis-source.com bestdvdclubs.com bestel.com.cn besthandever.com best-high-speed-internet.com bestialitylinks.org bestiality-pics.org bestialityzoo.sytes.net best-internet-bingo.com bestits.net best-make-money.com bestonline-medication.com bestonline-medication.net bestonline-shopping.com best-result-fast.com bet-on-horseracing.com better-56.com beverlyhillspimps?andhos.com bhs-design.com big-(black-butts|breast-success|hooters|natural-boobs|naturals-4u).(com|net|us|org) big(bras-club|moms|titchaz).com bigmag.com.ua big-rant.com bigsitecity.com bigxigua\.com bildmitteilung.us billigfluege-billige-fluege.de billleo.com bio-snoop.com birth-control-links.com bizhat.com bizhome\.org bj-?(acca|erwai|fusheng|fyhj|hchy|hsdx|cas|gift|khp|xhjy|sd|zufang).(cn|com) bj701.com bjdyzs\.com bjerwai.com bjfusheng.com bjhsdx.com bjicp.net bj-page.com bj-qsan\.com bjsister.com bjxin\.com bjzyy.com black-?jack-?(4u|777|dot|homepage|play-blackjack|site|winner)?.(net|com|fm) black-amateur-cock.net blackjack-123.com blackjack-p.com blahblah.tk blanes.to b-liver.com blk-web.de bllogspot.com blog.co.tz/dexters blogbus.com blogcn.com blogforbaby.com/blog/deepsea blogforbaby.com/blog/jbilder bloggersdream.com/ahorcar bloggersdream.com/emscience bloggingmadness.com/aufmerksamkeitsdefizitsyndrom bloglabs.biz blogman.biz blogmen.net blogspam.org blogspoint.com/kostas blogspoint.com/marklanegan blogstudio.net blog-tips.com blonde-(pussy|video|xxx).us blumengruss-onlineshop.de blumenshop-versand.de b-mailbox.com bnuol.com bochao.com.cn bodet-clocks.co.uk body-jewelry.reestr.net bodyjock.com body-piercing.softinterop.com bokaibj.com bolonia.to bondage-story.blogspot.com bon-referencement.com boobmorning.com boobspost.com booking-room.com book-translation\.com boom.ru boom\.ru boylaser\.com breast-augmentation.top-big-tits.com briana-banks-dot.com british-hardcore.net brownlion.com.cn brrddd.org budget-phonecards.co.uk bueroversand-xxl.de bugaboo-stroller.com buildermax\.com bulkemailsoft.com burda\.isgre\.at burningcar.net businessbloging.com/benzaldehyde businessbloging.com/gesetz business-grants.org butalbital.org butianshi.com buy.*\.qn\.com buy-[\w-]+-online\. buy-adult-sex-toys.com buy-adult-toys.biz buy-ambien.8bit.at buyambienonline\.blogspirit\.com buy-car-insurance-4-us.com buy-carisoprodol\.qo\.pl buy-cheap-soma\.ar\.gs buy-cialis.ws buy-cialis-1.qn.com buy-cialis-online.qn.com buy-codeine.bebto.com buy-codeine.qn.com buy-codeine-online.b3.nu buy-computer.us buy-computer-memory.net buy-discount-airline-tickets.com buy-hydrocodone.qn.com buy-hydrocodone-online.sinfree.net buy-hydrocodone-online.u4l.com buyhydrocodonewhere.bigsitecity.com buy-laptop.biz buy-levitra-1.qn.com buy-levitra-online.qn.com buy-order-cheap-online\.info buyphen375reviews\.net buy-rx-usa.com buy-sex-toys.net buystuffpayless.com buy-valium.imess.net buy-valium.qn.com buy-valium-online.enacre.net buy-vicodin.dd.vg buy-xanax.qn.com buy-zolpidem.qn.com buzz-hotels.co.uk bvicr\.cn b-witchedcentral.co.uk by-and-by.com byondart\.com byronbayinternet.com c911c\.com cabopino.to cadaques.to cadiz-andalucia.to cai4\.com caipiaowangzhi.com calahonda.to california.k9.pl callingcardchoice.com calling-phone-cards\.org calpe.to cambridgetherapynotebook.co.uk camemberts.org camera-cn.com canada-travel.cn canos-de-meca.to cantonfairhotelguangzhou.com cantonfairhotelguangzhou\.com cantwell2000.com CAPAZ MESMO, ISTO E UM FATO MALUCO capital-credit-cards.com captain-stabbin.blogspot.com captain-stabbin-4u.com cardsloansmortgages.com careersmax\.com car-financing-low-rates.biz car-fuck.net carcoverspal\.com carinsurancecomparisonhelp\.com carisoprodol.q03.net carisoprodolonline.bigsitecity.com carlack.cn carmenblue.com carnalhost.com carnumbers.ru car-rental-links.com car-rentals-2go.com car-rental-search.com cars-links.com cartama.to cartoni(-animati|erotici|giapponesi).com cartopia.com cashadvanceclub.com cash-advance-quick.com cashmerebiz.com casillas-del-angel.to casoft.com.cn castingagentur2004.de cast-shadow.com cat-guide\.org cbitech.com ccie130.com ccie-ccnie.com ccna130.com ccna-ccna.com ccnp130.com ccnp-ccnp.com cd21\.cn cdshop-guenstig.de cds-xxl.de cebooks.net cegcr\.cn celebritylust.blog-city.com celebritypics.ws celebskin.com celebtastic.com cell-phone-accessories-dot.com ceool\.cn ceramic168.com certificationking.net certified-(new|used)-(autos|cars|suvs).com cfeenet.com changweia.cn chaosmagic.com/weblog/catastrophic chaseonlinebankingcom\.com chat\.ru chat-l.de chatten.bilder-j.de chauffeurtours.co.uk cheap.*\.6x\.to cheap-4.com cheap-adult-sex-toys.com cheap-ambien.qn.com cheap-cialis.qn.com cheap-cigarettes.com cheaper-digital-cameras.uk.com cheapest-phone.co.uk cheap-levitra.qn.com cheap-valium.my-age.net cheapvpn\.org cheap-web-hosting-companies.com cheap-xanax.qn.com chem888.com cherrybrady.com chickz.com \.china\.com china0519.com chinaad-design.com china-af.com chinaaircatering.com china-am.com china-apt.com chinaaxletree.com china-cp.com china-digital-camera.com china-dope.com chinagoldcoininc.com chinahr.com chinalatex.com chinaqygl.com chinasensor\.info china-sports-kit.com chinaswk.com china-transformer.com china-vcr.com chinaw3.com china-wood-floor.com china-wp.com chindata.com chindmoz.com chipiona.to chloesworld.com choose-online-university.com chrislaker.co.uk chuanganqi.dzsc.com chuanqisuji.com chunmeng.com cialis.homeip.net cialis.incredishop.com cialis.xs3.com cialisapcalis.com cialis-buy.com cialis-dot.com cialis-express.com cialis-online.b3.nu cialis-online-1.qn.com cialisusa.bravehost.com ciscochina.com citicardscom\.net claireburgos.com clamber.de clanbov.com clarks-shoe.u4l.com classifiche-italiane.org claudiachristian.co.uk clayjames.com cleannbright.co.uk click\.hn\.org click-or-not.de clophillac.org.uk closed-network.com club69.net cmeontv.de cmmdc.com.cn cn80051.1816.net cnbess.com cnbjflower.com cn-clothing.com cn-computer.com cndevi.com cn-dynamotor.com cn-exhibition.com cn-fashion.com cnfibernet\.com\.cn cnfti.org.cn cngreat\.net cn-present.com cn-press.com cn-Satellite-tv.com cnsec.cn cntaiyangneng.com cntoplead.com cn-vcr.com cnvideomeeting.com co.tradeinfo.cn codeine.xs3.com codeine-online.imess.net coin-abndalucia.to college-girl-pic.com college-links.net coma-cn.com combaltec.com comeback.com cometo(japan|malaysia|singapore|thailand).com commovie-china.com competa.to completelycars.com completelyherbal.com comptershops-online.de computer666.com computer888.com computer-onlinebestellung.de computer-und-erotische-spiele-download.com computerversand-xxl.de confession-of.mine conil.to conjhost.com container-partner.de contake.com cool\.as cool-extreme.com coolgoose.com coolhost\.biz coolp.(biz|net|org) copy168.com cor-admin.co cor-admin.com coresleep.com cornishholidaysuk.com cosmetics2008.com cosmetics666.com costa-blanca-alicante.to costa-blanca-denia.to costa-blanca-elche.to costa-blanca-ibi.to costa-blanca-javea.to costa-blanca-torrevieja.to couponmountain.com cover-your-feet.com cpravo.ru cqychy.com craftwork2008.com cragrats-catering.co.uk cragrats-education.co.uk cragrats-inspiring.co.uk cragrats-react.co.uk cragratstraining.co.uk crazypussy.info crazyvirgin\.info creavic.com.cn creditcardpost.com credit-factor.com credit-links.net credit-report-links.net csnec.net cstarcom.com cszg\.net cum-facials.us cumfiesta-4u.com cumon.no-ip.org customer-reviews.org cvdiy.com cvdiy\.com cw92013.chinaw3.com cxcn\.info cyberfreehost.com cycatki.com cyclobenzaprine.00freehost.com cyclo-cross.co.uk cykanax.com czwin.com.cn dad-daughter-incest.com dadi009\.91\.tc dahongbao.com dailyliving.info damadaoju.com damianer.top-100.pl danni.com dapt\.org darest.de datasoon.com datestop.net dating-(choice|harmony|service-dating|services-dating-service).com dating999.com dating-online-dating.org day4sex.com deathblow debt-consolidation-care\.com debtconsolidationfirm.net debt-consolidation-kick-a.com debt-consolidation-low-rates.biz debt-consolidation-now-online.com debtconsolidationusa.org debt-disappear.com debtmanagementcompanyonline.com debt-solution-tips.com decorationsexport.com dedichepersonali.com deep-ice.com deikmann.de dela88.com delay-dva.com deli.net.cn dentalinsurancehealth.com department-storez.com desiraesworld.com destindia-internships\.com deutschlandweite-immobilienangebote.de devonanal.com devon-daniels.com diabetes-cn.com dianepoppos.com dianying8.net diarypeople.com diecastdot.com digitale-teile.de digital-projector.net dindon.cn dinmo.net directcarrental.com directcti.com directrape.com directringtones.com direct-tv-for-free.com dirty-story.blogspot.com discount-airfares-guide.com discount-cheap-dental-insurance.com discount-life-insurance.us discountprinterrefill.com discoveryofusa.com divorce-links.com dlctc.com dmoznet.com dmoznet.net dmoznet.org dnip.net dn-register.com dns\.com\.cn dns110.com do\.9jh\.com dogolz\.de domkino\.com\.ua dongdao\.net dont-lost-money\.info doo\.pl door168\.com dorka\.ifindex\.com dostweb.com dotas.com dotcomup.com dotmoment.com downloadzipcode.com downsms.com dr\.ag dragonball-?x*.biz dragonball-?x*.cc dressagehorseinternational.co.uk dress-cn.com drive-backup.com drochka.com drozd\.voxelperfect\.net drs.infosec.org.cn drugsexperts.com drugstore.blog-city.com drugstore.st drugstore-online.us drunk-girls-(flashing|party).(com|us) drupaliciousbot\.com dstmedia.com dudoctor\.com duducat.com dunecliffesaunton.co.uk duvx\.com/bbs\.php?bbs=vs dvd2.us dvd-copier.info dvd-home-theatre.com dwoq.com dzhsc.com e40.nl earphone168.com easy-money-investing.com easyrecorder.com easyseek.us ebackground-checks\.com ebaybusiness.net ebony-xxx.us ebookers.co.uk e-bookszone.com ec198.com ec51.cn ec51.com ec51.net ec51.org ec91.com ecar-rentals\.com ecblast.com eccentrix.com/members/casinotips echinabid.com echinabid\.com echofourdesign.com e-cialis.net ecologix.co.uk e-credit-card-debt.com ecredit-report\.com eden\.fx120\.net e-discus.com e-dishnetworks\.com edrugstore.md edwardbaskett.com effexor.cc effexor-web.com e-fioricet.com e-free-credit-reports.com eggesfordhotel.co.uk egyway.com einfach-wunschgewicht.com elcenter-s.ru eldorado.com.ua electromark-uk.co.uk electronics-info.com elegant-candles.com elektronikshop-xxl.de elie\.com\.cn elite-change.com elitecities.com eliulin.com elrocio.to elviria.to emedicalmarijuanacard\.com emmasarah.com emmss.com enacre.net ena-free-show\.info endns.net e-news.host.sk enine-pv.com envoyer-des-fleurs.com e-online-bingo.com eonsystems.com e-order-propecia.com epackshop.net e--pics.com eplastic-surgery\.com e-play-bingo.com epsystem.net erbium12.com erosway.com erotic4free.net eroticalservers.net erotic-free.com erotic-lesbian-story.blogspot.com erotic-video.us erotische-geschichten-portal.com errolware.com escort-links.net escorts-links.com eScrew is esmartdesign.com esmoz.com estepona.to ethixsouthwest.com etoo.cn etowns\.org e-tutor.com eutstore\.com evanstonpl.org event-kalendarium.de everyvoice.net evromaster.ru exdrawings.com execsoft-software.co.uk executive-chauffeur-hire.co.uk ex-machine.com exoticdvds.co.uk exoticmoms.com expatdream.com/blog/aclarar experienceflagstaff.com/blogs/xzchro extralife\.biz extrasms.de extreme-rape.org extreme-sex.org eye-laser.co.uk f2g.net f2s.be fabida.net fabricant-accessories.co.uk fabulos.de fabuloussextoys.com facial-skin-care-center.com fairchild.com.cn fairland.cn fairyblog.com/conect fakir\.zenno\.info family-incest.us fangso\.com fansjiaoab.blog.163.com fantasyfootballsportsbook.com farm-beastiality.com farmsx.com fasa\.jetco-ops\.com fashuo300.com fast-look\.com fast-fioricet.com fast-mortgage-4-u.com fat-cash.com fateback.com fat-lesbians.net fat-pussy-sex.net fatty-liver.cn fatwarfare.com favilon.net fda.com.cn fdl.net.cn feexpert.com feilun.com.cn female-orgasms.org ferta\.imlds\.com fielit.de figa.nu finance-world.net finanzen-marktplatz.de find-a-mortgage.co.uk findbookmakers.com find-cheap-dental-plans.com finddatingsites.com findsexmovie.info findsexxx.us find-u-that-mortgage.com findyouruni.com finger-bobs.com fioricet.batcave.net fioricet.bravehost.com fioricet.st fioricet-dot.com fioricet-web.com firefoxdownload\.us first-time-story.blogspot.com fishoilmiracle.com fitness-links.net fitnessx.net fittest\.250m.com flash77.com flatbedshipping.com fleet-drive.co.uk fleshlight.org flewblog.net flexbelthq\.com flexeril-web.com flirt08.de floraday\.com\.cn flowertobj.com flowerwish.com flug-und-mietwagen.de fly-sky.com fm360.net food-cn.com football-betting-nfl.com forceful.de forex.inc.ru forex[\w-]*\.info forex-online-now.com forlovedones.com forseo\. foto-gay.us found-money-investment.info franchise\.ws frangelicasplace.org frankpictures.com free(hostingpeople|webs|web-hosting).com free-adult-chat-room.com free-adult-check.com freeallsearch.com free-britney-spears-nude.biz free-debt-consolidation-online.us freedvdplayer.cjb.net freeeads.co.uk free-fast.net free-games-links.com free-gay-video-clip.com free-hilton-paris-sex-video.com free-horoscopes.biz free-incest-stories-site.com free-latina-mpg.com freemovie-cn.com free-net-sex.com freenetshopper.com freenudegallery.org free-paris-nikki-hilton.blogspot.com freepicsdaily.com free-registry-cleaners\.biz free-satellite-tv-directv-nocable.com free-satellite-tv-now.com freeteenpicsandmovies.com free-teens-galleries.com free-texas-?hold-?em.(biz|us) freewebpage.org freewhileshopping.com freshsexhosting.com friko.pl fromru.com fspv.com fssj.com fsyflower\.com fuck\-my\-ass\.info fuck-animals.com fuckfrompussy\.info fuelcellmarketplace.co.uk fuel-dispenser.com fuengirola-costa-del-sol.to fuerteventura.to fuhaidasha.com.cn fulongcn.com funasia.cn funmod.com funny-girls\.info fun-spass-game.de.ms furensteel.cn furensteel\.cn furniture135.com furrios.de furry-kinks-looking.com furry-kinks-looking.net futurenet.com.cn fzrr.com gagnerargent.com gals4all.com galsonbed.com gamble-on-football-online.com gambling\Sgames.cc gamefinder.de games-advanced.de gang-rape.org gangxing.com gaokao.net.cn garment-china.com garrywa.com gartenshopper.de garthfans.co.uk gaucin.to gay-b.com gaybloghosting.com/kushi gay-boy.us gayfunplaces.com gayhomes\.net gay-male-story.blogspot.com gay-nude.us gay--sex.org gay-sex-videos.com gays-sex-gay-sex-gays.us gay-twinks-sex.com gayx.us gcchq.com gdgc.org gelago.de gem2.de gemtienda.co.uk generic-ambien.qn.com generic-cialis.qn.com generic-levitra.qn.com generic-propecia.net generic-valium.512bit.at genimat.220v.org genimat.cjb.net geocities.com/alexgolddphumanrbriar geocities.com/avbmaxtirodpaulmatt geocities.com/brandtdleffmatthias7 geocities.com/cclibrannar_rover geocities.com/constpolonskaalniko7 geocities.com/forestavmiagdust geocities.com/free_satellite_tv_dish_system geocities.com/ofconvbdemikqfolium geocities.com/pashkabandtvcom geocities.com/pautovalexasha_kagal geocities.com/reutovoalexeypetrovseverin5 geocities.com/timryancompassmedius gerardoknutson.com germanytek.com gesundheitsshop-kosmetik.de gesundheit-total.com getapussy\.info get-cell-phone-accessories.com getdomainsandhosting.com get-free-catalogs.com get-freetrial.us get-hardcore-sex.com gethelp24x7.net get-insurance-quotes.com getitip.org getmoregiveless.com getrxscripts.biz get-satellite-tv-dish.com getstarted24x7.net getyourlyrics.com get-zoo.com gghggh.com gguu\.com ghettoinc.com giantipps.de gifs-clipart-smiley.de gilerarunner.8m.com giochi-online.us giochix.com girls\-pussies.info girlshost.net girlswantsmore\.info girls-with-cunts\.info giveramp.com give-u-the-perfect-mortgage.com glass8888.com glendajackson.co.uk global-phonecard.co.uk globalsearch.cn global-verreisen.de globalwebbrain.com globalwiremesh\.com glory-vision.com gloveboxes.com.cn gloveboxes\.com\.cn go.nease.net godere.org gogito.com gogoogle.net gogt\.info gojerk.com goldbuyerstrust\.com goldenholiday.com goldsenze\.com golfhq\.org gomvents.com gongi.pl gonzalesltd.com goodasses\.info goodlife2000-geheimtipp.com goodsexy.com goodwebsite.org/blog/elrincondelvago google8.net googleandbaidu.com googlebaidu.com googlepromotion.com google-seo.net googlesweb\.com googletosh.com go-pussy.titanhousing.com gotobiz.net gotooa.com government-grants.org government-grants.ws gpo4.com gpsplanet\.org grafit\.zenno\.info grancanaria.to grannypictgp.com grannysexthumbs.com great-cialis.com greatnow.com greecehotels-discount.com green-gradens\.org green-tx.com greewon\.com\.cn grinding-mill.net group-eurosex.com gt-lite.com guadalmina.to guardami.org guenstige-(krankenversicherung|onlineshops|sportartikel|versicherungstarife).(com|de) guizang.net guttermag.com gyhx.com gym-equipments\.org gyrohost.com/iboga h1\.ripway\.com/xz h2kmatrix.com haidianjiaxiao.com hainan35\.com hair-loss-cure.net hairy-pussy-sex.net haishun.net hallo-tierfreund.de hand-job.us handwerksartikel-xxl.de handy-klingeltoene.eu.tp handylogos-klingeltoene.net.ms handysprueche.de handytone.us hangchen.cn hangchen.com haole\.cn happyagency.com happy-shopping-online.com hardcore-(jpg|junky|pictures|pussy|sex|video).(com|us|bz|net) hardcorecash.net hard-sex-teen.com hardware123.com hardware888.com hartsflorist\.com haugeprint.co.uk hautesavoieimmobilier.com hchcinc.com hddata.com hdfix.com.cn headachetreatment.net healthmore.net healthrules.org heartbeatofhealing.org heavytools.webzdarma.cz heb-shuntong.com hebu.myrice.com hello\.to hentay.us herpies.net hewittlandscapes.co.uk heydo.com hg-fix\.com hgxweb.de high-risk-merchant-account.org hilton-nicky-paris.blogspot.com hion.cn hit168.net hit-melodias.com hits?-logos?-(games|klingeltone?|ringe?tone|suoneria).com hitslogosgames.com hjsos.com hk99689.com hk99w.com hkfor\.cn hkfor\.com hkfor\.net hkfor\.org hksaa\.net hksac\.org hlduanjian.com hmlaser.com hmxuan.com hnhqmj\.com hobbs-farm.com hogwatch\.org hold-em-big.com hold-pok.com hold-screen.com home.soufun.com home\.ro\b home\-trade\.net home4web.org/(hainan|fanguangcailiao|gongzuofu|niupixian|tuozhan) home-business-ideas-investment.info home-business-investments.info home-internet-business-investment.info homelivecams.com homenetworkingsolutions.co.uk home-secure\.org home-videos.net hongkong\.richful\.net hongkongcompanyregistry\.com horny-honey.com hornymoms.net hornypages.com horny-world.com horoskop-auswertung.de horse-racebetting.com horse-sex.ws hospitalonline\.cn hosting-server\.net hostingplus.com hostultra.com hotchina.org hot-cialis.com hotel\.altse\.com hotel\.netsuns\.net hotelbookingserver.com hotel-bordeaux.cjb.net hotelsaficionado.com hotelsplustours.com hot-escort-services.com hotfunsingles.com hot-mates.info hotmoko\.info hot-naked-guys.net hotsexys.com hotusa.org house222.com house263\.com houseclub.com.cn how-quit-smoking.com how-to-make-money-investment.info howtomakedubstep\.co\.uk hp-ibm.com hs168.com ht-sensor\.com https?://[^/\n]*8k\.com https?://[^/\n]*ap8\.com https?://[^/\n]*bare\.org https?://[^/\n]*danni\.com https?://[^/\n]*doo\.pl https?://[^/\n]*dr\.ag https?://[^/\n]*e40\.nl https?://[^/\n]*f2s\.be https?://[^/\n]*it\.tt https?://[^/\n]*t35\.com https?://[^/\n]*via\.net huafei7.cn huahuan.com hua-shun.com.cn huazhangmba.com huelva.to huihualin.com human-cn.com humangrowthhormone.org hunksandbabes.com hustler.bz hustlerw.com huyprossish\.pcadsl\.com\.tw hydrocodone.webzdarma.cz hydrocodone-online.hotusa.org hydrocodone-without-prescription.enacre.net hyip[\w-]*\.(info|com) hyper-sex.com hypnobabies.co.uk hzjl365.com hzn.cn ialmostdied\.com ibiza-island.to i-black-jack.com i-butalbital-fioricet.com i-buy-mortgage.com icpcn\.com idc2008\.cn idebtconsolidation.org i-directv.net i-dish-network.org ie\.isoso\.info i-flexeril.com ifreepages.com ig3.net ihongtai\.com i-horny.com i-ink-cartridges.com illegalhome.com illegalspace.com imeanit.org imess.net imitrex-web.com immobilien-?(auswaehlen|angebote-auswahl|makler-angebote|makler-l|-l).de immobilienmarkt-grundstuecke.de immobilierdessavoie.com immodev.com im-naked.com Imobissimo.com i-mortgage-online.com important\.as impotence-rx.biz incest-?((pics|photos?|stories|movies|videos)-?(collection|download|gallery|archive|library)?|reality|relations|taboo).(com|biz|net|ws) incest[0-9]\.org incest-pics--incest.com incest--stories.org inc-magazine.com incredishop.com indiainfotech\.com indiasilk.biz indiasilktradition.com industrialresource.biz industrial-testing-equipment.com i-need-money-ideas.info inescudna.com inexpensiverx.net infopoint.cn inforceable.com inforceables.com innfg.de insatax\.com insatiablepussy.com inspection-trips.com insurance.*\.go\.ro insurancehere.net insurance-quotes-fast.com interealty.es international-candle-shop.com international-cheese-shop.com internet-explorer\.ws internet-goulasch.com internette-anbieter.de interphone555.com interracial-sex.ws inter-ross.ru interseo\.com int-fed-aromatherapy.co.uk in-the-vip.org inthevip-4u.com inthevip-sex.com intking.com intlcr\.cn intlcr\.com intlcr\.net intlcr\.org intymnie.com investing-get-rich-quick.info investments-free-money.info inviare-mms.net invio-mms.us Invite-cn.com i-online-bingo.com ipaddressworld.com i-play-bingo.com i-play-blackjack.com ipmotor.com ipodnano\.cn ipodshop\.cn ipsnihongo.org iqwork.com irianjaya.co.uk isgre\.at i-shemale.com i-skelaxin.com islacanela.to islacristina.to isla-fisher\.com islantilla.to i-soma.net isourceindia.com isparkl.com ispycameltoe.com i-texas-hold-?em.(biz|com|info|us) itisok\.net it-mgz.ir/forfamilies itzhongguo.com iul-online.de i-university-guide.com ivoryvaughan.com iwebbroker.com i-wellbutrin.com i-will-find-the-best-mortgage-lead.com i-win-bingo.com iza.net/ jack-x.com jade.bilder-i.de jandia.to japan-partner.com jbbjcc.com jerez.to jewelry4navel.com jewelry666.com jforce.no-ip.org jgc-network.co.uk jgzhutanfang.com jhhkw.com jhyujik\.org jiadian666.com jialicn.com jialicn\.com jieju-china.com jingtong\.com.cn jinlong.co.uk jinxique.com jinyibei.com.cn jinyuetuan\.cn jipu.com.cn jk-999.com jnqidong.com jobbnu.com job-interview-questions-tips.com joes\.com johnhowesatty.com join-2008.com joinin-cn.com jokeria.de jp114\.cn js-chenguang.com jualvccmurah\.com judahskateboards.com juliamiles.co.uk jungfrauen-sex.com junyuan.com.cn justasex.com juziku.com jzhrb.com.cn jz-machine\.com kamerry.com kangdachemical.online.sh.cn kangxin.com kantorg.h10.ru karibubaskets.com karma.za.pl karmicdebtconsolidation.com kcufrecnac.com keikoasura.com keithandrew.co.uk kewler.net kewl-links.com kickme\.to kickmy.com ki-disease.com kinggimp.org kinkyhosting.com kiranthakrar.co.uk kitehost.com/decoratie kktthhyy\.org kleinkinder-shop.de klingeltoene-handylogos.de.be klingeltone-logo.com klingelton-logos-mms.de klitoris.ca kln.com.cn kmsenergy.com kohost.us koihoo.com kontaktanzeigen-bild.de.ms kontaktlinsen-kaufen.de.ms kontaktlinsen-partner.de korol.lir.dk kostenlose-sexkontakte.org kraskidliavas.ru kredite-online.de.ms kredite-portal.de kredite-sofortzusage.de kreditkarten-sofort.de.ms kredit-ratenkredit-sofortkredit.de kuangye.net kupibuket.ru kyfarmhouse.org kyny\.net labelcan\.com lablog.biz lach-ab.de lajares.to lakesideartonline.com lalinea.to lambethcouncil.com landscape-painting.as.ro langsrestaurant.com lannygordon.com lannythurman.com lanreport.com lantai.com.cn lanucia.to laptopy.biz.pl laser-eye.co.uk laser-eye-centre.co.uk laser-eye-correction.co.uk lasikclinic.co.uk lastminute-blitz.de lasvegas-real-estate.net las-vegas-real-estate-1.com lasvegasrealtor.com lasvegastourfinder.com latina-sex.ws lavalifedating.com lavinuela.to law-translation\.com lcd-cn.com leadbanx.com leanmusclexreview\.org leather168.com leatherfamous.com lechery-family.com left-page.com legalblonde.com leonabruno.com lesbian-girl.us lesbichex.com leseratten-wunderland.de letemgo.de letomol\.com leveltendesign.com lexapro-web.com lgt-clan.ru liaozhi\.org lifedna.com life-insurance-advisor.com lifeinsurancefinders.com lifeslittle-luxuries.co.uk lifuchao.com light518.com likesmature.com lindsaylife\.com lingerie-guide\.org lingerie-land.com link-dir.com linkedin\.com\.cn linkliste-geschenke.de linseysworld.com linuxwaves.net lipitordiscount.biz lipitordiscount.com list1st.com listbanx.com livetexasholdem.com livetreff.tv livevents.de livingchina.cn lizziemills.com lkcx\.com l-king.com.cn lliippoo\.org lloret.to lnhbsb\.com loaninfotoday.com loan-king.com loans.de.vu loans-4all.com loan-superstore.com locationcorse.free.fr logical-planet.co.uk logod-helinad-mangud.com logoer-mobil.com logos?-(beltonen|downloads|free|klingeltone|max|melodias|mobiel|mobile-repondeurs?|moviles|phones|repondeurs?-mobile|spiele|tones?).com logosik.pl logos-logos.be logos-melodijas-speles.com logotyper-mobil.com lolita-bbs.name longcrossgroup.co.uk longslabofjoy.com longsuncard.com lookforukhotels.com lop\.t28\.net loraxe.com lotye\.schillerstudent\.com love.csnec.net lowclass.de lowcost.us.com lowest-rates-mortgages.com ltjz2000.com lucking.com.cn luffassociates.co.uk luxus-gourmetartikel.de lvrealty.net lygweb.com lynskey-admiration.org.uk lyriclovers.com ly-yufeng.com lzbiz\.com ma-cabinet.com machine168.com machine88.com macinstruct.net magus1.net mail333.com mainentrypoint.com mainjob.ru majorapplewhite.info make-money-investment.info malaga-costa-del-sol.to mallorca-island.to mallorycoatings.co.uk man.interhousing.com management666.com map666\.com marriage666.com marshallsupersoft.com marteq-on.com matalascanas.to match-me-up.com matureacts.com mature-big-tits.net maturefolk.com mature-old-mature.com mature-women\.enter-in\.etowns\.org maxigenweb.com maxxsearch.com mba100.com mbgeezers.com medcenterstore.com mediaaustralia.com.au medications-4all.com medicine-supply.com meds-pill.com medyep.com meetpeopleforsex.com mega-spass.com melincs.org melodias-logos-juegos.com melucky.com members.fortunecity.com/kennetharmstrong members.lycos.co.uk/tramadol menexis.com mengfuxiang.com menguma.co.uk menguma.com menorca.to men-sex.us menzyme.com meoko.com mewqsd.org mercedesazcona.com.ar mercefina.com merditer.com merlinworld.com mesothelioma-asbestos-help.com mesothelioma-health.com metroshopperguide.com mfdy8\.cn mhgzs\.com micrasci.com microscope-cn.com midi\.99caixin\.com mietangebote-domain.de migraine-relief.com mijas.to mikebunton.com mikewsd.org milesscaffolding.co.uk millionaire-blogs.com/cosmeticdentistry minxinghb.com missoula.com/blog/occupation misterwolf.net mmorpg-headlines.com mms.coay.com mmsanimati.com mneuron.com mobilefor.com -mobile-phones.org mobilequicksale.com mobile-repondeurs?-logos?.com mobilesandringtones.com mode-domain.de mode-einkaufsbummel.de molding-tool.com moltobene.ru momcare.com.cn monarch.com.cn moneybg.com money-room.com montaguefineart.com mookyong.com mooo.com mortage-4all.com mortgage-info-center.com mortgage-rates-guide.net mortgages-links.net mortloan.com mostika.us mother-son-incest-sex.net moto-cn.com motonet.pl motor2008.com movie-online123.com movies6.com mp3download.bz mp3plane\.com mp3x.biz mpeg2pci.com mqblog.cn/user1/jipiao mqblog.cn/user1/qiufeng mqfzj.blog.ccidnet.com mrpiercing.com mujweb.cz mujweb\.cz multipurpose-plants.net multiservers.com multivision.com.hk murcia.to musica-gratis.biz musica-gratis.org musica-karaoke.net musical88.com musica-mp3.biz musicamp3.us musiccheap.us music-downloads-links.com musicenergy.com muxa.ru mxbearings.com mxzt.com my.nbip.net/homepage/nblulei/ my-age.net myasiahotels.com mybestclick.com mybooktown.com mycv.cn mycv.com.cn mycv\.com\.cn mydatingagency.com my-dating-agency.com mydear\.biz my-discount-cigarettes.com myeuropehotels.com myfavlinks.de myflooring\.org mygenericrx.com mymistake.biz mymixture.com my-mom.kicks-ass.net myricenet.com myrtlejones.com myseo.com.cn [[MyServer|MyServer]].org my-sex-toys-store.com myslimpatch.com mystify2001.com naar\.be nabm(il|li)or.com nabpak.org naked-gay.us naked-pussy.us naked-womens-wrestling-league-dvds.com naked-womens-wrestling-league-videos.com nancyflowerswilson.com nanyangcn.net narod.ru nasty-pages.com natel-mobiles.com natural-barleygreen.com natural-breasts-enhancement.net naturalknockers.net navinic\.com nazari.org nbflashlights.com nbip.net ne1\.net nease.net nebulax.net necsi.com.cn neiladams.org.uk nemarov.com nerja.to netbank.cn netfirms.com netisc\.net netizen.org netlogo.us net-mature.com netnetn.com netsuns.net netsuns\.net netsx.org net-von-dir.de neurogenics.co.uk neverback.com new-cialis.com newfurnishing.com newgallery.co.uk newideatrade.com newsnewsmedia.com newxwave.com nextdayid.co.uk nfl-football-tickets.biz nicepages.(biz|net|org) nice-pussy.us niceshemales.net nichehit.com nicolepeters.com nieruchomosci.biz.pl nifty-erotic-story-archive.blogspot.com nikechina.net nikeproduct.com nikeshoesshop.com nikeshoeswholesale.org nikesupplier.com nikkiwilliams.info njhma.com njlvtong.com njningri.com njunite.net njuyq.com nnyykkii\.org no-1.com.cn no-1.org.cn no1pics.com no-cavities.com nohassle-loans.com no-more.dyndns.org noni-?(jungbrunnen|top-chance|vitalgetraenk|expert).com nonstopsex.org noslip-picks.com notebook555.com no-title.de notsure.de novacspacetravel.com novosanctipetri.to nr-challenges.org nude-(black|movies?|videos?).us nude-teens.name nudevol.us nuevaandalucia.to nutritional-supplements.ws nutritionalsupplementstoday.com nwwl-dvds.com nwwl-videos.com nz.com.ua office-021\.com office-stock\.com officialdarajoy.com/wwwboard officialdentalplan.com officialsatellitetv.com offseasonelves.com ohamerica.org okings.com okuk.org oldgrannyfucking.com oliva.to olsenstyle.com omega-fatty-acid.com omeida.com omniagroup\.it one-cialis.com one-debt-consolidation.com onepiecex.net one-propecia.com oneseo.com one-soma.com onexone.org online-?hgh.com online-auction-tricks.com online-blackjack-online.com online-buy-plavix.com online-casino.descom.es online-ccc.com online-credit-report-online.com online-dating-singles-service.com online-deals99.com on-line-degree.org online-dot.com online-escort-service.com online-flexeril.com online-games24x7.com online-games24x7.net online-games-links.net onlinehgh.com online-investing-ideas.info on-line-kasino-de.com online-medications24x7.com online-photo-print.com onlineshop.us.com onlinesmoker.com online-texas-?hold-?em.(net|us) on-pok.com opensorcerer.org operazione-trionfo.net oraengel.com oral-sex-cum.com orangeyogi.net order-?(claritin|effexor|medicine|naturals).(com|net) order-ambien-1.qn.com order-cialis-1.qn.com order-codeine.deep-ice.com order-levitra-1.qn.com order-valium-online.deep-ice.com orlandodominguez.com oro-compro\.com orospu.us otito.com ottawavalleyag.org ourhealthylife.net our-planet.org outoff.de ovulation-kit.com owaceilings.co.uk owns1.com ownsthis.com oxford-english.com oxgm.com p105.ezboard.com/bdatingpersonalsadultdating p5.org.uk p7.org.uk p8.org.uk p9.org.uk pack001.com packing-machine.com pafu.w4.dns2008.cn page.zhongsou.com pagerealm.com pages4people.com paidsurveysforall.com pai-gow-keno.com paisleydevelopmentassociation.org paite.net pajara.to pandoraaustraliastockists\.com pandorajewelryco\.com panpanddc.com pantandsocks.co.uk paperscn.com paper-translation\.com paris-(movie|naked|nicky|nikki)-hilton.blogspot.com paris-and-nicky-hilton-pictures.blogspot.com paris-hilton-video-blog.com paris-hilton-videos.biz parkersexecutivecar.co.uk partnersmanager.com partnersuche-partnervermittlung.com partybingo.com passende-klamotten.de passion.org.cn passwordspussynudity.com pastramisandwich.us pasuquinio.com paybacksh\.com payday-loan\.de\.com payday-loan-payday.com paydayloans-guide\.com paysites.info pbali\.com pc-choices.com pcdweb.com pcpages.com pcpages.com/abyssal pcvr.com.cn pdxx.com peak-e.com peepissing.com penase\.org penelopeschenk.com peoplegrad\.gen\.in perepug\.ig3\.net perfect-dedicated-server.com perfect-mortgage-lead-4-u.com personalads.us.com personal-finance-tips.com personalfitnesstrainer\.co\.za personal-writer\.com personals-online-personals.com petlesbians.com petroglyphx.com pety-viagra.newmail.ru pfxb.com phantadu.de pharmaceicall.com phente.m...\.do\.nu phentermine phentermine.webzdarma.cz phone-cards-globe.pushline.com phono.co.il photobloggy.buzznet.com phrensy.org pickevents.com pickone.org picsfreesex.com pics--movies.com pics-stories.com picsteens.com pictures-movies.net piercing-auswaehlen.de piercing-magic.com piercingx.com pill(-buy|blue|chart|hub|hunt|inc|tip).com pimp(fans|hop|hos|space)\.com pinkzoo.com pinnaclepeakrealty.com pj-city.com planetluck.com plastic168.com playandwin777.com playandwinit777.net play-cash-bingo-online.com player-tech.com playgay.biz playmydvd.com play-texas-hold-?em.us play-texas-holdem-today.net playweb.blogspot.com plazaerotica.com plcm.com.cn plygms.de pm.tsinghua.edu.cn pocket-pussy\.org poizen.info pokemonx.biz polifoniczne.org polott.org polyphone.us pompini.nu Ponderosa ponytest.com pops.pp.ru portedeurope\.org post.baidu.com posters?-?shop.us power-rico.de power-tools.rx24.co.uk predictive-dialers.org pregnancy-guide\.org pregnant\.sumale\.net pregnant-sex-free.us p-reise.de pre-machine.com prepaid-telephonecards.co.uk prepaylegalinsurance.com preteen-(models|sex|young).(biz|info|net) prettypiste.com princeofprussia.org printer-cn.com prism-lupus.org privacy-online.biz private-krankenversicherung-uebersicht.com private-network.net pro-collegefootballbetting.com product-paradise.com profifachuebersetzungen\.de projector-me.com promindandbody.com prom-prepared.com propecia.bravehost.com propecia-for-hair-loss.com propecia-for-hair-loss.net propecia-info.net propecia-store.com property2u.com property2u\.com prosearchs.com protech.net.cn psearch.163.com pseudobreccia60.tripod.com.ve psites.(biz|net|org|us) puertaumbria.to puertobanus.to puertoreal.to punksongslyrics.com purchase-ambien.qn.com purchase-valium.hotusa.org pureteenz.com pushline.com pussy-(d|cum|movies).(com|us) pussy\.the-best\.etowns\.org qd-heli.com qiangzhe\.cn qianyijia.com qingchundoua.cn qitao.wy8.net qj100\.net qm0?0[0-9]\.com qmnet\.cn qmwa\.com qqba.com qqmei.com quangoweb.com quickchina.com.cn quickdomainnameregistration.com quick-drugs.biz quick-drugs.com quickie-quotes.com qumingqiming.com.cn qybalancingmachine.com qz168.com qzkfw.co racconti-gay.org radsport-artikel.de raf-ranking.com ragazze-?\w+\.[a-z]{2,} rampantrabbitvibrator.co.uk randysrealtyreview.com ranklink.org rape-(fantasy-pics|stories).(biz|com) rapid-merchant-account.com ratenkredit-center.de ratenkredit-shop.de raw-pussy.us raymondmill.biz rbfanz.com readytocopy\.com real.net.cn real-estate-investment-online.info realestate-max\.com realforexbroker\.com reality-sites.com reality-xxx.biz real-sex.us realtickling.com real-worldinternational.co.uk rebjorn.co.uk recycle.myrice.com redcentre.org redi.tk refinance-mortgage-home-equity-loan.com reggaeboyzfanz.com reggdr.org registerxonline.com reglament-np.ru reisen-domain.de relay888.com relievepain.org relocationmax\.com rentalcarsplus.com repondeurs-logos-mobile.com republika.pl restaurant-l.de reviewonlinedating.com rfhk\.cn rfhk\.net rfhk\.org rfhz\.com rfhz\.net rfhz\.org ricettegolose.com richshemales.com rincondelavictoria.to ringsguide\.org ringsignaler-ikon-spel.com ringtone-logo-game.com ringtoner-logoer-spill.com ringtonespy.com rittenhouse.ca rituo.com riyao.com.cn roboticmilking.com roche.to romane-buecher.de romeo-ent.com ronda.to room-ordering.com roscoeluna.com rota-andalucia.to rotek.com.cn roulette---online.com roulette-w.com royaladult.com royalfreehost.com/teen/amymiller royalprotectionplan\.com rr365.net rrank.net ru(send|idea)\.com ru21.to ruilong.com.cn rx4.mine.nu rxbkfw.com rx-central.net rx-lexapro.biz rxpainrelief.net rx-phentermine.newmail.ru rx-store.com rxweightloss.org rydoncycles.co.uk safetytech.cn salcia.co.uk salearnerslicense\.co\.za sandrabre.de sanfernando.to sanlucar.to sanpedro.to santamaria.to sarennasworld.com satellite.bravehost.com satellite-direct-for-you.com satellite-network-tv.com satellitetv-reviewed.tripod.com saveondentalplans.com saving-money-hyip.info saw-blade.net sba\.com\.cn sbdforum.com sbn\.bz sbt-scooter.com scent-shopper.com schanee.de schmuck-domain.de scottneiss.net scpv.net screencn.com scuba-guide\.com s-cyclobenzaprine.fromru.com sd-dq\.com sdsanrex.com search.online.sh.cn search.sohu.com search-1.info search722.com search-engine-optimization-4-us.com searchfix.net sec66.com sec-battery.co.uk secureroot.org security-result.com seitensprung-gratis.com selectedsex.com selena-u.ru selten-angeklickt.de sempo-tahoe.com sense.com.cn sensor168.com seodetails\.com seov.net seoy.com servicesmax\.com se-traf.com seven-card-stud.biz seven-card-stud.us sevilla-andalucia.to sewilla.de sex-(4you|bondagenet|lover|photos).org sex(ushost|webclub|websites).com sex--.*\.com --sex\.com sex4dollar.com sexbrides.com sexcia.com sexe.vc sexforfree.webzdarma.cz sex-friend.info sexglory.com sexiestserver.com sexingitup.com sexjobsonline\.com sex-livecam-erotik.net sex-mates.info sexmuch.com sexo9.com sex-pic-sex.com sexplanets.com sex-pussy.us sexschlucht.de sexshop.tk sexshop-sexeshop.com sex-toys-next-day.com sextoysportal.com sexual-shemales.com sexual-story.blogspot.com sexvoyager.com sexy-(ass|babes|lesbian|pussy).us sexy-celebrity-photos.com sexy-girls.org sexy-girls\.org sexynudea.com sfondi-desktop-gratis.com sfondi--gratis.com s-fuck.com shadowbaneguides.net shannon-e.co.uk shareint-store.com sheffield800.freeserve.co.uk shellbitumen.com.cn shemalesex.biz shemalesland.com shemalezhost.com shemalki.com Shemok shengdanuclei.com shenman.com shfldz\.com shfx-bj.com shimiana.cn shinylights\.org shirts-t-shirts.com shluhen.lir.dk shoesbuynow.com shoeswholesale.cn shop.tc shop24x7.net shop263.com shop-opyt.com shopping-cn.com shoppingideen-xxl.de shopping-liste.de shoppyix.com showsontv.com sh-shengde.com shtestm.com shtravel.net shunfeng-pioneer.com sh-xinping.com simplemeds.com simpsonowen.co.uk sina.com.cn sinfree.net singtaotor\.com sinoart.com.cn sino-bee.com sinodragon.freewebpage.org sinostrategy.com sinski.com sister8.com site\.neogen\.ro/xy[\w]+/files/ps_imagini\.php site-mortgage.com sitesarchive.com site-webarea.com sjdd.com.cn sjlstp\.com sjzyxh.com skf-baijia.com skidman.com ski-resorts-guide.com slimmobile.org slmj.com slng.de slotmachinesguide.net slot-machines-slots.com slots-w.com slowdownrelax.com slpblogs.com/expenditure slutcities.com slut-wife-story.blogspot.com smartdot.com smartonlineshop.com smeego.com/gettext smerfy.pl smutwebsites.com sneakysleuth.com s-norco.fromru.com so18.cn socoplan.org sofortkredit-tipps.de sofort-mitgewinnen.de soft.center.prv.pl soft-industry.com softsenior.com softwaredevelopmentindia.com software-einkaufsmarkt.de software-engine.org software-linkliste.de softwarematrix\.org software-review-center.org sohublog.com soittoaanet-logot-peli.com sol-web.de soma-(cheap-soma|solution|web).com soma.st somaspot.com somee.com sommerreisen-2004.de sonderpreis.de.com songshangroup\.com sorglos-kredit.de sorry\.yi\.org sotogrande.to sou23.com soulfulstencils.com source.dyndns.dk sowang\.com/translation\.htm spaces.msn.com/members/wangluoyingxiao/ spacige-domains.de spannende-spiele.de spassmaker.de speedy-insurance-quotes.com spiele-kostenlose.com spiele-planet.com sportartikel-auswahl.de sportecdigital.com sportlich-chic.de sports---betting.com sports-inter-action.com spp-net.de spy-patrol.com spyware-links.com spzd\.com ss-cn.com s-sites.net ssy-web.com staffordshires.net stars-laser.com stationery555.com stationfoundation\.org statusforsale.de steel168.com steelstockholder.co.uk stellenangebote-checken.de stellenangebote-l.de stevespoliceequipment.com stfc-isc.org sting.cc stock-cn.com stock-power.com stolb.net stop-depression.com stopp-hier.de stopthatfilthyhabit.com stories-adult.net stories--archive.com stories-inc.com striemline.de strivectinsd.com stst-cn.com studychannels\.com stunningsextoys.com styrax-benzoin.com submit-your-cock\.info success-biz-replica.com suckingsex\.info sudian.com.cn suma-eintragen.de sumaeintrag-xxl.de sunbandits.com sunnyby.com suonerie-(center|download|loghi-gratis).com suonerieloghix.com suoneriex.net suoyan.com super-celebs.com super-cialis.com surfe-und-staune.de susiewildin.com sutra-sex.com svitonline.com swan-storage.com sweet-?(horny|hotgirls).com sweetapussy\.info swiftcashforgold\.com swinger-story.blogspot.com swing-in-golf.com swissking\.net switch168.com switch88.com sxcoal.com sydney-harbour.info sylphiel.org sylviapanda.com sysaud.com szpromotion.com t35.com t3n.org tabsinc.com t-agency.com taifudamy\.com tailongjixie.com take-credit-cards.com taliesinfellows.org talkie.stce.net talktobabes.com tamsquare.com tang\.la tanganyikan-cichlids.co.uk tangzhengfa.com tapbuster.co.uk taremociecall.com targetingpain.net tarifa.to tattoo-entwuerfe.de tb-china.com tcom-control.co.uk tdk-n.com teajk\.com teardust.net/blog/bulletingboard techfeng.com teen-(babes|movie|video|xxx).us teenblog.org/alerts teenblog.org/handicrafts teen-boys-fuck-paysite.com teen-d.com teens7ever.info teensluts.org teenxxxpix.net teflontape.cn tejia\.net\.cn telechargement-logiciel.com telematicsone.com telematiksone.co.uk tenerife-info.to terminator-sales.com terra.es/personal testersedge.com testi.cc tests-shop.com tette.bz tettone.cc teulada.to texas-hold-em-(4u|555|winner).(com|net) texas-holdem-0.com texasholdem777.net texas-holdem-a.com texas-holdem-big.com texasholdem-flip-flop.com texasholdemking.com texas-holdem-now.com texasholdem-online.us texasholdemsite.net texas-hold-em-w.com textile88.com tgplist.us the1930shome.co.uk the-bestiality-stories.stories-movies.com theblackfoxes.com the-boysfirsttime.com theceleb.com thecraftersgallery.com the-date.com thefreecellphone.com thehadhams.net the-horsesex.stories-movies.com the-hun-site.com the-hun-yellow-page-tgp.com themadpiper.net the-pill-bottle.com the-proxy.com thepurplepitch.com thepussies\.info therosygarden.com the-sad-diary-of.mine.nu thesoftwaregarage.co.uk thespecialweb.com thewebbrains.com thfh\.com thorcarlson.com thoth\.cn thumbscape.com thuriam.com tianjinpump\.com ticket88.com ticket-marktplatz.de tickets4events.de tiere-futter.de tiffany-towers.com tikattack.com timead.net timeguru.org timescooter.com tips-1a.de tire-cn.com tits-center.com tits-cumshots.net tjht.net tjht\.net tjtools.com tjwatch.com tl800\.com tldyjc.com tmrr.com tofik.pl tokyojoes.info toner-cartridge\.mx\.gs tontian.com tonzh.com topaktuelle-tattos.de top-cialis.com topcities.com top-dedicated-servers.com top-des-rencontres.com top-fioricet.com top-internet-blackjack.com top-of-best.de top-online-slots.com top-point.net top-result.com.cn top-skelaxin.com top-soma.com top-the-best.de toques-logos-jogos.com torch.cc torredelmar.to torremolinos-costa-del-sol.to torrox.to toshain.com tossa.to totallyfreecreditreport.org total-verspielt.de touchweb\.com\.cn touchwoodmagazine.org.uk toy-china.com traceboard\.com.cn tracyhickey.com tradeba.com tradeinvests\.cn tradeinvests\.org traffic4bidz\.com training-one.co.uk tran4u.com tranny-pic-free.com trannysexmovie.com transcn.net transestore.com transpire.de traum-pcs.de trendsbuilder.com treocat.com triadindustries.co.uk troggen.de troie.bz trolliges.de trucchi-giochi.us trueuninstall.com ts998\.com ts-wood.com tt33tt.com tt7.org ttuuoopp\.org tuff-enuff.fnpsites.com tumor-cn.com tuofaa.cn tv-bazzar\.com tygef.org tyjyllrj.go1.icpcn.com tykh\.com\.cn tzonline.cn ua\-princeton.com ufosearch.net ukeas.com uk-virtual-office-solutions.com ultracet-web.com ultraseek.us unbeatablecellphones.com unbeatablemobiles.co.uk unbeatablerx.com unccd.ch underage-pussy.net undonet.com unexpectedmovement.b4net.lt uni-card.ru universalplastic.com unlockuriphonenow\.com unscramble.de unterm-rock.us uoo.com upoisoning.com ups123.com upsms.de urlaubssonne-tanken.de usa-birthday-flowers.com usa-car-insurance.com usa-car-loans.com usbitches.com us-cash.com uscashloan.com user1.7host.com us-meds.com uswebdata.com uusky.com uusky.net uusky.org uusky.zj.com uusky2.home.sunbo.net uvinewine.co.uk u-w-m.ru v(27|29|3).(net|be) vacation-rentals-guide.com vaiosony.com valentine-gifts.qn.com valeofglamorganconservatives.org valium-online.1024bit.at valium-online.sinfree.net venera-agency.com veranstaltungs-tickets.de vergleich-versicherungsangebote.de versicherungsangebote-vergleichen.de versicherungsvergleiche-xxl.de versteigerungs-festival.de verybrowse.com verycd.com verycheapdentalinsurance.com vfrrto.org viaggix.com viagra\.freespaces\.com viapaxton.com viasho.com video-n.com videoportfolios.com vietdiary.com/andromedical vilentium.de vilez\.zenno\.info villagesx.com villajoyosa.to villamara.net vindaloosystems\.com vip-condom.com vitamins-for-each.com vivalatinmag.com vivlart.com vixensisland.com vod-solutions.com voip99.com voip99.net voip-guide.org voyancegratuite\.com vttolldd.org vtsae.org vttthtgg.org waldner-msa.co.uk warblog.net wasblog.com/ascitis washere.de watches-sales.com watchonetreehill\.org waterbeds-dot.com waycn.com wblogs.com wcdma2000.com wcgaaa.org wchao.net wdc\.com\.cn wding.com we.rx.pp.ru weareconfused.org.uk wearethechampions.com weaver.com.cn web.csnec.net web3dchina.com webanfragen.de webblogs.biz webcam-erotiche.com webcenter.pl web-cialis.com webcopywizard.net w-ebony.com webpage-cn.com webpark.pl webrank.cn web-revenue.com websamba\.com websitedesigningpromotion.com website-expansion.com websitespace-cn.com webzdarma.cz wecony.com weddings-info.com weddings-links.com weedns.com weighlessrx.com weight-loss-central.org weight-loss-links.net weightlossplace.net weitere-stellenangebote.de welan\.com welding\.mx\.gs we-live-together-4u.com wellness-getraenk.de weroom.com westzh.com wet-?(4all|pussy|horny).(com|us) whitehouse.com white-shadow-nasty-story.blogspot.com whizzkidsuk.co.uk wholesalepocketbike.com willcommen.de wincmd.ru wincrestal.com windcomesdown.com wine-booking.com wine-shop001.com wirenorth.com wiset-online.com witch-watch.com witji.com witz-net.de wizardsoul.com wjmgy.com wol\.bz women-fitness\.org workfromhome-homebasedbusiness.com worldblognet.com/eurasia world-candle.com world-cheese.com worldmusic.com worldsexi.com worldwide-(deals|games|holdem).(com|net) worldwide.php5.sk wotcher.de wrrirk\.poes\.net wujing-eyes.com wuyue.cn ww\.\d+\.com www.bhcyts.cn www.bjicp.com www.bungee-international.com www.it01.com.cn www.lamp-expert.com www.richtone.com.cn www.sex-portal.us www.webcamss.com www\.76e\.net www\.8z\.cn www\.banzhao\.com www\.chat-live\.net www\.pasca\.info \.roth-401k-forum\.com www-sesso www-webspace.de wxals.com wxboall.cn wxfl.net wxwz.fwhost.com wxwz.tabrays.com x24.com.ru x8x.weedns.com x911\.net xanax.qn.com xanax-online.qn.com xaper.com xazl.net xazlkjh.blog.ccidnet.com x-baccarat.com x-baccarat.us x-beat.com x-bingo.com x-craps.com x-craps.us xdolar.com x-fioricet.com xfreehosting.com xgsm.org xhhj.com.cn xianggangjc.com xianliming.com xianwahl\.com xinchen.net.cn xin-web.de xinyifang.net xinyitong\.org x-jack.us xlboobs.net xmtmdart.com xnan2.91x.net xnan2.blogdriver.com xnxxx.com x-pictures.net x-pictures.org xpictx.com xprv.com xratedcities.com xrblog.com/ezetimib x-ring-?tones.com x-roulette.com x-roulette.us x-roullete.com xs3.com xsjby.cn x-slots.com x-slots.us x-stories.org xt[\w]+.proboards\d\d\.com xtnm.com xxshopadult.com xxx(chan|seeker|washington).com xxx-alt-sex-story.blogspot.com xxx-beastiality.com xxx-database.com xxx-dvd.biz xxx-erotic-sex-story.blogspot.com xxx-first-time-sex-story.blogspot.com xxx-free-erotic-sex-story.blogspot.com xxx-gay-sex-story.blogspot.com xxx-girls-sex.com xxx-password-web.com xxx-pussy.us xxx-rape.org xxx-sex-movies.org xxx-sex-story-post.blogspot.com xxx-spanking-story.blogspot.com xxx-stories.net xxx-story.blogspot.com xy[\w]+\.blogg.de xyu[\w]+\.easyjournal\.com xyxy.net xz[\w]+\.over-blog\.com xz9.com yaninediaz.com ycc-zipper.com.cn ychzn.com yculblog.com ygci.com yihongtai.com ying0.com yipu.com.cn yipu\.com\.cn yisounet.com yisounet.net yl-jx\.com ylqx.org ymf.name yoll.net you-date.com youll.com.cn young\-tender\.info young-ass.us yourdentalinsuranceonline.com yourowncolours.co.uk yourserver.com your-tattoo.de youyipu\.com yubatech.com yukka.inc.ru yunchou.com.cn yyhq.com z0rz.com zahara.to zahara-de-la-sierra.to zahara-de-los-atunes.to zazlibrary.com zbbz.com zcfounder.com zchb.com zenno\.info zeonline.com.cn zfgfz.net zgpt.cn zgqygl.com zgxbw\.cn zhiliaotuofa.com zhjx-sh.com zhkaw.com zhongzhou-sh.com zhqzw.com ziliaowang\.cn zipcodedownload.com zipcodesmap.com zithromax-online.net zjww\.com znpp.com zo.servehttp.com zoo(-zone|europe|fil).com zoo-?sex-?(pics|motion-videos|pictures)?.(com|biz) zoosx.net zorpia\.com/xt zpics.net zt148.com zum-bestpreis.de zxyzxy.com zybxg.net zy-image.com zzdh.com zzgj.net
+
+abouthongkong\.asexblogs\.com/ abouthongkong\.bloggingmax\.com/ abouthongkong\.blogslinger\.com/ abouthongkong\.satublog\.com/ berko\.com\.au/merry/ blog\.bachhoacung\.ws/freey/ blog\.mogway\.com/abouthongkong/ blog\.myaliyah\.com/\?u=abouthongkong blogcharm\.com/huanger/ blogs\.thesubculture\.com/\?u=abouthongkong cancerblog\.com\.au/abouthongkong/ film4vn\.net/blog/\?w=lieey rockstart\.net/blog/\?u=abouthongkong smeego\.com/feier/ tornblog\.com/abouthongkong/ um\.com\.my/win/ vfwnjwebcom\.org/abouthongkong/ we-r-blogs\.com/\?w=drewer weblog\.statisticounter\.com/abouthongkong/ www\.asiannotes\.com/art/ www\.betterbrain\.com/blog/\?u=abouthongkong www\.billionaire-blogs\.com/abouthongkong/ www\.blarbitration\.com/lelby/ www\.blog3\.com/\?u=abouthongkong www\.blogfreely\.com/abouthongkong/ www\.blogstuff\.co\.uk/\?u=abouthongkong www\.blogtoowoomba\.com/\?w=homuy www\.earthtank\.com/diewu/ www\.elblog\.de/howue/ www\.freescrapblogs\.com/red/ www\.fsaalumni\.net/blog/\?u=abouthongkong www\.kosova\.ch/yourblog/\?u=abouthongkong www\.love2k\.com/weblogs/\?u=abouthongkong www\.mattian\.co\.uk/liuhcai/ www\.nukeblog\.info/\?u=abouthongkong]] www\.pandablogs\.com/xiangang www\.picturethisblog\.com/\?u=abouthongkong www\.sblnet\.co\.uk/sblogger/abouthongkong/ www\.skaffe\.com/weblog/abouthongkong/ www\.slickblogs\.com/abouthongkong/ www\.slpblogs\.com/abouthongkong/ www\.soccerblogger\.co\.uk/\?w=uowek www\.sovereigngracesingles\.com/sgs_blog/\?u=abouthongkong www\.spottersblog\.com/tremo/ www\.spweblog\.com/abouthongkong/ www\.stitch-studios\.com/weblogs/\?u=abouthongkong www\.stu-c\.com/blogs/abouthongkong/ www\.tatsulok\.com/yuer/ www\.teenblog\.org/abouthongkong/ www\.toiyeu\.net/nhatky/\?w=toiyew www\.totalvideogames\.com/blog/laner www\.vfwmowebcom\.org/nicer/ www\.weblogone\.com/dry/ www\.westwoodbapt\.org/blog/abouthongkong/ www\.worldblognet\.com/abouthongkong/ www\.ym1\.com/abouthongkong/ chio92\.com onlinepoker\.happyhost\.org kolloidales-silber\.at sonyy1\.com tdk14\.com nyteam\.info ethock\.info pepsi14\.info jiayinte\.cn moxor\.info maxor\.info chevy\.ws adoption\.ws carpetcleaning\.ws hrentut\.org icwak\.info humela\.info guoyong\.com ziyangwz\.com zhanziyang\.com ziyangshiwo\.com short\-termhealthinsurance\.com scooter\-web\.org bikesplanet\.org aishwaryalife\.com jessicaalbalife\.com shakiralife\.com terapatricklife\.com adrianalimapics\.org wifiguide\.org wifi-planet\.org wifi-world\.org teainfo\.org pizzaguide\.org coffee-guide\.us chocolateplanet\.org girls-xxx-party\.com trinitao\.com tjshenguang\.com liveadulthost\.com speedorado\.com sexsdreams\.com carpassion\.com neureich\.de v-ringtones\.com 4vti8\.com artsmediamag\.com ringtones\.konaxil\.be upcoming\.netteen\.net cfcsouthpugetsound\.org xultin\.info tidep\.info ythrip\.info yston\.info xution\.info gosle\.info tallygotmoves\.com sexstar2000\.com dante4all\.com q7voda\.com fetishrred\.spycams777\.com discovery\.teenorg\.net cosmo02\.net (cam|sex|gay|fuck|swingers|adult|dating|erotic|personal|ads|cum|wife-swap)[\w\-_.]*\.blogspot\.com irzar\.com gokdep\.com nittion\.com cheapwowgold\.co\.uk win\.com\.cn wowgoldworld\.com starsnak\.biz shop-now\.be whitewalker\.com beatroulette\.atspace\.com onlines-slots-game\.atspace\.com (friendlysearch|medchoice|freesearches|getmedicineeasy)\.bravehost\.com gihore\.info soseik\.info ithyr\.info letreal\.info efdmen\.info udwryp\.info bupyere\.info tagmyn\.info suogman\.info gegbyl\.info laww\.info plonehostingdemo\.nidelven-it\.no wiki\.opennetcf\.org/upload sprint\.zope\.it ssdcard\.info soujipiao\.com 5ijipiao\.com jipiao126\.com jipiaoair\.com canjipiao\.com bjxiongfei\.com SaNaLHaCKERLaR\.ORG jspit7\.info kokoxx\.info donte\.info lib/exe/fetch.php\?media= imhotep\.sphosting\.com 1-myspace-layout\.blogspot\.com dinmo\.cn 51education\.com sispc.com\.cn sh-dzgs\.com teyi21\.com yizhish\.com oa586\.com watesi\.com sh-shenhuang\.com guojikuaidi\.com lbjq2h\.com xingaoweixing\.com shyw\.com shnakano\.com ihtc\.cn chonggong\.com kkvalve\.com\.cn uwb1hhc\.info vzh5k87\.info mvuxq60z\.info bodybillboardz\.com blog\.lide\.cz teeenp0rn\.org creditcarddebt\.neo\.cx dhzilnwr\.com hntwzokt\.com xoyeeuqx\.com badcredpersloan\.new\.fr securedcreditcard\.neo\.li hometown\.aol\.com (creditcons|creditreport|freeannualcr1|freecreditro|freecredits|cealis)\.monforum\.com fishmls\.com localendar\.com/public/ \.maxblog\.pl \.phpbbx\.de foroswebgratis\.com (cabrini|annotation)\.bravepages\.com (asp|impaction|monocled|wriggle|maneating|migrations)\.1sweethost\.com (bailee|carrycot|webmasters|markab|homewards)\.dreamstation\.com (bohemians|encloses|gravel|verite|tenderfeet|sabers)\.exactpages\.com (drained|shuffles|diathermy)\.fcpages\.com (headland|similar|muffler|normalise|typologist|buckshots)\.741\.com (ctenophore|failles|whistle|mayflies|nestled|eunice)\.angelcities\.com (arcady|tulip|undreamt|impair|reamers|hokiest|catnapping)\.greatnow\.com (absolutely|bellman|kwangchow|fluctuant|trouping)\.wtcsites\.com (wafers|whensoever|prescient|spacious|acadia|toothsome|gasolines)\.envy\.nu (smuggles|showboat|ipecacs|skivvying|straying)\.150m\.com (suffixed|barbeques|dispersal)\.100freemb\.com (killer|grumbles|despoiler|termites)\.kogaryu\.com (adversely|militated)\.g0g\.net (brunettes|struts)\.o-f\.com (reconnect|clownishly)\.00freehost\.com (drygoods|fl|liberia)\.9cy\.com (membership|retarders|spoonfed|pointedly)\.freewebsitehosting\.com (unwiser|innervates|woofed)\.ibnsites\.com (goodnight|shortens|brokering)\.freewebpages\.org (epaulet|impotency|jewelries)\.1accesshost\.com homepage\.mac\.com/(nonreader|cartels|cornflour|docilities|unanswered|feelings1)/ (imagist|phosphor|hatecrime|landward)\.freecities\.com (ainsurance|diflucanmed|mypropecia|1creditrepair)\.proboards104\.com (carisoprodol|tadalafil)\.mybbland\.com (refinancingmortgage|cheapautoinsurance|autoinsurancequote)\.(forumactif|actifforum)\.com fioricetmed\.blogcu\.com the-sabotage\.org spygrup\.org gencnesil\.org \.(blogsitemaking|blogginpoint)\.info hjlxmosb\.com dohzqmod\.com dadbhpsu\.com supermegapizdetc\.com cjbqixzs\.com tacmbuqe\.com qcprkjgp\.com wwcldvob\.com nhdwinyg\.com pewddohw\.com x-uqur\.org toyota-corollailf\.blogspot\.com corolla-toyota730\.blogspot\.com staticstroke\.tr\.cx vuhavrva\.com nfzwzphv\.com ljhasdic\.com peoazsog\.com szsbqqdb\.com kvxkloks\.com turkatesi\.net megaturks\.com rnsgroup\.us turkstorm\.org (ladyboy|shemale)\.viptop\.org nxyvarpv\.com shlmsapu\.com wjmlwkvk\.com www\.umes\.edu/accsupport/ossd/ossdchat/ jiyxhkdf\.com hpdrsykw\.com wminyrxj\.com gucvfiuh\.com osgtpzde\.com szexqgix\.com susiesbeads\.net swliuxue\.com mindtouch\.com e-parishilton\.com \.vg\.edu euitaly\.info sprzedam\.pl wpi\.biz galadriel\.nmsu\.edu d007\.phpnet\.us todosvem\.info flowers-shop\.sitesfree\.com bcasinos1\.ovp\.pl \.greatkozel(site|world)\.info hack-e\.com eelive\.info asi\.0moola\.com Valintino.Guxxi web\.hit\.bg \.sportsinfoitaly\.info urlbee\.com site3\.info bdqt\.org \.svt\.pl ycaol\.com abunimah\.org aypp\.info poker\.blog\.drecom\.jp idisk\.mac\.com/ringtonesforyou chaco\.gov\.ar/meccyt/subsecyt/_act1 forourbano\.gov\.ar/_forodisc/ tx-bridge\.com beijingimpression\.com enrichuk\.com recphone\.cn kcmp\.cn pumppump\.cn officezx\.com vcd-dvd168\.com\.cn dinmoseo\.com wow-powerleveling-wow\.com e-fanyi\.net chongshang\.com\.cn radfort\.com eachost\.com bjjly\.net sino-(jipiao|liuxue|zufang|lvyou)\.com(\.cn)? citylight\.com\.cn e4u\.cn china-co\.com celsnet\.cn deqinfy\.com mycomb\.com dm-(baojie|jipiao)\.cn xttg\.cn cthb\.com\.cn china-byt\.com china(yuntong|lipin|yiyao)(\.com|\.net)?\.cn jinpack\.com xinyuanit\.com timeyiqi\.com\.cn mendean\.net zgpdw\.cn 5i8811sf\.com my-projector\.net bjlhj\.cn imperial\.edu/maria\.coronel/ vca\.org faculty\.chi\.devry\.edu/ksteinkr/ encyko\.bee\.pl (synthroid|cialis|depakote|zithromax|cipro|aciphex-meds|diflucan-777|lipitor|zocor|norvasc|propecia|imitrex)\.ca\.cx # this is the specific regex \.ca\.cx # if noone complains we'll just keep that fpoker\.abc\.pl ftpoker\.ir\.pl ftpoker\.blogjapan\.jp wxerqxad\.com mnwftplr\.com ixgqwyaj\.com lglpvgdi\.com khmifkyd\.com fnabdymv\.com maomzyex\.com iprnhyeb\.com qytkgqkk\.com supermeganah\.com xnjehmqg\.com koufoadi\.com palgdhek\.com kcqdqjiv\.com xxqzcrbx\.com ejulbpnr\.com dfywxiza\.com wjdvppas\.com qfoijpym\.com usphwxib\.com fawhongh\.com xjayjaqh\.com hmaugptw\.com saeoazbj\.com pnjugiiu\.com xpubccoq\.com umbmjyug\.com lqbguwrt\.com 1url\.org/go/1yolui uwrejaag\.com wjlnjljz\.com jacpusnk\.com 51ticket\.net galasale\.com bjcdmaker\.com sdcy\.com\.cn ukpass\.org archifashion\.com sino-ups\.com qwerty\.wblogs\.org/2007/06/ astroguia\.org/bitacoras/qwerty/2007/06/ trinilopez\.com/_msgbrd/00002992 thyoapan\.com qfrtsyrp\.com uooyqazf\.com websearchdir\.net firstwebdirect\.org webdironline\.org nwdirect\.org wwbol\.info maagrenn?a\.tripod\.com (trumtrum|bugaga)\.ifrance\.com (bugogo|damdan)\.ibelgique\.com (sukonah|tramtram)\.isuisse\.com (gurevin|grandan)\.awardspace\.com uubol\.info rrbol\.info iibol\.info qqbol\.info iibol\.info eoajx\.quotaless\.com hardcorerapecomics\.tripod\.com (qq|pp|yy)adv\.biz (dd|gg)coll\.info rietdekkersbedrijfscholten\.com taylorrain\.newsit\.es \.webdirext\.com (sh)?chfang\.com xianweijin\.com strawberrydelights\.com whichsideofthefence\.com it\.snhu\.edu free-online-dating sudu\.info shcbprint\.net toppowerlevel\.net mysiteup\.my2gig\.com globalceoforum\.com\.cn isefc\.com\.cn teamflyelectronic\.com hzmqzs\.com coolingame\.com mydofus\.com rs2myth\.com levelmyth\.com ankama\.us buy-dofus-kamas\.net vulturesknob\.com yournetexpert\.hostwq\.net fundorro\.net normalforce\.com sei-mein-bester-freund\.de titaniuexport\.kiev\.ua loveangelinajolie\.com movief\.5gbfree\.com ylhz\.net grendamix\.com 89bm\.net temaxd\.cn gglhctm\.cn xgswd\.cn ofcpa\.com netbai\.net power-level\.net e489d\.com lingollc\.com boinbb\.com fourw\.jp sweepdesign\.jp chn-job\.com\.cn xfgkj\.com houseso\.cn beijingxiezilou\.com xiezilouxinxi\.com kibonbarcode\.com xzhfblp\.com linuxbj\.com pr1ma\.info dom\d\.info cardz\d\.info hom\d\.info rossa\d\.info svx\d\.info bomb\d\.info filmes[\w\-_.]*sexo filmes[\w\-_.]*gratis video[\w\-_.]*sexo video[\w\-_.]*gratis foto[\w\-_.]*nudo seeyo\.info suphost\.info freehostss\.info hostzz\.info 19mb\.info freespase\.info host24h\.info cdq369\.com datangshutong\.com jonchn\.com\.cn sweepdesign\.jp bj5yuehua\.com jonchn\.com\.cn bjht888\.com zgxbzlw\.com 466tv\.cn sixnet\.com\.cn 99caigang\.cn cydjk\.com fstzb\.com znstudio\.net datangshutong\.com liaoxinbj\.com bjhrj\.cn flowervoice\.com jonchn\.com\.cn iiwezxmkwzht\.com miqiatwuypzw\.com hjigunxxrqaf\.com slondcnixlwj\.com bengfa168\.cn kaiquan\.com\.cn huigao-v\.com bgzb\.com spvalve\.com dltools\.cn rosement\.com\.cn stone-ebay\.com zgxbzlw\.com farfly\.com e-bjmelody\.cn adsmc\.com yhht-valve\.com qmtyblphlilu\.com qewojlupomxg\.com zoqecyrqdfhc\.com jbhazglyuzml\.com bodt\.com\.cnn bodt\.com\.cn onebedroomfurniture\.com 69bm\.com 69bm\.net cp788\.com 1k888\.com libfondo\.info nimerino\.info minutospa\.info ihtibel\.info akmandel\.info 168xh\.net posui\.net\.cn szgwjy\.com tcl\.com johnsonip\.cn szwanyang\.com lfhcn\.com 89bm\.com caishen\d*\.cn hcplasticmold\.com [[ViewMyLoan|ViewMyLoan]]\.com hotwetred\.info uniwuros\.com cbyanrbp\.com vmwtynhs\.com odosuz\.cn idakoxic\.cn ifom\.info omiducer\.cn isekecec\.cn hzylin\.cn vaqyjcqu\.com nvzisslp\.com jxzgdglq\.com wetwetwett\.info nudevidz\.info nunde4free\.info 668w\.com fregalz\.info hothothott\.info 163\.(com|net) ifux\.info jzups\.com\.cn longre\.com wecomesh\.com cjh120\.com cctv8168\.com meter17\.cn quntuo\.com bjjinshan\.com cccstandard\.com szlrwl\.cn deqinfy\.net ebakvqsq\.com adklnaum\.com gohzmgek\.com hypoq\.(org|info) cerbaq\.info vertyn\.info bjyyct\.com blt\.net\.cn qemlcnwg\.com hudwzsfh\.com ppyecsia\.com impactcrusher\.net\.cn hammercrushers\.com benconq\.com jawcrusher\.net\.cn raymondmill\.cn zenithcrusher\.com cnzenith\.com conecrushers\.com\.cn impactcrusher\.net\.cn beconq\.com benconq\.com crusher-cn\.com zenithcrusher\.com lemmings.dontexist\.com bjjjjgd\.cn mingshengximqm\.com shangguanhong\.(com|net) zooxtreme\.(com|net|org) beastplace\.(com|net|org) beastzone\.(com|net|org) beast-space\.(com|net|org) 3vindia\.info 2kool4u\.net 22web\.net isgreat\.org iblogger\.org talk4fun\.net prophp\.org totalh\.com xanga\.com stonecrusher\.net\.cn vone\.net\.cn aggregate-plant\.com grindingmill\.cn huili-cn\.com globalchineseedu\.com zgxbzlw\.com wahlee\.net lilyspring\.com wetlesbiansx\.com wetindians\.net sex4uonly\.net jxpump\.com bfjxkf\.com zzdehong\.com wet-n-hairy\.net pinkshaved\.net sweetttits\.com jxpump\.com uextkhveawym\.com ghzbstszrpgo\.com qsevvccxnzlb\.com ahxxugvpswym\.com cce-china\.cn cd8545\.com travelnursingdirect\.com cone-crusher\.org chinadrtv\.com jsd-coffee\.com flolon\.com sc818\.com seo315\.(net|cn) pkseo\.cn nabirbsb\.com oqholfwb\.com wjoupiyw\.com yejuntech\.com ngvvlxpwuqhh\.com opggdydlpwsx\.com jrrwpwbungrk\.com lmkjshlsejlh\.com lovewind\.cn jormabridal\.com(\.cn)? paddletotheheadwaters\.com muzica-mp3\.ro movie2b\.com (stone|jaw|impact|cone|hammer)[-]*crusher\.(org|com|net|cn) pfkf999\.com hnpjs\.cn pysz\.com\.cn dxb\.ha\.cn ganbing120\.com\.cn forexcentre\.org igad\.info 0516glass\.com liuhuaji\.com\.cn obsoletecomputermuseum\.org/forums/ bonahr\.com\.cn stevepinto\.com touguanshi\.godele\.com bobauv\.com sangya\.com wanbaolong\.cc 99k\.org clanteam\.com ztsousou\.com azresults\.com zxq\.net ckcf\.com\.cn wuhanbl\.com asp100\.cn xpcd\.net mygold123\.com onlinegoldsale\.com rhftsb\.com yfyc\.cn cz-wanjia\.com freewebtown\.com mix\.org\.cn cnlxj\.cn 56817\.net 99shijia\.com hailianlitong\.com zggcw\.net bj-hongyun\.com chushiji2008\.com symlhb\.com hndfzx\.(com|cn) vpn123\.com autovote\.cn warnlaser\.com google8\.com\.cn dlong\.com\.cn chinasolutionco\.com dy-bb\.com daiyun315\.cn bj-jbh\.com lunwen22\.com lun-wen\.com\.cn lunwenff\.com comegames\.com nicewow\.com ixtm\.net alexasir\.com itxb\.net seo315\.cn hnfbqz\.[xc]n oofay\.com igset\.com eqset\.com beijing-trip\.net czdipan\.cn 5-happy\.cn sc98\.cn keeprun\.com hydehr\.com jiuyew\.com thedentalassistantonline\.com lhosting\.info allyouneed\.pl szlrkj\.com idating\.cn runescape\.com runescape2\.cc xneo\.org feilin\.ha\.cn banj315\.cn sdii\.com\.cn zzssjx\.com ganfushui\.cn okfish\.com\.cn cddvdvcd\.com utbwjawnvdtj\.com iyvjvdvpwali\.com dfsuyhhwpanb\.com iurvgecemloj\.com csusa\.org\.au nofeehost\.com auxt\.info italia113\.info favorgame\.net italaska\.info italyhomes\.info italiaconsulting\.info italypasta\.info gyhongwei\.com gystjx\.com hnydzg\.cn e-rhonealpes\.net italyresorts\.info madeitaly\.info workinitaly\.info offkey\.info digitalnod\.info fst-lab\.com xilu\.com 0571ax\.com orkeor\.cn accurian\.cn beon\.ru lokerpoker\.com imeem\.com mycool\.com joetheisendds\.com digiadv\.co\.jp asianjazz\.ciao\.jp jkw\.name aaaoe\.com bjsfyj\.com cxlsx\.com ming-qing\.com gb-kontakt\.net gbkontakt\.info phpbb4you\.com fdtech\.biz hostofhosting\.com chinaliangzhu\.com suntop-fence\.com aaqtq\.cn hmxlzx\.cn ctexm\.com mc-subway\.cn netberg\.cn cannabin\.cn mcparking\.cn ezysearch\.cn mcfreestyle\.cn taobao\.com tangoing\.info ceroline\.info zhaoad\.cn nanhuachem\.com hhpumps*\.(com|cn|net|org) wowgold\.hk wowgoldvip\.com wowgold-sale\.com mmogcart\.com mygamesale\.com powerlevelings\.com power-levels\.com game-level\.com tongdeli\.com smt16\.cn hnkehai\.com gyfzjx\.com zzyl\.(com|cn) floopityjoop\.com tits\.cn eduoduo\.com\.cn hymarkets\.com cango\.com\.cn videolucho\.com baidu\.com 9fag\.cn 9nsk\.cn 9skf\.cn cnnsk\.cn fagchina\.cn fagweb\.cn nsk022\.cn nskcn\.com nskweb\.cn skf022\.cn skfweb\.cn tjnrzc\.cn zcskf\.cn zhouchengskf\.cn eileenmcgann\.net abra[0-9]\.com lunwendx\.com ghlxj\.com hyinvestment\.com clife365\.com szh168\.cn rose-wedding\.cn jhstbj\.(com|cn) wybb999\.com francebfl\.com cmpack\.cn dabaog\.cn hnccqz\.cn ultra-gear\.com cnzycp\.cn hnzxzx\.cn cnpjs\.cn changw\.com t-bond\.com\.cn zjghtbf\.cn 08kaoyan\.net netbai\.com ontsibvwjyhr\.com cevdvcpeomet\.com iahucbhvcqbg\.com dammagoxpvwx\.com tjzdxf\.cn shanghairuth\.com gupiao258\.(com|cn) snownes\.com bjbcl\.com korack\.cn cebiz\.cn anesd\.cn dianhualy\.com digseo\.net hzw1\.com kpwyxl\.com zjyihe\.com malatown\.com\.cn kmyuda\.com xowow\.com powerlevelingweb\.com 1kan\.net\.cn howview\.cn bczl\.com\.cn fangshui99\.com bjxsbt\.com\.cn chuxinrui\.cn slfr\.net hyhxsm\.cn wang666\.cn shbingluo\.com keslon\.com hpsell\.com\.cn chenghechuangye\.cn bjyuantuo\.cn jnjinli\.com flower18\.com\.cn dianhualy\.com ifcmbj\.com xbjk120\.net howview\.cn egri\.net\.cn digseo\.net hzst\.net\.cn 3movievideoclip\.com 51yd\.com\.cn homesoft\.com\.cn bjzktd\.com dlpy\.cn hkfeng\.com zhengstar\.com 99cars\.net szrona\.com keetouch\.com ipcam\.com\.cn ope888\.cn oktouch\.com 1king\.com\.cn plancool\.com\.cn tianguangroups\.com beautynet\.cn housing-on-line\.com xinhai-pd\.com bjpbx\.com fozhe\.com cp2y\.com windhorsetour\.com buy-runescapegold\.com cchello\.com lookee\.in kotick\.in honi-moon\.in thsale\.com power4game\.com stk-interlining\.com wowgoldprice\.org ceskecelebrity\.com bvu\.com\.cn fsouber\.com allotec\.com p-pass\.com teamsun\.com\.cn pass4sure\.com pass4exam\.com exam4sure\.com certay\.com huochepiao168\.cn chinabestop\.com smartsgarment\.com pcqshoes\.com bestoplingerie\.com china-sexy-lingerie\.com fashion-emart\.com bestopsolar\.com info\.bizhostings\.net isk-eve\.com quickpass\.org shdzbc\.net\.cn xltcpl\.cn taiad\.com\.cn bjpeilian\.net wow-*gold.*\.(com|org|net|cn) sino-strong\.com\.cn vanguardct\.com hzzrs\.com hfcxhw\.com toeic-world\.com\.tw toefl-expert\.com\.tw gept4u\.com\.tw kingcoder\.com\.cn ning-wang-fu\.cn zzhkjx\.com exam100\.org 76my\.com gamezmoney\.com 86xh\.com ab222\.cn yn666\.com flowerordercentral\.cn geocities\.com/hentaioza www021\.com\.cn chinakaba\.com zdzdm\.sqnet\.cn szhostar\.com pulverizer\.com\.cn szyasen\.com xkzs\.cn tudou56\.com xcb120\.cn aab-co\.com jsps\.cn yuanchangsh\.cn fen-zi-shai\.cn jsqmfg\.cn valve-hm\.com hu-xi-qi\.cn surecan\.com\.cn wowpower-leveling\.com no1health\.org handbagroom\.com caxa\.com dinmo\.org\.cn underwear-wholesaler\.com 17-china\.cn longhainet\.com quarry\-plant\.com\.cn rock\-crushers\.com\.cn brogame\.com pan-tibet\.com jxsb\.org\.cn fzpg\.net\.cn xxyd\.org\.cn fzfz\.org\.cn jmzj999\.com xbkf120\.cn inaturaldiet\.com osthair\.com yqyb\.org\.cn jjyp\.net\.cn lpsp\.net\.cn yybj\.net\.cn txcp\.net\.cn hrdzf\.com 17ftp\.cn ibuy-sell\.com itemrate\.com mul-t-lock\.com\.cn kevincostnerfans\.com lavigneavril\.net loveparishilton\.net lovebritneyspears\.net alpacino\.net\.cn bradpitt\.net\.cn robertdeniro\.net\.cn gosuperplayers\.com item4sale\.com hitop-mould\.com dghighcrown\.com junxingstone\.com adholes\.net bibliotecaitata\.com chapso\.de teamagazine\.com\.hk blogbox\.dk tunesonic\.com blogpager\.com casa-lavoro\.net chicodeguzman\.net designblog\.gr hartenergy\.com isdev\.odg\.cc jshyx1985 mode2testsite\.com mosentenem\.com myadulthosting\.net nosdivertimos\.com seniorsspace\.com megasexblog\.com blogsdevenezuela\.com islablog\.com go-cms\.info sportsfanstv\.com worldswatches\.com myblog\.g89\.org evsblogs\.com blogs\.omanana\.net gayteenresources\.org blog\.medigo\.pl blog\.thai-z\.com 3xblog\.ro jumpblog\.com blogs\.slis\.ua\.edu zteo\.com propertyblogging\.com tangotogether\.com my\.vipublog\.com htchx\.us horizonacademyblog\.com emeraldnova\.com monsterblogs\.net losblogs\.net blog\.cybercc\.sg mormonorgs\.com drumblogs\.com jshyx2003 kxy\.cn free-download-firefox\.net byzxw\.com 1573\.hk tiffanyin\.com all4kid\.com deppjohnny\.com monicabelluccifans\.com gamesmd\.com implantjapan\.com i-denki\.net lasik-hikaku\.jp naturalk\.jp babyrockets\.com ocn\.ne\.jp w-medicalnet\.com sky361\.com powerleveling123\.com greentec-sound\.com\.cn runescapegoldvip\.com grasoftseo\.com mygamestock\.com rsgold-rsgold\.com kidmannicole\.com googlesoftware\.net accountsbay\.com fangdaomen\.cc hbjinggong\.cn mj-net\.jp marucollet\.jp cashing-view\.com century-21\.co\.jp dzbc\.org baojianwang\.com zhangsaohan\.cn huoyingrengzhe\.cn ouzou\.com\.cn trustyelectronic-china\.com china01\.cn goldcheapest\.com itemchannel\.com cn-chong\.com bjjhj\.com 2artgallery\.com gdqingtian\.com tiffanyline\.com ggfou\.com jxmc\.com\.cn donba\.com oilpainting109\.com cnmolecular-sieve\.com bodahg\.com 5eba\.com 51zzw\.cn thecommercejournal\.com da-zhong-ban-chang\.com gl-firmenadressen\.(info|net) nyzhyq\.com veryge\.com fm965\.cn goleveling\.com cnwfyy\.com biaori\.com hangzhouhunqing\.com kwyf\.com\.cn g2gmart\.com baihelai\.com freetestking\.org sup-lotro-gold\.com warcus\.com mini-freegames\.com zalasoft\.com hollyginger\.com sitgame\.com jdllj\.com shevip\.com\.cn bacobolo\.com world-womans\.com 88gk\.cn imvub\.com gpkoo\.com s2789\.com yw17\.com rfyljx\.com\.cn pboy\.com\.cn fashioninchina\.net electroplating-equipment\.cn lxep\.com carpet-china\.com\.cn jixietg\.cn break-day\.com games8848\.com fesffonpourr\.com fmrxfqdmwlbl\.com hdwccaggguzm\.com pjpxjijenjam\.com rjvurgjybnjn\.com uynlhrrfljtb\.com xljdfoxuceuh\.com zdcoxwpzjmhn\.com hyperrealty\.com mamariano\.us www-clubseventeen\.com ig2t\.com iamgaolijun\.cn monternet\.com granitecountertops\.com\.cn kercap\.com cwb120\.com gravelline\.cn applesupport\.com\.cn fcsgame\.com just4gold\.com goodvk\.com selldofus-kamas\.cn seo-newline\.com\.cn hzhongtai\.cn ymiao\.cn runescape-items\.org gcadressen-db\.net bambwood\.com jt120\.org\.cn thelodger\.net osceolanaacp\.org chattababy\.com touslescommerces\.net thepoliticalwasteland\.com moshergallery\.com membrane-solutions\.com abmbzkdszdwj\.com fwmqvmirgxya\.com mcxnlhviuojw\.com ogeworld\.com db-adressen\.(info|net) bathroomremodeling\.buzznet\.com chanelhandbag\.blog\.hr chinausbflashdrives\.com xyenglish\.com xingbingchina\.com fuworld\.com bjhongda2008\.com nowaction\.net qmyyw\.com yuanqiaowenhua\.com bjjh2000\.com lawfirst\.com\.cn a-polo\.cn librich\.com kicksarea\.com hybenet\.net yuanqiaowenhua\.com buy-runescape-money-gold\.com mesothelioma-uk\.net adsclicking\.com eastcarpet\.com\.cn jdshiyanji\.cn pandaphone\.com runescape2-money\.org wcx88\.cn dvd1314\.com cenkx\.com cnblp\.cn davismicro\.com fanggead\.com karrylady\.cn macrown\.com\.cn mdcchj\.com\.cn newbst\.com shoes4days\.com yaojian\.com\.cn zj-xinhong\.com ccok11\.com elkf120\.cn quhong120\.com rfid789\.com szchuangjie\.com windowregulator\.net ydyxl\.com adressendb\.net gc-datenbanken\.info rzqncfvopsdi\.com hvnrueyuufhh\.com ocrrtustraht\.com gxfuiynpudtp\.com gprunescape2\.com gsyb.com\.cn hzsxjx\.cn jdaluminum\.com jshengfa\.com wx-fd\.com usfine\.com maplestoryer\.com gcdatenbanken\.(net|info) google\.com/notebook/public cnhld\.org xykavmjkiisc\.com stasppcbybco\.com lxkqozwybkue\.com jpxgbssdoait\.com cilanie\.com 8bio\.com goodpolisher\.com watchepay\.com airprice\.com bonnych\.com watchec\.com ele-art\.com sqsensor\.com mabinogi-gold\.org rohan-gold\.org webprogress-seo\.com webprogress-de\.info brandtrading\.net notebook-batteries\.org supply-batteries\.co\.uk casininio\.com feiyun8\.cn pastemark\.com storeingame\.com ymcmotor\.com\.cn 97sese-mm.cn 97sese-xxoo\.cn 97sese-xxoo\.com\.cn dancedressshop\.com famousbrandwatch\.com jiuqusese-mm\.cn jiuqusese-mm\.com\.cn rentiyishu9\.com\.cn replica031\.com thepowerlevel\.com bjktwx\.com ktwxbj\.com nikespaces\.com paris-hilton\.wikidot\.com cert-world\.com weebly\.com db-gcadressen\.info dbadressen\.com rezeptfrei-kaufen\.com armee\.roonk\.de easysixpack\.de agoodic\.com ugamegold\.com zglxjkw\.com ourdtv\.tv flowexpo\.com supakopi\.com ero-xxx-pimiw\.cn gloway\.de gamelee\.com gogoer\.com mmorpgtube\.com mygamegoods\.com player-kill\.com srogold\.com tbcgold\.com tibiacrystal\.com rsgold-accounts\.com sfs168\.cn sfsok\.com szsfs\.com vgoldzone\.com vgsgame\.com banchang160\.com banjia99\.com bjgs01\.cn diaoche160\.com tuoyun160\.com lvhang\.net oilpaintingscn\.com shbaojing\.com wansp\.cn yaliuya\.cn yayaliu\.cn csjqlts\.cn crltjqsplts\.cn luoliaosp\.cn qqmnsplts\.cn kaoyao\.net goldmine\.by\.ru tarkus01\.by\.ru newsmaestro 7vee\.info shoeshome\.net desiresecrets\.com toyline\.net sexyfancy\.net pleasuretoys\.biz jsjgjt\.com cuvyr\.com air\.io ecotect\.com azedresearch\.org eklmnhost\.com il\.mahidol\.ac\.th nmxxkmzgonko\.com johnmoan1\.freehostia\.com warezboard\.seothaithai\.com mooselodgeproductions\.com tenormedia\.com forums\.sellyoursitefast\.com forum\.dreamaboutchina\.com nikonisti\.ro redeseducativaspade\.com quantulus\.com guineaonline\.com globalunitedsavings\.com lakechelanalumni\.net forum\.fasanga\.com edinburgh\.craigslist\.co\.uk blogcelular\.net i0799\.com reagentcafe\.com leronimo\.com forum\.a2actors\.com forum\.money2take\.tk commsedu\.co\.uk long1985.byethost3\.com pictures-point\.nl ojodelaplata\.vox\.com dragon-tech\.org kotsos3\.livepage\.gr lifemind\.com canvaco\.org nightdomination\.altervista\.org alhorea\.com pardaan\.com tinavmurray\.com blazn360\.com gol\.mainwebsite\.org com-health\.com genius-entertainment\.com lydiadeetz\.vox\.com pilipino\.com faceroll\.se dustie\.com edicolantenews\.com xbox360achievements\.org 2dfighter\.com Girls-Next-Door elephantcarhire\.com rushessays?\.com bestessays?\.com bestdissertations?\.com cheappoolproducts\.com superiorpapers\.com bestessays\.ca mightystudents\.com term-paper-research\.com college-paper\.org kamin\.kilu\.de kaminscout24\.de poker-rooms-review\.org all-auto\.ro 517dv\.com casino.?spielen\.biz ktmboard\.com seospec\.net sexocuritiba\.com\.br webdesign63\.de websearchplanet\.info blog\.bitcomet\.com dissertationlab\.com bestessayhelp\.com bookwormlab\.com hollandandbarrett\.com bestcheapautoinsurance\.com profischnell\.com getcreditrepairtips4u\.com maketodaypayday\.co\.uk usfirepits\.com cheapautoinsurancekentucky\.com automobile-insurance\.com carinsuranceonline-\d\d\.com 4autoinsurancequote\.org essay-writer\.org essaywritingservices\.org iresearchpapers\.com domainname\.com\.au lifeinsurancequotes\.com\.au myfuneralinsurance\.com\.au giftbasketsplus\.com lifeinsurance\.net\.au online-poker-spielen\.biz lowinterestcreditcards\.com(\.au)? balancetransfercreditcards\.org dartsimaging\.com searchengineoptimi[zs](ing|ation)(world|australia)\.com(\.au)? webair\.com aext\.net njoyz\.com pokerenfrancais\.eu momswhothink\.com fortunebaby\.com blackpenguin\.net novatedleasedeals\.com\.au labradoodle-puppies-for-sale\.net allstartradingpins\.com lease-a-seo\.com offsidebet\.com ukppiclaims\.org learners\.in\.th orbitfm\.com thekoeniggroup\.com forexinsider\.co\.uk indiangoldrates\.com iwanttosellmydiamond\.net pacquiaomosley\.co\.cc hcg-injections\.org hcgdiet\.net communaute\.sstic\.org prlog\.org unlockiphone4\.com patioheater[sz]?\.com card-approvals\.co\.uk hamptonbayceilingfans\.net novolinespiele\.de novoline24\.eu diamondlinks\.net lol\.com mastersdissertation\.co\.uk mortgagecomparison\.com\.au i52\.photobucket\.com outdoorpropanefirepit\.net s3\.hubimg\.com antiquegasstoves\.info bohaute\.com ariplex\.com wroughtironpatiofurnituresale\.com payday-loans-online\.com\.au carinquotes\.com carinsurancecomparisonsites\.com 2wheelmotors\.info thegrio\.com outdoorfountains\.com profi-fachuebersetzung\.de uebersetzung-deutsch-englisch\.com xn--bersetzungsbro-frankfurt-uscm\.de shindiristudio\.com emailmarketingsoftwares\.org signalsforex\.org smebs\.blog\.com sme\.in essayhelppros\.co\.uk headlicetreatmentworld\.com logodesignmaestro\.com customessayhelp\.com pffchat\.com book-of-ra-spielen\.com dissertation-help\.co\.uk termpapers-guide\.com logodesignconsultant\.com mmcashloans\.co\.uk mmpaydayloans\.co\.uk my\.apexfitness\.com mystore\.24hourfitness\.com mycaal\.com mmtaxlawyer\.com mmtaxrelief\.com mmtaxhelp\.com mmtaxdebt\.com mmtaxattorney\.com waterproofmp3\.info juegosgratis\.de motorcyclegames\.us angry-birds-online\.com snipsly\.com scotties\.co\.nz nzhirecartoday\.info videofishingknots\.com cheapaudiobooks\.org bernardtips\.com buyphone4withoutcontract\.com auto-ready\.com lacapila\.com hotelsinamsterdam-netherlands\.com refrigeration-repair-tips\.com pandoracharm-uk\.com swissking\.net watchonetreehill\.org www-e-bad-credit-credit-cards\.com surgerythailand\.com pandoracharmsuksale\.net thomassabostockists\.com braceletsuk\.com kanayorecommends\.com goosejakkedk\.com kontaktlinserna\.com prestigeweddinginvitations\.com sum-security\.com pandoraaustraliastockists\.com angrybirdshub\.com onlinepokered\.com downloadfullgamesfree\.net hotwirelesscoupons\.com purecigs\.com trivology\.com biocig\.ro promocoder\.ne linkyoursite\.net geekzu\.com perfectclaims\.co\.uk tagesgeldzinsen\.tv bluegravityhosting\.com mywikibiz\.com sell-junkcars\.com jaycomm\.com\.au jualvccmurah\.com fashionreplicabags\.asia purifiedlife\.com carinsurancecomparisonshelp\.com faresoldisuinternet\.com itshumour\.blogspot\.com thefunnyquotessayings\.com coachoutletny\.com community\.remedygames\.com forums\.immigration\.com forums\.toucharcade\.com forum\.bbpixel\.com juristischer-uebersetzer\.profis\.info uebersetzung-deutsch-englisch\.4kp\.de uebersetzer-englisch-niederlaendisch\.at\.cr simultandolmetscher\.9gb\.de sprachenfokus\.eo3\.de open-mic\.tv missoldppi\.co texturedroots\.com ofen-nrw\.de personalinjuryclaimsadvice\.com coffeemakersreviewed\.net isabelmarantnlsneakers\.com raspberryketonepurenow\.com priorityappliances\.net vitrier-rueil-malmaison\.fr primavakantie\.nl miss-link\.net kontopoulos\.net bhgalleries\.com repairpartstock\.com ashlagbaroch\.org
+
+
+
+
+
diff --git a/BadContent.moin b/BadContent.moin
deleted file mode 100644
index ddf2fca..0000000
--- a/BadContent.moin
+++ /dev/null
@@ -1,4805 +0,0 @@
-## Please edit system and help pages ONLY in the master wiki!
-## For more information, please see MoinMoin:MoinDev/Translation.
-##master-page:Unknown-Page
-##master-date:Unknown-Date
-#acl -All:write Default
-#format plain
-#language en
-([\w\-_.]+\.)?(l(so|os)tr)\.[a-z]{2,}
-(blow)[\w\-_.]*job[\w\-_.]*\.[a-z]{2,}
-(buy)[\w\-_.]*online[\w\-_.]*\.[a-z]{2,}
-(gambling|porn|busty|prescription|pharmacy|penis|pills|enlarge)[\w\-_.]*\.[a-z]{2,}
-(diet|penis)[\w\-_.]*(pills|enlargement)[\w\-_.]*\.[a-z]{2,}
-(annunci|tatuaggi|canzoni|musicali|scarica|sesso|hentai|ragazze|sonnerie)[\w\-_.]*\.[a-z]{2,}
-(i|la)-sonneries?[\w\-_.]*\.[a-z]{2,}
-(incest|beastiality)[\w\-_.]*\.[a-z]{2,3}
-(levitra|lolita|phentermine|viagra|vig-?rx|zyban|valtex|xenical|adipex|meridia\b)[\w\-_.]*\.[a-z]{2,}
-(magazine)[\w\-_.]*(finder|netfirms)[\w\-_.]*\.[a-z]{2,}
-(mike)[\w\-_.]*apartment[\w\-_.]*\.[a-z]{2,}
-(milf)[\w\-_.]*(hunter|moms|fucking)[\w\-_.]*\.[a-z]{2,}
-(online)[\w\-_.]*casino[\w\-_.]*\.[a-z]{2,}
-(paid|online)[\w\-_.]*surveys[\w\-_.]*\.[a-z]{2,}
-(prozac|zoloft|xanax|valium|hydrocodone|vicodin|paxil|vioxx)[\w\-_.]*\.[a-z]{2,}
-(puss(ie|y)|adult|sex|fuck|suck|cock|virgin)\S{0,15}\.info/
-(ragazze)-?\w+\.[a-z]{2,}
-(ultram\b|\btenuate|tramadol|pheromones|phendimetrazine|ionamin|ortho.?tricyclen|retin.?a)[\w\-_.]*\.[a-z]{2,}
-(valtrex|zyrtec|\bhgh\b|ambien\b|flonase|allegra|didrex|renova\b|bontril|nexium)[\w\-_.]*\.[a-z]{2,}
-\.(chat|boom|fromru|hotmail|newmail|nightmail|nm|narod|pochta)\.ru
-\.[0-9]{5,}\.(com|net|org|us|biz|cn|ru)
-\.4t\.com
-\.51\.net
-\.6x\.to
-\.a\.la/
-\.b3\.nu
-\.cameroun\.ws
-\.flywebs\.com
-\.free-25\.de
-\.gb.com
-\.hostrim\.com
-\.qn.com
-\.sbn\.bz
-\.shell\.la
-\.static\.net
-\.t35\.com
-\.uk\.to
-\.uni\.cc
-\.w28\.org
-\.wol\.bz
-\.wtf\.la
-\.xs3\.com
-\.ya\.com
-\.yadoo\.cn
-\bda\.ru\b
-\bde\.gg\b
-\bde\.nr\b
-\bde\.tc\b
-\bde\.tp\b
-\bgo\.ro\b
-\w+\.sh\.cn
-0008888.com
-000site\.com
-0020.net
-0030.net
-00freehost\.com
-01-beltonen.com
-01-klingeltoene.at
-01-klingeltoene.de
-01-loghi.com
-01-logot?.com
-01-logotyper.com
-01-melodias?.com
-01mobile.com
-01-ringe?tones?.com
-01-ringe?tones?.us
-01-ringsignaler.com
-01ringtones.co.uk
-01-soittoaanet.com
-01-suonerie.com
-01-toque.com
-0adult-cartoon.com
-0cartoon.com
-0cartoon-sex.com
-0catch.com
-0livesex.com
-0sex-toons.com
-0sfondi.com
-0sfondi-desktop.com
-0suonerie.com
-0toons.com
-0xxx-cartoon.com
-1000\-celebs\.com
-100comm.com
-100hgh.com
-100-sex.com
-100megsfree5\.com
-108bikes.com
-110fat.com
-11126.com
-123-sign-making-equipment-and-supplies.com
-125mb.com
-125we.com
-148-law.com
-150m\.com
-158hk\.com\.cn
-163ns.com
-163school.com.cn
-168Education.com
-168marketing.com
-168wire.com
-16safe.com
-17train.com
-1816.net
-18caixin.com
-18ny.com
-18show.cn
-1accesshost\.com
-1afm\.com
-1asphost.com
-1-bignaturals.com
-1concerttickets.com
-1-cumfiesta.com
-1domiks\.org
-1ebalo\.org
-1foleks\.org
-1footballtickets.com
-1golod\.org
-1hrens\.org
-1ibanusiks\.org
-1jolla\.org
-1-klingeltone.com
-1so.com.cn
-1so\.net\.cn
-1st-(auto-insurance-4u|phonecard|printer-ink-cartridge|shemale-sex).com
-1st-host.org
-1stindustrialdirectory.com
-1stlookcd.com
-1stop[\w-]*.com
-1st-payday-loans.net
-1sweethost\.com
-1-texas-holdem.us
-1und1-shopping.de
-1-welivetogether.com
-1-wholesale-distributor.com
-1xp6z.com
-2008travel.com
-20fr.com
-216.130.167.230
-24-hour-fitness-online.com
-269s.tinline.com
-269s\.com
-2ndmortgageinterestrates.com
-2twinks.com
-30-60-90-day-sales-plan\.com
-321cigarettes.com
-3333.ws
-35tk\.com
-365jp.com
-3ccenter\.com
-3host.com
-3-sexy.com
-3sheng.net
-3sixtyfour.com
-3yaoi.com
-404host.com
-41b.net
-42tower.ws
-4mg.com
-4u-topshelfpussy.com
-4womenoftheworld.com
-5118.com
-5118.net.cn
-512j.com
-5151office\.cn
-51asa.com
-51dragon.com
-51nlp\.com
-51weixing.com
-51wisdom.com
-51zhengxing.net
-54eo.com
-5782601.net
-58798309dyb.com
-591dy.com
-625fang\.com
-63174828.com
-63dns.com
-65.217.108.182
-66.197.102.2
-666house\.com
-66battery.com
-66cable.com
-66cellphone.com
-66ceramic.com
-66floor.com
-66interior.com
-66logistics.com
-66machine.com
-66packing.com
-66sculpture.com
-66supply.com
-66tools.com
-68685633.com
-68l.com
-69.61.11.163
-69yo.com
-6p.org.uk
-6x.to
-71space\.[a-z]{2,}
-7p.org.uk
-8848flower.com
-888cas.com
-888jack.com
-888steel.com
-888-texas-holdem.com
-88aabb.com
-88feedstuff.com
-88fiber.com
-88telephone.com
-8cx.net
-8cx\.net
-8k.com
-8th\S*street\S*latina\S*\.[a-z]{2,}
-911\.uni\.cc
-9136\.cn
-91dir.com
-91xz.info
-999777888.com/jkcy009
-99bbcc.com
-99caixin.com
-99jl.net
-9sf\.cn
-a1-mortgage-finder.com
-a-1-versicherungsvergleich.de
-a688.net
-aaaaaaaa.ru
-aaff.net
-aajj.net
-aaliyah\.ws
-aauu.net
-abc3x.com
-abcink\.com
-abnehmen-ganz-sicher.com
-abocams.de
-abymetro.org.uk
-ac8888.com
-academytrans.com
-accessories-car.com
-accompagnatrici.cc
-acme\-arts\.com
-acmetranslation\.com
-acornwebdesign.co.uk
-activeshow\.net
-acupuncturealliance\.org
-acyclovir.net
-ad.huwh.org
-aducasher.spb.ru
-adult\-categories\.info
-adult-dvds?-dot.com
-adultfreehosting.com
-adult-free-webcams.com
-adult-friend.info
-adultfriendfinder.com
-adultfriendfindernow.com
-adultfriendfindersite.com
-adultfriendsite.com
-adult-games.name
-adulthostpro.com
-adultlingerieuk.com
-adultnonstop.com
-adultpics.com
-adultserviceproviders.com
-adultshare.com
-advantage-quotes.com
-a--e.com
-aegean.net.cn
-aektschen.de
-aerohose.com
-aesthetics.co.il
-afreeserver.com
-agentsmax\.com
-agreatserver.com
-aids120.95.cn
-aimaiti.com
-aimite.com
-air520\.com
-airfare-links.net
-airshow-china.com.cn
-airtrip.com.cn
-akkx\.info
-alawna.blogspot.com
-alexanet.com
-alfago.com
-alhaurin.to
-all-debt-consolidation.org
-allfind.us
-all-fioricet.com
-allinsurancetype.com
-allmagic.ru
-allof.myphotos.cc
-alloha.info
-allohaweb.com
-all-porn.info
-all-rxdrugs.com
-all-we-live-together.com
-allwoodoxford.com
-almacenpc.com
-alprazolam-online.qn.com
-amateur-(lesbian|movie|naked|site).us
-amateurs.r00m.com
-amateursuite.com
-amateurs-xxx.us
-amateur-thumbs.net
-ambien-online-order.zx81.at
-ambien-prescription.qn.com
-americacashfast.com
-americancdduplication.com
-americanpaydayloans.net
-american-single-dating.com
-amoxicillin-online.net
-amoyplastic.com
-anacondasex\.info
-analloverz.com
-anal-sex-pictures.us
-anchuang.com.cn
-andyedf.de
-angenehmen-aufenthalt.de
-angrybirdsblog\.com
-animalsex-movies-archive.com
-animalsex-pics-gallery.com
-anime1.org
-anime-adult.us
-anlinet.com
-annuaire.biz.ly
-annuaire.tk
-anonymous-blogger.com
-antely.com
-anti-exploit.com
-antu.com.cn
-anxietydisorders.biz
-anything4health.com
-anzwers\.net
-anzwers\.org
-a-onedigitizing.com
-a-oneemb.com
-aotubang.com
-aotubangshi.net
-ap8\.com
-apa-redlion.com
-apicalsoft.com
-a-pics.net
-apollopatch.com
-appliances66.com
-apply-to-green-card.org
-appollo.org
-approachina.com
-approval-loan.com
-a-purfectdream-expression.com
-aquari.ru
-aquatyca.net
-arbat\.or\.at
-arcsecurity.co.uk
-area-code-npa-nxx.com
-argendrom.com
-armor2net.com
-aromacc.com
-arrecife.to
-arterydesign.com
-artsdeal.com
-asianbum.com
-asian-girls.name
-asian-nude.blogspot.com
-asian-sex-woman.com
-asp169.com
-ass-picture.us
-a-stories.com
-atetech.com.cn
-atkinsexpert.com
-auctionmoneymakers.com
-auktions-uebersicht.de
-austinlawteam\.com
-autodetailproducts.com
-autodirektversicherung.com
-autofinanzierung-autokredit.de
-autofinanzierung-zum-festzins.de
-autohandelsmarktplatz.de
-autoing.com\.cn
-autoing\.com\.cn
-auto-insurance-links.net
-autokredit-autofinanzierung.de
-autokredit-tipp.de
-auto-loans-usa.biz
-automotive.com
-autoversicherung-vergleichen.info
-autumn-jade.com
-avon-one.com
-awxk.net
-ayamonte.to
-ba2000.com
-babes-d.com
-babes-maidens\.info
-babes-plus.com
-baby-info\.org
-babymarktplatz-aktiv.de
-baby-perfekt.de
-background-check.info
-bad-movies.net
-bad-passion.com
-bahraichfun.com
-baidublog.com
-baifaa.cn
-balancingmachine.cn
-bali-dewadewi-tours.com
-balidiscovery.org
-bali-hotels.co.uk
-balivillas.net
-banialoba3w.150m.com
-bannedhome.com
-banned-pics.com
-barbate.to
-barcelona.to
-barcode555.com
-barcodes.cn
-bare.org
-barely-legald.com
-barely-legal-teenb.com
-bargeld-tipp.de
-barrym.co.uk
-bast3.ru
-batukaru\.[a-z]{2,}
-bayareabags\.com
-bbell.com
-bbs.csnec.net
-bccec.com.cn
-bccinet.org
-bc-printer.com
-bdi-bone.com
-bdsensors.com.cn
-bdsm-story.blogspot.com
-beast(iality|sex)-(movies|stories|animal-sex-stories).(com|net)
-beaumont-bar.co.uk
-beauty333.com
-beauty-farm.net
-beautysilk.net
-beer-china.com
-beijingkh.com
-belinking.com
-beltonen-logos-spel.com
-benalmadena-costa-del-sol.to
-benavista.to
-benessere.us
-benidorm.to
-bestasianteens.com
-best-buy-cialis.com
-best-cialis-source.com
-bestdvdclubs.com
-bestel.com.cn
-besthandever.com
-best-high-speed-internet.com
-bestialitylinks.org
-bestiality-pics.org
-bestialityzoo.sytes.net
-best-internet-bingo.com
-bestits.net
-best-make-money.com
-bestonline-medication.com
-bestonline-medication.net
-bestonline-shopping.com
-best-result-fast.com
-bet-on-horseracing.com
-better-56.com
-beverlyhillspimps?andhos.com
-bhs-design.com
-big-(black-butts|breast-success|hooters|natural-boobs|naturals-4u).(com|net|us|org)
-big(bras-club|moms|titchaz).com
-bigmag.com.ua
-big-rant.com
-bigsitecity.com
-bigxigua\.com
-bildmitteilung.us
-billigfluege-billige-fluege.de
-billleo.com
-bio-snoop.com
-birth-control-links.com
-bizhat.com
-bizhome\.org
-bj-?(acca|erwai|fusheng|fyhj|hchy|hsdx|cas|gift|khp|xhjy|sd|zufang).(cn|com)
-bj701.com
-bjdyzs\.com
-bjerwai.com
-bjfusheng.com
-bjhsdx.com
-bjicp.net
-bj-page.com
-bj-qsan\.com
-bjsister.com
-bjxin\.com
-bjzyy.com
-black-?jack-?(4u|777|dot|homepage|play-blackjack|site|winner)?.(net|com|fm)
-black-amateur-cock.net
-blackjack-123.com
-blackjack-p.com
-blahblah.tk
-blanes.to
-b-liver.com
-blk-web.de
-bllogspot.com
-blog.co.tz/dexters
-blogbus.com
-blogcn.com
-blogforbaby.com/blog/deepsea
-blogforbaby.com/blog/jbilder
-bloggersdream.com/ahorcar
-bloggersdream.com/emscience
-bloggingmadness.com/aufmerksamkeitsdefizitsyndrom
-bloglabs.biz
-blogman.biz
-blogmen.net
-blogspam.org
-blogspoint.com/kostas
-blogspoint.com/marklanegan
-blogstudio.net
-blog-tips.com
-blonde-(pussy|video|xxx).us
-blumengruss-onlineshop.de
-blumenshop-versand.de
-b-mailbox.com
-bnuol.com
-bochao.com.cn
-bodet-clocks.co.uk
-body-jewelry.reestr.net
-bodyjock.com
-body-piercing.softinterop.com
-bokaibj.com
-bolonia.to
-bondage-story.blogspot.com
-bon-referencement.com
-boobmorning.com
-boobspost.com
-booking-room.com
-book-translation\.com
-boom.ru
-boom\.ru
-boylaser\.com
-breast-augmentation.top-big-tits.com
-briana-banks-dot.com
-british-hardcore.net
-brownlion.com.cn
-brrddd.org
-budget-phonecards.co.uk
-bueroversand-xxl.de
-bugaboo-stroller.com
-buildermax\.com
-bulkemailsoft.com
-burda\.isgre\.at
-burningcar.net
-businessbloging.com/benzaldehyde
-businessbloging.com/gesetz
-business-grants.org
-butalbital.org
-butianshi.com
-buy.*\.qn\.com
-buy-[\w-]+-online\.
-buy-adult-sex-toys.com
-buy-adult-toys.biz
-buy-ambien.8bit.at
-buyambienonline\.blogspirit\.com
-buy-car-insurance-4-us.com
-buy-carisoprodol\.qo\.pl
-buy-cheap-soma\.ar\.gs
-buy-cialis.ws
-buy-cialis-1.qn.com
-buy-cialis-online.qn.com
-buy-codeine.bebto.com
-buy-codeine.qn.com
-buy-codeine-online.b3.nu
-buy-computer.us
-buy-computer-memory.net
-buy-discount-airline-tickets.com
-buy-hydrocodone.qn.com
-buy-hydrocodone-online.sinfree.net
-buy-hydrocodone-online.u4l.com
-buyhydrocodonewhere.bigsitecity.com
-buy-laptop.biz
-buy-levitra-1.qn.com
-buy-levitra-online.qn.com
-buy-order-cheap-online\.info
-buyphen375reviews\.net
-buy-rx-usa.com
-buy-sex-toys.net
-buystuffpayless.com
-buy-valium.imess.net
-buy-valium.qn.com
-buy-valium-online.enacre.net
-buy-vicodin.dd.vg
-buy-xanax.qn.com
-buy-zolpidem.qn.com
-buzz-hotels.co.uk
-bvicr\.cn
-b-witchedcentral.co.uk
-by-and-by.com
-byondart\.com
-byronbayinternet.com
-c911c\.com
-cabopino.to
-cadaques.to
-cadiz-andalucia.to
-cai4\.com
-caipiaowangzhi.com
-calahonda.to
-california.k9.pl
-callingcardchoice.com
-calling-phone-cards\.org
-calpe.to
-cambridgetherapynotebook.co.uk
-camemberts.org
-camera-cn.com
-canada-travel.cn
-canos-de-meca.to
-cantonfairhotelguangzhou.com
-cantonfairhotelguangzhou\.com
-cantwell2000.com
-CAPAZ MESMO, ISTO E UM FATO MALUCO
-capital-credit-cards.com
-captain-stabbin.blogspot.com
-captain-stabbin-4u.com
-cardsloansmortgages.com
-careersmax\.com
-car-financing-low-rates.biz
-car-fuck.net
-carcoverspal\.com
-carinsurancecomparisonhelp\.com
-carisoprodol.q03.net
-carisoprodolonline.bigsitecity.com
-carlack.cn
-carmenblue.com
-carnalhost.com
-carnumbers.ru
-car-rental-links.com
-car-rentals-2go.com
-car-rental-search.com
-cars-links.com
-cartama.to
-cartoni(-animati|erotici|giapponesi).com
-cartopia.com
-cashadvanceclub.com
-cash-advance-quick.com
-cashmerebiz.com
-casillas-del-angel.to
-casoft.com.cn
-castingagentur2004.de
-cast-shadow.com
-cat-guide\.org
-cbitech.com
-ccie130.com
-ccie-ccnie.com
-ccna130.com
-ccna-ccna.com
-ccnp130.com
-ccnp-ccnp.com
-cd21\.cn
-cdshop-guenstig.de
-cds-xxl.de
-cebooks.net
-cegcr\.cn
-celebritylust.blog-city.com
-celebritypics.ws
-celebskin.com
-celebtastic.com
-cell-phone-accessories-dot.com
-ceool\.cn
-ceramic168.com
-certificationking.net
-certified-(new|used)-(autos|cars|suvs).com
-cfeenet.com
-changweia.cn
-chaosmagic.com/weblog/catastrophic
-chaseonlinebankingcom\.com
-chat\.ru
-chat-l.de
-chatten.bilder-j.de
-chauffeurtours.co.uk
-cheap.*\.6x\.to
-cheap-4.com
-cheap-adult-sex-toys.com
-cheap-ambien.qn.com
-cheap-cialis.qn.com
-cheap-cigarettes.com
-cheaper-digital-cameras.uk.com
-cheapest-phone.co.uk
-cheap-levitra.qn.com
-cheap-valium.my-age.net
-cheapvpn\.org
-cheap-web-hosting-companies.com
-cheap-xanax.qn.com
-chem888.com
-cherrybrady.com
-chickz.com
-\.china\.com
-china0519.com
-chinaad-design.com
-china-af.com
-chinaaircatering.com
-china-am.com
-china-apt.com
-chinaaxletree.com
-china-cp.com
-china-digital-camera.com
-china-dope.com
-chinagoldcoininc.com
-chinahr.com
-chinalatex.com
-chinaqygl.com
-chinasensor\.info
-china-sports-kit.com
-chinaswk.com
-china-transformer.com
-china-vcr.com
-chinaw3.com
-china-wood-floor.com
-china-wp.com
-chindata.com
-chindmoz.com
-chipiona.to
-chloesworld.com
-choose-online-university.com
-chrislaker.co.uk
-chuanganqi.dzsc.com
-chuanqisuji.com
-chunmeng.com
-cialis.homeip.net
-cialis.incredishop.com
-cialis.xs3.com
-cialisapcalis.com
-cialis-buy.com
-cialis-dot.com
-cialis-express.com
-cialis-online.b3.nu
-cialis-online-1.qn.com
-cialisusa.bravehost.com
-ciscochina.com
-citicardscom\.net
-claireburgos.com
-clamber.de
-clanbov.com
-clarks-shoe.u4l.com
-classifiche-italiane.org
-claudiachristian.co.uk
-clayjames.com
-cleannbright.co.uk
-click\.hn\.org
-click-or-not.de
-clophillac.org.uk
-closed-network.com
-club69.net
-cmeontv.de
-cmmdc.com.cn
-cn80051.1816.net
-cnbess.com
-cnbjflower.com
-cn-clothing.com
-cn-computer.com
-cndevi.com
-cn-dynamotor.com
-cn-exhibition.com
-cn-fashion.com
-cnfibernet\.com\.cn
-cnfti.org.cn
-cngreat\.net
-cn-present.com
-cn-press.com
-cn-Satellite-tv.com
-cnsec.cn
-cntaiyangneng.com
-cntoplead.com
-cn-vcr.com
-cnvideomeeting.com
-co.tradeinfo.cn
-codeine.xs3.com
-codeine-online.imess.net
-coin-abndalucia.to
-college-girl-pic.com
-college-links.net
-coma-cn.com
-combaltec.com
-comeback.com
-cometo(japan|malaysia|singapore|thailand).com
-commovie-china.com
-competa.to
-completelycars.com
-completelyherbal.com
-comptershops-online.de
-computer666.com
-computer888.com
-computer-onlinebestellung.de
-computer-und-erotische-spiele-download.com
-computerversand-xxl.de
-confession-of.mine
-conil.to
-conjhost.com
-container-partner.de
-contake.com
-cool\.as
-cool-extreme.com
-coolgoose.com
-coolhost\.biz
-coolp.(biz|net|org)
-copy168.com
-cor-admin.co
-cor-admin.com
-coresleep.com
-cornishholidaysuk.com
-cosmetics2008.com
-cosmetics666.com
-costa-blanca-alicante.to
-costa-blanca-denia.to
-costa-blanca-elche.to
-costa-blanca-ibi.to
-costa-blanca-javea.to
-costa-blanca-torrevieja.to
-couponmountain.com
-cover-your-feet.com
-cpravo.ru
-cqychy.com
-craftwork2008.com
-cragrats-catering.co.uk
-cragrats-education.co.uk
-cragrats-inspiring.co.uk
-cragrats-react.co.uk
-cragratstraining.co.uk
-crazypussy.info
-crazyvirgin\.info
-creavic.com.cn
-creditcardpost.com
-credit-factor.com
-credit-links.net
-credit-report-links.net
-csnec.net
-cstarcom.com
-cszg\.net
-cum-facials.us
-cumfiesta-4u.com
-cumon.no-ip.org
-customer-reviews.org
-cvdiy.com
-cvdiy\.com
-cw92013.chinaw3.com
-cxcn\.info
-cyberfreehost.com
-cycatki.com
-cyclobenzaprine.00freehost.com
-cyclo-cross.co.uk
-cykanax.com
-czwin.com.cn
-dad-daughter-incest.com
-dadi009\.91\.tc
-dahongbao.com
-dailyliving.info
-damadaoju.com
-damianer.top-100.pl
-danni.com
-dapt\.org
-darest.de
-datasoon.com
-datestop.net
-dating-(choice|harmony|service-dating|services-dating-service).com
-dating999.com
-dating-online-dating.org
-day4sex.com
-deathblow
-debt-consolidation-care\.com
-debtconsolidationfirm.net
-debt-consolidation-kick-a.com
-debt-consolidation-low-rates.biz
-debt-consolidation-now-online.com
-debtconsolidationusa.org
-debt-disappear.com
-debtmanagementcompanyonline.com
-debt-solution-tips.com
-decorationsexport.com
-dedichepersonali.com
-deep-ice.com
-deikmann.de
-dela88.com
-delay-dva.com
-deli.net.cn
-dentalinsurancehealth.com
-department-storez.com
-desiraesworld.com
-destindia-internships\.com
-deutschlandweite-immobilienangebote.de
-devonanal.com
-devon-daniels.com
-diabetes-cn.com
-dianepoppos.com
-dianying8.net
-diarypeople.com
-diecastdot.com
-digitale-teile.de
-digital-projector.net
-dindon.cn
-dinmo.net
-directcarrental.com
-directcti.com
-directrape.com
-directringtones.com
-direct-tv-for-free.com
-dirty-story.blogspot.com
-discount-airfares-guide.com
-discount-cheap-dental-insurance.com
-discount-life-insurance.us
-discountprinterrefill.com
-discoveryofusa.com
-divorce-links.com
-dlctc.com
-dmoznet.com
-dmoznet.net
-dmoznet.org
-dnip.net
-dn-register.com
-dns\.com\.cn
-dns110.com
-do\.9jh\.com
-dogolz\.de
-domkino\.com\.ua
-dongdao\.net
-dont-lost-money\.info
-doo\.pl
-door168\.com
-dorka\.ifindex\.com
-dostweb.com
-dotas.com
-dotcomup.com
-dotmoment.com
-downloadzipcode.com
-downsms.com
-dr\.ag
-dragonball-?x*.biz
-dragonball-?x*.cc
-dressagehorseinternational.co.uk
-dress-cn.com
-drive-backup.com
-drochka.com
-drozd\.voxelperfect\.net
-drs.infosec.org.cn
-drugsexperts.com
-drugstore.blog-city.com
-drugstore.st
-drugstore-online.us
-drunk-girls-(flashing|party).(com|us)
-drupaliciousbot\.com
-dstmedia.com
-dudoctor\.com
-duducat.com
-dunecliffesaunton.co.uk
-duvx\.com/bbs\.php?bbs=vs
-dvd2.us
-dvd-copier.info
-dvd-home-theatre.com
-dwoq.com
-dzhsc.com
-e40.nl
-earphone168.com
-easy-money-investing.com
-easyrecorder.com
-easyseek.us
-ebackground-checks\.com
-ebaybusiness.net
-ebony-xxx.us
-ebookers.co.uk
-e-bookszone.com
-ec198.com
-ec51.cn
-ec51.com
-ec51.net
-ec51.org
-ec91.com
-ecar-rentals\.com
-ecblast.com
-eccentrix.com/members/casinotips
-echinabid.com
-echinabid\.com
-echofourdesign.com
-e-cialis.net
-ecologix.co.uk
-e-credit-card-debt.com
-ecredit-report\.com
-eden\.fx120\.net
-e-discus.com
-e-dishnetworks\.com
-edrugstore.md
-edwardbaskett.com
-effexor.cc
-effexor-web.com
-e-fioricet.com
-e-free-credit-reports.com
-eggesfordhotel.co.uk
-egyway.com
-einfach-wunschgewicht.com
-elcenter-s.ru
-eldorado.com.ua
-electromark-uk.co.uk
-electronics-info.com
-elegant-candles.com
-elektronikshop-xxl.de
-elie\.com\.cn
-elite-change.com
-elitecities.com
-eliulin.com
-elrocio.to
-elviria.to
-emedicalmarijuanacard\.com
-emmasarah.com
-emmss.com
-enacre.net
-ena-free-show\.info
-endns.net
-e-news.host.sk
-enine-pv.com
-envoyer-des-fleurs.com
-e-online-bingo.com
-eonsystems.com
-e-order-propecia.com
-epackshop.net
-e--pics.com
-eplastic-surgery\.com
-e-play-bingo.com
-epsystem.net
-erbium12.com
-erosway.com
-erotic4free.net
-eroticalservers.net
-erotic-free.com
-erotic-lesbian-story.blogspot.com
-erotic-video.us
-erotische-geschichten-portal.com
-errolware.com
-escort-links.net
-escorts-links.com
-eScrew is
-esmartdesign.com
-esmoz.com
-estepona.to
-ethixsouthwest.com
-etoo.cn
-etowns\.org
-e-tutor.com
-eutstore\.com
-evanstonpl.org
-event-kalendarium.de
-everyvoice.net
-evromaster.ru
-exdrawings.com
-execsoft-software.co.uk
-executive-chauffeur-hire.co.uk
-ex-machine.com
-exoticdvds.co.uk
-exoticmoms.com
-expatdream.com/blog/aclarar
-experienceflagstaff.com/blogs/xzchro
-extralife\.biz
-extrasms.de
-extreme-rape.org
-extreme-sex.org
-eye-laser.co.uk
-f2g.net
-f2s.be
-fabida.net
-fabricant-accessories.co.uk
-fabulos.de
-fabuloussextoys.com
-facial-skin-care-center.com
-fairchild.com.cn
-fairland.cn
-fairyblog.com/conect
-fakir\.zenno\.info
-family-incest.us
-fangso\.com
-fansjiaoab.blog.163.com
-fantasyfootballsportsbook.com
-farm-beastiality.com
-farmsx.com
-fasa\.jetco-ops\.com
-fashuo300.com
-fast-look\.com
-fast-fioricet.com
-fast-mortgage-4-u.com
-fat-cash.com
-fateback.com
-fat-lesbians.net
-fat-pussy-sex.net
-fatty-liver.cn
-fatwarfare.com
-favilon.net
-fda.com.cn
-fdl.net.cn
-feexpert.com
-feilun.com.cn
-female-orgasms.org
-ferta\.imlds\.com
-fielit.de
-figa.nu
-finance-world.net
-finanzen-marktplatz.de
-find-a-mortgage.co.uk
-findbookmakers.com
-find-cheap-dental-plans.com
-finddatingsites.com
-findsexmovie.info
-findsexxx.us
-find-u-that-mortgage.com
-findyouruni.com
-finger-bobs.com
-fioricet.batcave.net
-fioricet.bravehost.com
-fioricet.st
-fioricet-dot.com
-fioricet-web.com
-firefoxdownload\.us
-first-time-story.blogspot.com
-fishoilmiracle.com
-fitness-links.net
-fitnessx.net
-fittest\.250m.com
-flash77.com
-flatbedshipping.com
-fleet-drive.co.uk
-fleshlight.org
-flewblog.net
-flexbelthq\.com
-flexeril-web.com
-flirt08.de
-floraday\.com\.cn
-flowertobj.com
-flowerwish.com
-flug-und-mietwagen.de
-fly-sky.com
-fm360.net
-food-cn.com
-football-betting-nfl.com
-forceful.de
-forex.inc.ru
-forex[\w-]*\.info
-forex-online-now.com
-forlovedones.com
-forseo\.
-foto-gay.us
-found-money-investment.info
-franchise\.ws
-frangelicasplace.org
-frankpictures.com
-free(hostingpeople|webs|web-hosting).com
-free-adult-chat-room.com
-free-adult-check.com
-freeallsearch.com
-free-britney-spears-nude.biz
-free-debt-consolidation-online.us
-freedvdplayer.cjb.net
-freeeads.co.uk
-free-fast.net
-free-games-links.com
-free-gay-video-clip.com
-free-hilton-paris-sex-video.com
-free-horoscopes.biz
-free-incest-stories-site.com
-free-latina-mpg.com
-freemovie-cn.com
-free-net-sex.com
-freenetshopper.com
-freenudegallery.org
-free-paris-nikki-hilton.blogspot.com
-freepicsdaily.com
-free-registry-cleaners\.biz
-free-satellite-tv-directv-nocable.com
-free-satellite-tv-now.com
-freeteenpicsandmovies.com
-free-teens-galleries.com
-free-texas-?hold-?em.(biz|us)
-freewebpage.org
-freewhileshopping.com
-freshsexhosting.com
-friko.pl
-fromru.com
-fspv.com
-fssj.com
-fsyflower\.com
-fuck\-my\-ass\.info
-fuck-animals.com
-fuckfrompussy\.info
-fuelcellmarketplace.co.uk
-fuel-dispenser.com
-fuengirola-costa-del-sol.to
-fuerteventura.to
-fuhaidasha.com.cn
-fulongcn.com
-funasia.cn
-funmod.com
-funny-girls\.info
-fun-spass-game.de.ms
-furensteel.cn
-furensteel\.cn
-furniture135.com
-furrios.de
-furry-kinks-looking.com
-furry-kinks-looking.net
-futurenet.com.cn
-fzrr.com
-gagnerargent.com
-gals4all.com
-galsonbed.com
-gamble-on-football-online.com
-gambling\Sgames.cc
-gamefinder.de
-games-advanced.de
-gang-rape.org
-gangxing.com
-gaokao.net.cn
-garment-china.com
-garrywa.com
-gartenshopper.de
-garthfans.co.uk
-gaucin.to
-gay-b.com
-gaybloghosting.com/kushi
-gay-boy.us
-gayfunplaces.com
-gayhomes\.net
-gay-male-story.blogspot.com
-gay-nude.us
-gay--sex.org
-gay-sex-videos.com
-gays-sex-gay-sex-gays.us
-gay-twinks-sex.com
-gayx.us
-gcchq.com
-gdgc.org
-gelago.de
-gem2.de
-gemtienda.co.uk
-generic-ambien.qn.com
-generic-cialis.qn.com
-generic-levitra.qn.com
-generic-propecia.net
-generic-valium.512bit.at
-genimat.220v.org
-genimat.cjb.net
-geocities.com/alexgolddphumanrbriar
-geocities.com/avbmaxtirodpaulmatt
-geocities.com/brandtdleffmatthias7
-geocities.com/cclibrannar_rover
-geocities.com/constpolonskaalniko7
-geocities.com/forestavmiagdust
-geocities.com/free_satellite_tv_dish_system
-geocities.com/ofconvbdemikqfolium
-geocities.com/pashkabandtvcom
-geocities.com/pautovalexasha_kagal
-geocities.com/reutovoalexeypetrovseverin5
-geocities.com/timryancompassmedius
-gerardoknutson.com
-germanytek.com
-gesundheitsshop-kosmetik.de
-gesundheit-total.com
-getapussy\.info
-get-cell-phone-accessories.com
-getdomainsandhosting.com
-get-free-catalogs.com
-get-freetrial.us
-get-hardcore-sex.com
-gethelp24x7.net
-get-insurance-quotes.com
-getitip.org
-getmoregiveless.com
-getrxscripts.biz
-get-satellite-tv-dish.com
-getstarted24x7.net
-getyourlyrics.com
-get-zoo.com
-gghggh.com
-gguu\.com
-ghettoinc.com
-giantipps.de
-gifs-clipart-smiley.de
-gilerarunner.8m.com
-giochi-online.us
-giochix.com
-girls\-pussies.info
-girlshost.net
-girlswantsmore\.info
-girls-with-cunts\.info
-giveramp.com
-give-u-the-perfect-mortgage.com
-glass8888.com
-glendajackson.co.uk
-global-phonecard.co.uk
-globalsearch.cn
-global-verreisen.de
-globalwebbrain.com
-globalwiremesh\.com
-glory-vision.com
-gloveboxes.com.cn
-gloveboxes\.com\.cn
-go.nease.net
-godere.org
-gogito.com
-gogoogle.net
-gogt\.info
-gojerk.com
-goldbuyerstrust\.com
-goldenholiday.com
-goldsenze\.com
-golfhq\.org
-gomvents.com
-gongi.pl
-gonzalesltd.com
-goodasses\.info
-goodlife2000-geheimtipp.com
-goodsexy.com
-goodwebsite.org/blog/elrincondelvago
-google8.net
-googleandbaidu.com
-googlebaidu.com
-googlepromotion.com
-google-seo.net
-googlesweb\.com
-googletosh.com
-go-pussy.titanhousing.com
-gotobiz.net
-gotooa.com
-government-grants.org
-government-grants.ws
-gpo4.com
-gpsplanet\.org
-grafit\.zenno\.info
-grancanaria.to
-grannypictgp.com
-grannysexthumbs.com
-great-cialis.com
-greatnow.com
-greecehotels-discount.com
-green-gradens\.org
-green-tx.com
-greewon\.com\.cn
-grinding-mill.net
-group-eurosex.com
-gt-lite.com
-guadalmina.to
-guardami.org
-guenstige-(krankenversicherung|onlineshops|sportartikel|versicherungstarife).(com|de)
-guizang.net
-guttermag.com
-gyhx.com
-gym-equipments\.org
-gyrohost.com/iboga
-h1\.ripway\.com/xz
-h2kmatrix.com
-haidianjiaxiao.com
-hainan35\.com
-hair-loss-cure.net
-hairy-pussy-sex.net
-haishun.net
-hallo-tierfreund.de
-hand-job.us
-handwerksartikel-xxl.de
-handy-klingeltoene.eu.tp
-handylogos-klingeltoene.net.ms
-handysprueche.de
-handytone.us
-hangchen.cn
-hangchen.com
-haole\.cn
-happyagency.com
-happy-shopping-online.com
-hardcore-(jpg|junky|pictures|pussy|sex|video).(com|us|bz|net)
-hardcorecash.net
-hard-sex-teen.com
-hardware123.com
-hardware888.com
-hartsflorist\.com
-haugeprint.co.uk
-hautesavoieimmobilier.com
-hchcinc.com
-hddata.com
-hdfix.com.cn
-headachetreatment.net
-healthmore.net
-healthrules.org
-heartbeatofhealing.org
-heavytools.webzdarma.cz
-heb-shuntong.com
-hebu.myrice.com
-hello\.to
-hentay.us
-herpies.net
-hewittlandscapes.co.uk
-heydo.com
-hg-fix\.com
-hgxweb.de
-high-risk-merchant-account.org
-hilton-nicky-paris.blogspot.com
-hion.cn
-hit168.net
-hit-melodias.com
-hits?-logos?-(games|klingeltone?|ringe?tone|suoneria).com
-hitslogosgames.com
-hjsos.com
-hk99689.com
-hk99w.com
-hkfor\.cn
-hkfor\.com
-hkfor\.net
-hkfor\.org
-hksaa\.net
-hksac\.org
-hlduanjian.com
-hmlaser.com
-hmxuan.com
-hnhqmj\.com
-hobbs-farm.com
-hogwatch\.org
-hold-em-big.com
-hold-pok.com
-hold-screen.com
-home.soufun.com
-home\.ro\b
-home\-trade\.net
-home4web.org/(hainan|fanguangcailiao|gongzuofu|niupixian|tuozhan)
-home-business-ideas-investment.info
-home-business-investments.info
-home-internet-business-investment.info
-homelivecams.com
-homenetworkingsolutions.co.uk
-home-secure\.org
-home-videos.net
-hongkong\.richful\.net
-hongkongcompanyregistry\.com
-horny-honey.com
-hornymoms.net
-hornypages.com
-horny-world.com
-horoskop-auswertung.de
-horse-racebetting.com
-horse-sex.ws
-hospitalonline\.cn
-hosting-server\.net
-hostingplus.com
-hostultra.com
-hotchina.org
-hot-cialis.com
-hotel\.altse\.com
-hotel\.netsuns\.net
-hotelbookingserver.com
-hotel-bordeaux.cjb.net
-hotelsaficionado.com
-hotelsplustours.com
-hot-escort-services.com
-hotfunsingles.com
-hot-mates.info
-hotmoko\.info
-hot-naked-guys.net
-hotsexys.com
-hotusa.org
-house222.com
-house263\.com
-houseclub.com.cn
-how-quit-smoking.com
-how-to-make-money-investment.info
-howtomakedubstep\.co\.uk
-hp-ibm.com
-hs168.com
-ht-sensor\.com
-https?://[^/\n]*8k\.com
-https?://[^/\n]*ap8\.com
-https?://[^/\n]*bare\.org
-https?://[^/\n]*danni\.com
-https?://[^/\n]*doo\.pl
-https?://[^/\n]*dr\.ag
-https?://[^/\n]*e40\.nl
-https?://[^/\n]*f2s\.be
-https?://[^/\n]*it\.tt
-https?://[^/\n]*t35\.com
-https?://[^/\n]*via\.net
-huafei7.cn
-huahuan.com
-hua-shun.com.cn
-huazhangmba.com
-huelva.to
-huihualin.com
-human-cn.com
-humangrowthhormone.org
-hunksandbabes.com
-hustler.bz
-hustlerw.com
-huyprossish\.pcadsl\.com\.tw
-hydrocodone.webzdarma.cz
-hydrocodone-online.hotusa.org
-hydrocodone-without-prescription.enacre.net
-hyip[\w-]*\.(info|com)
-hyper-sex.com
-hypnobabies.co.uk
-hzjl365.com
-hzn.cn
-ialmostdied\.com
-ibiza-island.to
-i-black-jack.com
-i-butalbital-fioricet.com
-i-buy-mortgage.com
-icpcn\.com
-idc2008\.cn
-idebtconsolidation.org
-i-directv.net
-i-dish-network.org
-ie\.isoso\.info
-i-flexeril.com
-ifreepages.com
-ig3.net
-ihongtai\.com
-i-horny.com
-i-ink-cartridges.com
-illegalhome.com
-illegalspace.com
-imeanit.org
-imess.net
-imitrex-web.com
-immobilien-?(auswaehlen|angebote-auswahl|makler-angebote|makler-l|-l).de
-immobilienmarkt-grundstuecke.de
-immobilierdessavoie.com
-immodev.com
-im-naked.com
-Imobissimo.com
-i-mortgage-online.com
-important\.as
-impotence-rx.biz
-incest-?((pics|photos?|stories|movies|videos)-?(collection|download|gallery|archive|library)?|reality|relations|taboo).(com|biz|net|ws)
-incest[0-9]\.org
-incest-pics--incest.com
-incest--stories.org
-inc-magazine.com
-incredishop.com
-indiainfotech\.com
-indiasilk.biz
-indiasilktradition.com
-industrialresource.biz
-industrial-testing-equipment.com
-i-need-money-ideas.info
-inescudna.com
-inexpensiverx.net
-infopoint.cn
-inforceable.com
-inforceables.com
-innfg.de
-insatax\.com
-insatiablepussy.com
-inspection-trips.com
-insurance.*\.go\.ro
-insurancehere.net
-insurance-quotes-fast.com
-interealty.es
-international-candle-shop.com
-international-cheese-shop.com
-internet-explorer\.ws
-internet-goulasch.com
-internette-anbieter.de
-interphone555.com
-interracial-sex.ws
-inter-ross.ru
-interseo\.com
-int-fed-aromatherapy.co.uk
-in-the-vip.org
-inthevip-4u.com
-inthevip-sex.com
-intking.com
-intlcr\.cn
-intlcr\.com
-intlcr\.net
-intlcr\.org
-intymnie.com
-investing-get-rich-quick.info
-investments-free-money.info
-inviare-mms.net
-invio-mms.us
-Invite-cn.com
-i-online-bingo.com
-ipaddressworld.com
-i-play-bingo.com
-i-play-blackjack.com
-ipmotor.com
-ipodnano\.cn
-ipodshop\.cn
-ipsnihongo.org
-iqwork.com
-irianjaya.co.uk
-isgre\.at
-i-shemale.com
-i-skelaxin.com
-islacanela.to
-islacristina.to
-isla-fisher\.com
-islantilla.to
-i-soma.net
-isourceindia.com
-isparkl.com
-ispycameltoe.com
-i-texas-hold-?em.(biz|com|info|us)
-itisok\.net
-it-mgz.ir/forfamilies
-itzhongguo.com
-iul-online.de
-i-university-guide.com
-ivoryvaughan.com
-iwebbroker.com
-i-wellbutrin.com
-i-will-find-the-best-mortgage-lead.com
-i-win-bingo.com
-iza.net/
-jack-x.com
-jade.bilder-i.de
-jandia.to
-japan-partner.com
-jbbjcc.com
-jerez.to
-jewelry4navel.com
-jewelry666.com
-jforce.no-ip.org
-jgc-network.co.uk
-jgzhutanfang.com
-jhhkw.com
-jhyujik\.org
-jiadian666.com
-jialicn.com
-jialicn\.com
-jieju-china.com
-jingtong\.com.cn
-jinlong.co.uk
-jinxique.com
-jinyibei.com.cn
-jinyuetuan\.cn
-jipu.com.cn
-jk-999.com
-jnqidong.com
-jobbnu.com
-job-interview-questions-tips.com
-joes\.com
-johnhowesatty.com
-join-2008.com
-joinin-cn.com
-jokeria.de
-jp114\.cn
-js-chenguang.com
-jualvccmurah\.com
-judahskateboards.com
-juliamiles.co.uk
-jungfrauen-sex.com
-junyuan.com.cn
-justasex.com
-juziku.com
-jzhrb.com.cn
-jz-machine\.com
-kamerry.com
-kangdachemical.online.sh.cn
-kangxin.com
-kantorg.h10.ru
-karibubaskets.com
-karma.za.pl
-karmicdebtconsolidation.com
-kcufrecnac.com
-keikoasura.com
-keithandrew.co.uk
-kewler.net
-kewl-links.com
-kickme\.to
-kickmy.com
-ki-disease.com
-kinggimp.org
-kinkyhosting.com
-kiranthakrar.co.uk
-kitehost.com/decoratie
-kktthhyy\.org
-kleinkinder-shop.de
-klingeltoene-handylogos.de.be
-klingeltone-logo.com
-klingelton-logos-mms.de
-klitoris.ca
-kln.com.cn
-kmsenergy.com
-kohost.us
-koihoo.com
-kontaktanzeigen-bild.de.ms
-kontaktlinsen-kaufen.de.ms
-kontaktlinsen-partner.de
-korol.lir.dk
-kostenlose-sexkontakte.org
-kraskidliavas.ru
-kredite-online.de.ms
-kredite-portal.de
-kredite-sofortzusage.de
-kreditkarten-sofort.de.ms
-kredit-ratenkredit-sofortkredit.de
-kuangye.net
-kupibuket.ru
-kyfarmhouse.org
-kyny\.net
-labelcan\.com
-lablog.biz
-lach-ab.de
-lajares.to
-lakesideartonline.com
-lalinea.to
-lambethcouncil.com
-landscape-painting.as.ro
-langsrestaurant.com
-lannygordon.com
-lannythurman.com
-lanreport.com
-lantai.com.cn
-lanucia.to
-laptopy.biz.pl
-laser-eye.co.uk
-laser-eye-centre.co.uk
-laser-eye-correction.co.uk
-lasikclinic.co.uk
-lastminute-blitz.de
-lasvegas-real-estate.net
-las-vegas-real-estate-1.com
-lasvegasrealtor.com
-lasvegastourfinder.com
-latina-sex.ws
-lavalifedating.com
-lavinuela.to
-law-translation\.com
-lcd-cn.com
-leadbanx.com
-leanmusclexreview\.org
-leather168.com
-leatherfamous.com
-lechery-family.com
-left-page.com
-legalblonde.com
-leonabruno.com
-lesbian-girl.us
-lesbichex.com
-leseratten-wunderland.de
-letemgo.de
-letomol\.com
-leveltendesign.com
-lexapro-web.com
-lgt-clan.ru
-liaozhi\.org
-lifedna.com
-life-insurance-advisor.com
-lifeinsurancefinders.com
-lifeslittle-luxuries.co.uk
-lifuchao.com
-light518.com
-likesmature.com
-lindsaylife\.com
-lingerie-guide\.org
-lingerie-land.com
-link-dir.com
-linkedin\.com\.cn
-linkliste-geschenke.de
-linseysworld.com
-linuxwaves.net
-lipitordiscount.biz
-lipitordiscount.com
-list1st.com
-listbanx.com
-livetexasholdem.com
-livetreff.tv
-livevents.de
-livingchina.cn
-lizziemills.com
-lkcx\.com
-l-king.com.cn
-lliippoo\.org
-lloret.to
-lnhbsb\.com
-loaninfotoday.com
-loan-king.com
-loans.de.vu
-loans-4all.com
-loan-superstore.com
-locationcorse.free.fr
-logical-planet.co.uk
-logod-helinad-mangud.com
-logoer-mobil.com
-logos?-(beltonen|downloads|free|klingeltone|max|melodias|mobiel|mobile-repondeurs?|moviles|phones|repondeurs?-mobile|spiele|tones?).com
-logosik.pl
-logos-logos.be
-logos-melodijas-speles.com
-logotyper-mobil.com
-lolita-bbs.name
-longcrossgroup.co.uk
-longslabofjoy.com
-longsuncard.com
-lookforukhotels.com
-lop\.t28\.net
-loraxe.com
-lotye\.schillerstudent\.com
-love.csnec.net
-lowclass.de
-lowcost.us.com
-lowest-rates-mortgages.com
-ltjz2000.com
-lucking.com.cn
-luffassociates.co.uk
-luxus-gourmetartikel.de
-lvrealty.net
-lygweb.com
-lynskey-admiration.org.uk
-lyriclovers.com
-ly-yufeng.com
-lzbiz\.com
-ma-cabinet.com
-machine168.com
-machine88.com
-macinstruct.net
-magus1.net
-mail333.com
-mainentrypoint.com
-mainjob.ru
-majorapplewhite.info
-make-money-investment.info
-malaga-costa-del-sol.to
-mallorca-island.to
-mallorycoatings.co.uk
-man.interhousing.com
-management666.com
-map666\.com
-marriage666.com
-marshallsupersoft.com
-marteq-on.com
-matalascanas.to
-match-me-up.com
-matureacts.com
-mature-big-tits.net
-maturefolk.com
-mature-old-mature.com
-mature-women\.enter-in\.etowns\.org
-maxigenweb.com
-maxxsearch.com
-mba100.com
-mbgeezers.com
-medcenterstore.com
-mediaaustralia.com.au
-medications-4all.com
-medicine-supply.com
-meds-pill.com
-medyep.com
-meetpeopleforsex.com
-mega-spass.com
-melincs.org
-melodias-logos-juegos.com
-melucky.com
-members.fortunecity.com/kennetharmstrong
-members.lycos.co.uk/tramadol
-menexis.com
-mengfuxiang.com
-menguma.co.uk
-menguma.com
-menorca.to
-men-sex.us
-menzyme.com
-meoko.com
-mewqsd.org
-mercedesazcona.com.ar
-mercefina.com
-merditer.com
-merlinworld.com
-mesothelioma-asbestos-help.com
-mesothelioma-health.com
-metroshopperguide.com
-mfdy8\.cn
-mhgzs\.com
-micrasci.com
-microscope-cn.com
-midi\.99caixin\.com
-mietangebote-domain.de
-migraine-relief.com
-mijas.to
-mikebunton.com
-mikewsd.org
-milesscaffolding.co.uk
-millionaire-blogs.com/cosmeticdentistry
-minxinghb.com
-missoula.com/blog/occupation
-misterwolf.net
-mmorpg-headlines.com
-mms.coay.com
-mmsanimati.com
-mneuron.com
-mobilefor.com
--mobile-phones.org
-mobilequicksale.com
-mobile-repondeurs?-logos?.com
-mobilesandringtones.com
-mode-domain.de
-mode-einkaufsbummel.de
-molding-tool.com
-moltobene.ru
-momcare.com.cn
-monarch.com.cn
-moneybg.com
-money-room.com
-montaguefineart.com
-mookyong.com
-mooo.com
-mortage-4all.com
-mortgage-info-center.com
-mortgage-rates-guide.net
-mortgages-links.net
-mortloan.com
-mostika.us
-mother-son-incest-sex.net
-moto-cn.com
-motonet.pl
-motor2008.com
-movie-online123.com
-movies6.com
-mp3download.bz
-mp3plane\.com
-mp3x.biz
-mpeg2pci.com
-mqblog.cn/user1/jipiao
-mqblog.cn/user1/qiufeng
-mqfzj.blog.ccidnet.com
-mrpiercing.com
-mujweb.cz
-mujweb\.cz
-multipurpose-plants.net
-multiservers.com
-multivision.com.hk
-murcia.to
-musica-gratis.biz
-musica-gratis.org
-musica-karaoke.net
-musical88.com
-musica-mp3.biz
-musicamp3.us
-musiccheap.us
-music-downloads-links.com
-musicenergy.com
-muxa.ru
-mxbearings.com
-mxzt.com
-my.nbip.net/homepage/nblulei/
-my-age.net
-myasiahotels.com
-mybestclick.com
-mybooktown.com
-mycv.cn
-mycv.com.cn
-mycv\.com\.cn
-mydatingagency.com
-my-dating-agency.com
-mydear\.biz
-my-discount-cigarettes.com
-myeuropehotels.com
-myfavlinks.de
-myflooring\.org
-mygenericrx.com
-mymistake.biz
-mymixture.com
-my-mom.kicks-ass.net
-myricenet.com
-myrtlejones.com
-myseo.com.cn
-MyServer.org
-my-sex-toys-store.com
-myslimpatch.com
-mystify2001.com
-naar\.be
-nabm(il|li)or.com
-nabpak.org
-naked-gay.us
-naked-pussy.us
-naked-womens-wrestling-league-dvds.com
-naked-womens-wrestling-league-videos.com
-nancyflowerswilson.com
-nanyangcn.net
-narod.ru
-nasty-pages.com
-natel-mobiles.com
-natural-barleygreen.com
-natural-breasts-enhancement.net
-naturalknockers.net
-navinic\.com
-nazari.org
-nbflashlights.com
-nbip.net
-ne1\.net
-nease.net
-nebulax.net
-necsi.com.cn
-neiladams.org.uk
-nemarov.com
-nerja.to
-netbank.cn
-netfirms.com
-netisc\.net
-netizen.org
-netlogo.us
-net-mature.com
-netnetn.com
-netsuns.net
-netsuns\.net
-netsx.org
-net-von-dir.de
-neurogenics.co.uk
-neverback.com
-new-cialis.com
-newfurnishing.com
-newgallery.co.uk
-newideatrade.com
-newsnewsmedia.com
-newxwave.com
-nextdayid.co.uk
-nfl-football-tickets.biz
-nicepages.(biz|net|org)
-nice-pussy.us
-niceshemales.net
-nichehit.com
-nicolepeters.com
-nieruchomosci.biz.pl
-nifty-erotic-story-archive.blogspot.com
-nikechina.net
-nikeproduct.com
-nikeshoesshop.com
-nikeshoeswholesale.org
-nikesupplier.com
-nikkiwilliams.info
-njhma.com
-njlvtong.com
-njningri.com
-njunite.net
-njuyq.com
-nnyykkii\.org
-no-1.com.cn
-no-1.org.cn
-no1pics.com
-no-cavities.com
-nohassle-loans.com
-no-more.dyndns.org
-noni-?(jungbrunnen|top-chance|vitalgetraenk|expert).com
-nonstopsex.org
-noslip-picks.com
-notebook555.com
-no-title.de
-notsure.de
-novacspacetravel.com
-novosanctipetri.to
-nr-challenges.org
-nude-(black|movies?|videos?).us
-nude-teens.name
-nudevol.us
-nuevaandalucia.to
-nutritional-supplements.ws
-nutritionalsupplementstoday.com
-nwwl-dvds.com
-nwwl-videos.com
-nz.com.ua
-office-021\.com
-office-stock\.com
-officialdarajoy.com/wwwboard
-officialdentalplan.com
-officialsatellitetv.com
-offseasonelves.com
-ohamerica.org
-okings.com
-okuk.org
-oldgrannyfucking.com
-oliva.to
-olsenstyle.com
-omega-fatty-acid.com
-omeida.com
-omniagroup\.it
-one-cialis.com
-one-debt-consolidation.com
-onepiecex.net
-one-propecia.com
-oneseo.com
-one-soma.com
-onexone.org
-online-?hgh.com
-online-auction-tricks.com
-online-blackjack-online.com
-online-buy-plavix.com
-online-casino.descom.es
-online-ccc.com
-online-credit-report-online.com
-online-dating-singles-service.com
-online-deals99.com
-on-line-degree.org
-online-dot.com
-online-escort-service.com
-online-flexeril.com
-online-games24x7.com
-online-games24x7.net
-online-games-links.net
-onlinehgh.com
-online-investing-ideas.info
-on-line-kasino-de.com
-online-medications24x7.com
-online-photo-print.com
-onlineshop.us.com
-onlinesmoker.com
-online-texas-?hold-?em.(net|us)
-on-pok.com
-opensorcerer.org
-operazione-trionfo.net
-oraengel.com
-oral-sex-cum.com
-orangeyogi.net
-order-?(claritin|effexor|medicine|naturals).(com|net)
-order-ambien-1.qn.com
-order-cialis-1.qn.com
-order-codeine.deep-ice.com
-order-levitra-1.qn.com
-order-valium-online.deep-ice.com
-orlandodominguez.com
-oro-compro\.com
-orospu.us
-otito.com
-ottawavalleyag.org
-ourhealthylife.net
-our-planet.org
-outoff.de
-ovulation-kit.com
-owaceilings.co.uk
-owns1.com
-ownsthis.com
-oxford-english.com
-oxgm.com
-p105.ezboard.com/bdatingpersonalsadultdating
-p5.org.uk
-p7.org.uk
-p8.org.uk
-p9.org.uk
-pack001.com
-packing-machine.com
-pafu.w4.dns2008.cn
-page.zhongsou.com
-pagerealm.com
-pages4people.com
-paidsurveysforall.com
-pai-gow-keno.com
-paisleydevelopmentassociation.org
-paite.net
-pajara.to
-pandoraaustraliastockists\.com
-pandorajewelryco\.com
-panpanddc.com
-pantandsocks.co.uk
-paperscn.com
-paper-translation\.com
-paris-(movie|naked|nicky|nikki)-hilton.blogspot.com
-paris-and-nicky-hilton-pictures.blogspot.com
-paris-hilton-video-blog.com
-paris-hilton-videos.biz
-parkersexecutivecar.co.uk
-partnersmanager.com
-partnersuche-partnervermittlung.com
-partybingo.com
-passende-klamotten.de
-passion.org.cn
-passwordspussynudity.com
-pastramisandwich.us
-pasuquinio.com
-paybacksh\.com
-payday-loan\.de\.com
-payday-loan-payday.com
-paydayloans-guide\.com
-paysites.info
-pbali\.com
-pc-choices.com
-pcdweb.com
-pcpages.com
-pcpages.com/abyssal
-pcvr.com.cn
-pdxx.com
-peak-e.com
-peepissing.com
-penase\.org
-penelopeschenk.com
-peoplegrad\.gen\.in
-perepug\.ig3\.net
-perfect-dedicated-server.com
-perfect-mortgage-lead-4-u.com
-personalads.us.com
-personal-finance-tips.com
-personalfitnesstrainer\.co\.za
-personal-writer\.com
-personals-online-personals.com
-petlesbians.com
-petroglyphx.com
-pety-viagra.newmail.ru
-pfxb.com
-phantadu.de
-pharmaceicall.com
-phente.m...\.do\.nu
-phentermine
-phentermine.webzdarma.cz
-phone-cards-globe.pushline.com
-phono.co.il
-photobloggy.buzznet.com
-phrensy.org
-pickevents.com
-pickone.org
-picsfreesex.com
-pics--movies.com
-pics-stories.com
-picsteens.com
-pictures-movies.net
-piercing-auswaehlen.de
-piercing-magic.com
-piercingx.com
-pill(-buy|blue|chart|hub|hunt|inc|tip).com
-pimp(fans|hop|hos|space)\.com
-pinkzoo.com
-pinnaclepeakrealty.com
-pj-city.com
-planetluck.com
-plastic168.com
-playandwin777.com
-playandwinit777.net
-play-cash-bingo-online.com
-player-tech.com
-playgay.biz
-playmydvd.com
-play-texas-hold-?em.us
-play-texas-holdem-today.net
-playweb.blogspot.com
-plazaerotica.com
-plcm.com.cn
-plygms.de
-pm.tsinghua.edu.cn
-pocket-pussy\.org
-poizen.info
-pokemonx.biz
-polifoniczne.org
-polott.org
-polyphone.us
-pompini.nu
-Ponderosa
-ponytest.com
-pops.pp.ru
-portedeurope\.org
-post.baidu.com
-posters?-?shop.us
-power-rico.de
-power-tools.rx24.co.uk
-predictive-dialers.org
-pregnancy-guide\.org
-pregnant\.sumale\.net
-pregnant-sex-free.us
-p-reise.de
-pre-machine.com
-prepaid-telephonecards.co.uk
-prepaylegalinsurance.com
-preteen-(models|sex|young).(biz|info|net)
-prettypiste.com
-princeofprussia.org
-printer-cn.com
-prism-lupus.org
-privacy-online.biz
-private-krankenversicherung-uebersicht.com
-private-network.net
-pro-collegefootballbetting.com
-product-paradise.com
-profifachuebersetzungen\.de
-projector-me.com
-promindandbody.com
-prom-prepared.com
-propecia.bravehost.com
-propecia-for-hair-loss.com
-propecia-for-hair-loss.net
-propecia-info.net
-propecia-store.com
-property2u.com
-property2u\.com
-prosearchs.com
-protech.net.cn
-psearch.163.com
-pseudobreccia60.tripod.com.ve
-psites.(biz|net|org|us)
-puertaumbria.to
-puertobanus.to
-puertoreal.to
-punksongslyrics.com
-purchase-ambien.qn.com
-purchase-valium.hotusa.org
-pureteenz.com
-pushline.com
-pussy-(d|cum|movies).(com|us)
-pussy\.the-best\.etowns\.org
-qd-heli.com
-qiangzhe\.cn
-qianyijia.com
-qingchundoua.cn
-qitao.wy8.net
-qj100\.net
-qm0?0[0-9]\.com
-qmnet\.cn
-qmwa\.com
-qqba.com
-qqmei.com
-quangoweb.com
-quickchina.com.cn
-quickdomainnameregistration.com
-quick-drugs.biz
-quick-drugs.com
-quickie-quotes.com
-qumingqiming.com.cn
-qybalancingmachine.com
-qz168.com
-qzkfw.co
-racconti-gay.org
-radsport-artikel.de
-raf-ranking.com
-ragazze-?\w+\.[a-z]{2,}
-rampantrabbitvibrator.co.uk
-randysrealtyreview.com
-ranklink.org
-rape-(fantasy-pics|stories).(biz|com)
-rapid-merchant-account.com
-ratenkredit-center.de
-ratenkredit-shop.de
-raw-pussy.us
-raymondmill.biz
-rbfanz.com
-readytocopy\.com
-real.net.cn
-real-estate-investment-online.info
-realestate-max\.com
-realforexbroker\.com
-reality-sites.com
-reality-xxx.biz
-real-sex.us
-realtickling.com
-real-worldinternational.co.uk
-rebjorn.co.uk
-recycle.myrice.com
-redcentre.org
-redi.tk
-refinance-mortgage-home-equity-loan.com
-reggaeboyzfanz.com
-reggdr.org
-registerxonline.com
-reglament-np.ru
-reisen-domain.de
-relay888.com
-relievepain.org
-relocationmax\.com
-rentalcarsplus.com
-repondeurs-logos-mobile.com
-republika.pl
-restaurant-l.de
-reviewonlinedating.com
-rfhk\.cn
-rfhk\.net
-rfhk\.org
-rfhz\.com
-rfhz\.net
-rfhz\.org
-ricettegolose.com
-richshemales.com
-rincondelavictoria.to
-ringsguide\.org
-ringsignaler-ikon-spel.com
-ringtone-logo-game.com
-ringtoner-logoer-spill.com
-ringtonespy.com
-rittenhouse.ca
-rituo.com
-riyao.com.cn
-roboticmilking.com
-roche.to
-romane-buecher.de
-romeo-ent.com
-ronda.to
-room-ordering.com
-roscoeluna.com
-rota-andalucia.to
-rotek.com.cn
-roulette---online.com
-roulette-w.com
-royaladult.com
-royalfreehost.com/teen/amymiller
-royalprotectionplan\.com
-rr365.net
-rrank.net
-ru(send|idea)\.com
-ru21.to
-ruilong.com.cn
-rx4.mine.nu
-rxbkfw.com
-rx-central.net
-rx-lexapro.biz
-rxpainrelief.net
-rx-phentermine.newmail.ru
-rx-store.com
-rxweightloss.org
-rydoncycles.co.uk
-safetytech.cn
-salcia.co.uk
-salearnerslicense\.co\.za
-sandrabre.de
-sanfernando.to
-sanlucar.to
-sanpedro.to
-santamaria.to
-sarennasworld.com
-satellite.bravehost.com
-satellite-direct-for-you.com
-satellite-network-tv.com
-satellitetv-reviewed.tripod.com
-saveondentalplans.com
-saving-money-hyip.info
-saw-blade.net
-sba\.com\.cn
-sbdforum.com
-sbn\.bz
-sbt-scooter.com
-scent-shopper.com
-schanee.de
-schmuck-domain.de
-scottneiss.net
-scpv.net
-screencn.com
-scuba-guide\.com
-s-cyclobenzaprine.fromru.com
-sd-dq\.com
-sdsanrex.com
-search.online.sh.cn
-search.sohu.com
-search-1.info
-search722.com
-search-engine-optimization-4-us.com
-searchfix.net
-sec66.com
-sec-battery.co.uk
-secureroot.org
-security-result.com
-seitensprung-gratis.com
-selectedsex.com
-selena-u.ru
-selten-angeklickt.de
-sempo-tahoe.com
-sense.com.cn
-sensor168.com
-seodetails\.com
-seov.net
-seoy.com
-servicesmax\.com
-se-traf.com
-seven-card-stud.biz
-seven-card-stud.us
-sevilla-andalucia.to
-sewilla.de
-sex-(4you|bondagenet|lover|photos).org
-sex(ushost|webclub|websites).com
-sex--.*\.com
---sex\.com
-sex4dollar.com
-sexbrides.com
-sexcia.com
-sexe.vc
-sexforfree.webzdarma.cz
-sex-friend.info
-sexglory.com
-sexiestserver.com
-sexingitup.com
-sexjobsonline\.com
-sex-livecam-erotik.net
-sex-mates.info
-sexmuch.com
-sexo9.com
-sex-pic-sex.com
-sexplanets.com
-sex-pussy.us
-sexschlucht.de
-sexshop.tk
-sexshop-sexeshop.com
-sex-toys-next-day.com
-sextoysportal.com
-sexual-shemales.com
-sexual-story.blogspot.com
-sexvoyager.com
-sexy-(ass|babes|lesbian|pussy).us
-sexy-celebrity-photos.com
-sexy-girls.org
-sexy-girls\.org
-sexynudea.com
-sfondi-desktop-gratis.com
-sfondi--gratis.com
-s-fuck.com
-shadowbaneguides.net
-shannon-e.co.uk
-shareint-store.com
-sheffield800.freeserve.co.uk
-shellbitumen.com.cn
-shemalesex.biz
-shemalesland.com
-shemalezhost.com
-shemalki.com
-Shemok
-shengdanuclei.com
-shenman.com
-shfldz\.com
-shfx-bj.com
-shimiana.cn
-shinylights\.org
-shirts-t-shirts.com
-shluhen.lir.dk
-shoesbuynow.com
-shoeswholesale.cn
-shop.tc
-shop24x7.net
-shop263.com
-shop-opyt.com
-shopping-cn.com
-shoppingideen-xxl.de
-shopping-liste.de
-shoppyix.com
-showsontv.com
-sh-shengde.com
-shtestm.com
-shtravel.net
-shunfeng-pioneer.com
-sh-xinping.com
-simplemeds.com
-simpsonowen.co.uk
-sina.com.cn
-sinfree.net
-singtaotor\.com
-sinoart.com.cn
-sino-bee.com
-sinodragon.freewebpage.org
-sinostrategy.com
-sinski.com
-sister8.com
-site\.neogen\.ro/xy[\w]+/files/ps_imagini\.php
-site-mortgage.com
-sitesarchive.com
-site-webarea.com
-sjdd.com.cn
-sjlstp\.com
-sjzyxh.com
-skf-baijia.com
-skidman.com
-ski-resorts-guide.com
-slimmobile.org
-slmj.com
-slng.de
-slotmachinesguide.net
-slot-machines-slots.com
-slots-w.com
-slowdownrelax.com
-slpblogs.com/expenditure
-slutcities.com
-slut-wife-story.blogspot.com
-smartdot.com
-smartonlineshop.com
-smeego.com/gettext
-smerfy.pl
-smutwebsites.com
-sneakysleuth.com
-s-norco.fromru.com
-so18.cn
-socoplan.org
-sofortkredit-tipps.de
-sofort-mitgewinnen.de
-soft.center.prv.pl
-soft-industry.com
-softsenior.com
-softwaredevelopmentindia.com
-software-einkaufsmarkt.de
-software-engine.org
-software-linkliste.de
-softwarematrix\.org
-software-review-center.org
-sohublog.com
-soittoaanet-logot-peli.com
-sol-web.de
-soma-(cheap-soma|solution|web).com
-soma.st
-somaspot.com
-somee.com
-sommerreisen-2004.de
-sonderpreis.de.com
-songshangroup\.com
-sorglos-kredit.de
-sorry\.yi\.org
-sotogrande.to
-sou23.com
-soulfulstencils.com
-source.dyndns.dk
-sowang\.com/translation\.htm
-spaces.msn.com/members/wangluoyingxiao/
-spacige-domains.de
-spannende-spiele.de
-spassmaker.de
-speedy-insurance-quotes.com
-spiele-kostenlose.com
-spiele-planet.com
-sportartikel-auswahl.de
-sportecdigital.com
-sportlich-chic.de
-sports---betting.com
-sports-inter-action.com
-spp-net.de
-spy-patrol.com
-spyware-links.com
-spzd\.com
-ss-cn.com
-s-sites.net
-ssy-web.com
-staffordshires.net
-stars-laser.com
-stationery555.com
-stationfoundation\.org
-statusforsale.de
-steel168.com
-steelstockholder.co.uk
-stellenangebote-checken.de
-stellenangebote-l.de
-stevespoliceequipment.com
-stfc-isc.org
-sting.cc
-stock-cn.com
-stock-power.com
-stolb.net
-stop-depression.com
-stopp-hier.de
-stopthatfilthyhabit.com
-stories-adult.net
-stories--archive.com
-stories-inc.com
-striemline.de
-strivectinsd.com
-stst-cn.com
-studychannels\.com
-stunningsextoys.com
-styrax-benzoin.com
-submit-your-cock\.info
-success-biz-replica.com
-suckingsex\.info
-sudian.com.cn
-suma-eintragen.de
-sumaeintrag-xxl.de
-sunbandits.com
-sunnyby.com
-suonerie-(center|download|loghi-gratis).com
-suonerieloghix.com
-suoneriex.net
-suoyan.com
-super-celebs.com
-super-cialis.com
-surfe-und-staune.de
-susiewildin.com
-sutra-sex.com
-svitonline.com
-swan-storage.com
-sweet-?(horny|hotgirls).com
-sweetapussy\.info
-swiftcashforgold\.com
-swinger-story.blogspot.com
-swing-in-golf.com
-swissking\.net
-switch168.com
-switch88.com
-sxcoal.com
-sydney-harbour.info
-sylphiel.org
-sylviapanda.com
-sysaud.com
-szpromotion.com
-t35.com
-t3n.org
-tabsinc.com
-t-agency.com
-taifudamy\.com
-tailongjixie.com
-take-credit-cards.com
-taliesinfellows.org
-talkie.stce.net
-talktobabes.com
-tamsquare.com
-tang\.la
-tanganyikan-cichlids.co.uk
-tangzhengfa.com
-tapbuster.co.uk
-taremociecall.com
-targetingpain.net
-tarifa.to
-tattoo-entwuerfe.de
-tb-china.com
-tcom-control.co.uk
-tdk-n.com
-teajk\.com
-teardust.net/blog/bulletingboard
-techfeng.com
-teen-(babes|movie|video|xxx).us
-teenblog.org/alerts
-teenblog.org/handicrafts
-teen-boys-fuck-paysite.com
-teen-d.com
-teens7ever.info
-teensluts.org
-teenxxxpix.net
-teflontape.cn
-tejia\.net\.cn
-telechargement-logiciel.com
-telematicsone.com
-telematiksone.co.uk
-tenerife-info.to
-terminator-sales.com
-terra.es/personal
-testersedge.com
-testi.cc
-tests-shop.com
-tette.bz
-tettone.cc
-teulada.to
-texas-hold-em-(4u|555|winner).(com|net)
-texas-holdem-0.com
-texasholdem777.net
-texas-holdem-a.com
-texas-holdem-big.com
-texasholdem-flip-flop.com
-texasholdemking.com
-texas-holdem-now.com
-texasholdem-online.us
-texasholdemsite.net
-texas-hold-em-w.com
-textile88.com
-tgplist.us
-the1930shome.co.uk
-the-bestiality-stories.stories-movies.com
-theblackfoxes.com
-the-boysfirsttime.com
-theceleb.com
-thecraftersgallery.com
-the-date.com
-thefreecellphone.com
-thehadhams.net
-the-horsesex.stories-movies.com
-the-hun-site.com
-the-hun-yellow-page-tgp.com
-themadpiper.net
-the-pill-bottle.com
-the-proxy.com
-thepurplepitch.com
-thepussies\.info
-therosygarden.com
-the-sad-diary-of.mine.nu
-thesoftwaregarage.co.uk
-thespecialweb.com
-thewebbrains.com
-thfh\.com
-thorcarlson.com
-thoth\.cn
-thumbscape.com
-thuriam.com
-tianjinpump\.com
-ticket88.com
-ticket-marktplatz.de
-tickets4events.de
-tiere-futter.de
-tiffany-towers.com
-tikattack.com
-timead.net
-timeguru.org
-timescooter.com
-tips-1a.de
-tire-cn.com
-tits-center.com
-tits-cumshots.net
-tjht.net
-tjht\.net
-tjtools.com
-tjwatch.com
-tl800\.com
-tldyjc.com
-tmrr.com
-tofik.pl
-tokyojoes.info
-toner-cartridge\.mx\.gs
-tontian.com
-tonzh.com
-topaktuelle-tattos.de
-top-cialis.com
-topcities.com
-top-dedicated-servers.com
-top-des-rencontres.com
-top-fioricet.com
-top-internet-blackjack.com
-top-of-best.de
-top-online-slots.com
-top-point.net
-top-result.com.cn
-top-skelaxin.com
-top-soma.com
-top-the-best.de
-toques-logos-jogos.com
-torch.cc
-torredelmar.to
-torremolinos-costa-del-sol.to
-torrox.to
-toshain.com
-tossa.to
-totallyfreecreditreport.org
-total-verspielt.de
-touchweb\.com\.cn
-touchwoodmagazine.org.uk
-toy-china.com
-traceboard\.com.cn
-tracyhickey.com
-tradeba.com
-tradeinvests\.cn
-tradeinvests\.org
-traffic4bidz\.com
-training-one.co.uk
-tran4u.com
-tranny-pic-free.com
-trannysexmovie.com
-transcn.net
-transestore.com
-transpire.de
-traum-pcs.de
-trendsbuilder.com
-treocat.com
-triadindustries.co.uk
-troggen.de
-troie.bz
-trolliges.de
-trucchi-giochi.us
-trueuninstall.com
-ts998\.com
-ts-wood.com
-tt33tt.com
-tt7.org
-ttuuoopp\.org
-tuff-enuff.fnpsites.com
-tumor-cn.com
-tuofaa.cn
-tv-bazzar\.com
-tygef.org
-tyjyllrj.go1.icpcn.com
-tykh\.com\.cn
-tzonline.cn
-ua\-princeton.com
-ufosearch.net
-ukeas.com
-uk-virtual-office-solutions.com
-ultracet-web.com
-ultraseek.us
-unbeatablecellphones.com
-unbeatablemobiles.co.uk
-unbeatablerx.com
-unccd.ch
-underage-pussy.net
-undonet.com
-unexpectedmovement.b4net.lt
-uni-card.ru
-universalplastic.com
-unlockuriphonenow\.com
-unscramble.de
-unterm-rock.us
-uoo.com
-upoisoning.com
-ups123.com
-upsms.de
-urlaubssonne-tanken.de
-usa-birthday-flowers.com
-usa-car-insurance.com
-usa-car-loans.com
-usbitches.com
-us-cash.com
-uscashloan.com
-user1.7host.com
-us-meds.com
-uswebdata.com
-uusky.com
-uusky.net
-uusky.org
-uusky.zj.com
-uusky2.home.sunbo.net
-uvinewine.co.uk
-u-w-m.ru
-v(27|29|3).(net|be)
-vacation-rentals-guide.com
-vaiosony.com
-valentine-gifts.qn.com
-valeofglamorganconservatives.org
-valium-online.1024bit.at
-valium-online.sinfree.net
-venera-agency.com
-veranstaltungs-tickets.de
-vergleich-versicherungsangebote.de
-versicherungsangebote-vergleichen.de
-versicherungsvergleiche-xxl.de
-versteigerungs-festival.de
-verybrowse.com
-verycd.com
-verycheapdentalinsurance.com
-vfrrto.org
-viaggix.com
-viagra\.freespaces\.com
-viapaxton.com
-viasho.com
-video-n.com
-videoportfolios.com
-vietdiary.com/andromedical
-vilentium.de
-vilez\.zenno\.info
-villagesx.com
-villajoyosa.to
-villamara.net
-vindaloosystems\.com
-vip-condom.com
-vitamins-for-each.com
-vivalatinmag.com
-vivlart.com
-vixensisland.com
-vod-solutions.com
-voip99.com
-voip99.net
-voip-guide.org
-voyancegratuite\.com
-vttolldd.org
-vtsae.org
-vttthtgg.org
-waldner-msa.co.uk
-warblog.net
-wasblog.com/ascitis
-washere.de
-watches-sales.com
-watchonetreehill\.org
-waterbeds-dot.com
-waycn.com
-wblogs.com
-wcdma2000.com
-wcgaaa.org
-wchao.net
-wdc\.com\.cn
-wding.com
-we.rx.pp.ru
-weareconfused.org.uk
-wearethechampions.com
-weaver.com.cn
-web.csnec.net
-web3dchina.com
-webanfragen.de
-webblogs.biz
-webcam-erotiche.com
-webcenter.pl
-web-cialis.com
-webcopywizard.net
-w-ebony.com
-webpage-cn.com
-webpark.pl
-webrank.cn
-web-revenue.com
-websamba\.com
-websitedesigningpromotion.com
-website-expansion.com
-websitespace-cn.com
-webzdarma.cz
-wecony.com
-weddings-info.com
-weddings-links.com
-weedns.com
-weighlessrx.com
-weight-loss-central.org
-weight-loss-links.net
-weightlossplace.net
-weitere-stellenangebote.de
-welan\.com
-welding\.mx\.gs
-we-live-together-4u.com
-wellness-getraenk.de
-weroom.com
-westzh.com
-wet-?(4all|pussy|horny).(com|us)
-whitehouse.com
-white-shadow-nasty-story.blogspot.com
-whizzkidsuk.co.uk
-wholesalepocketbike.com
-willcommen.de
-wincmd.ru
-wincrestal.com
-windcomesdown.com
-wine-booking.com
-wine-shop001.com
-wirenorth.com
-wiset-online.com
-witch-watch.com
-witji.com
-witz-net.de
-wizardsoul.com
-wjmgy.com
-wol\.bz
-women-fitness\.org
-workfromhome-homebasedbusiness.com
-worldblognet.com/eurasia
-world-candle.com
-world-cheese.com
-worldmusic.com
-worldsexi.com
-worldwide-(deals|games|holdem).(com|net)
-worldwide.php5.sk
-wotcher.de
-wrrirk\.poes\.net
-wujing-eyes.com
-wuyue.cn
-ww\.\d+\.com
-www.bhcyts.cn
-www.bjicp.com
-www.bungee-international.com
-www.it01.com.cn
-www.lamp-expert.com
-www.richtone.com.cn
-www.sex-portal.us
-www.webcamss.com
-www\.76e\.net
-www\.8z\.cn
-www\.banzhao\.com
-www\.chat-live\.net
-www\.pasca\.info
-\.roth-401k-forum\.com
-www-sesso
-www-webspace.de
-wxals.com
-wxboall.cn
-wxfl.net
-wxwz.fwhost.com
-wxwz.tabrays.com
-x24.com.ru
-x8x.weedns.com
-x911\.net
-xanax.qn.com
-xanax-online.qn.com
-xaper.com
-xazl.net
-xazlkjh.blog.ccidnet.com
-x-baccarat.com
-x-baccarat.us
-x-beat.com
-x-bingo.com
-x-craps.com
-x-craps.us
-xdolar.com
-x-fioricet.com
-xfreehosting.com
-xgsm.org
-xhhj.com.cn
-xianggangjc.com
-xianliming.com
-xianwahl\.com
-xinchen.net.cn
-xin-web.de
-xinyifang.net
-xinyitong\.org
-x-jack.us
-xlboobs.net
-xmtmdart.com
-xnan2.91x.net
-xnan2.blogdriver.com
-xnxxx.com
-x-pictures.net
-x-pictures.org
-xpictx.com
-xprv.com
-xratedcities.com
-xrblog.com/ezetimib
-x-ring-?tones.com
-x-roulette.com
-x-roulette.us
-x-roullete.com
-xs3.com
-xsjby.cn
-x-slots.com
-x-slots.us
-x-stories.org
-xt[\w]+.proboards\d\d\.com
-xtnm.com
-xxshopadult.com
-xxx(chan|seeker|washington).com
-xxx-alt-sex-story.blogspot.com
-xxx-beastiality.com
-xxx-database.com
-xxx-dvd.biz
-xxx-erotic-sex-story.blogspot.com
-xxx-first-time-sex-story.blogspot.com
-xxx-free-erotic-sex-story.blogspot.com
-xxx-gay-sex-story.blogspot.com
-xxx-girls-sex.com
-xxx-password-web.com
-xxx-pussy.us
-xxx-rape.org
-xxx-sex-movies.org
-xxx-sex-story-post.blogspot.com
-xxx-spanking-story.blogspot.com
-xxx-stories.net
-xxx-story.blogspot.com
-xy[\w]+\.blogg.de
-xyu[\w]+\.easyjournal\.com
-xyxy.net
-xz[\w]+\.over-blog\.com
-xz9.com
-yaninediaz.com
-ycc-zipper.com.cn
-ychzn.com
-yculblog.com
-ygci.com
-yihongtai.com
-ying0.com
-yipu.com.cn
-yipu\.com\.cn
-yisounet.com
-yisounet.net
-yl-jx\.com
-ylqx.org
-ymf.name
-yoll.net
-you-date.com
-youll.com.cn
-young\-tender\.info
-young-ass.us
-yourdentalinsuranceonline.com
-yourowncolours.co.uk
-yourserver.com
-your-tattoo.de
-youyipu\.com
-yubatech.com
-yukka.inc.ru
-yunchou.com.cn
-yyhq.com
-z0rz.com
-zahara.to
-zahara-de-la-sierra.to
-zahara-de-los-atunes.to
-zazlibrary.com
-zbbz.com
-zcfounder.com
-zchb.com
-zenno\.info
-zeonline.com.cn
-zfgfz.net
-zgpt.cn
-zgqygl.com
-zgxbw\.cn
-zhiliaotuofa.com
-zhjx-sh.com
-zhkaw.com
-zhongzhou-sh.com
-zhqzw.com
-ziliaowang\.cn
-zipcodedownload.com
-zipcodesmap.com
-zithromax-online.net
-zjww\.com
-znpp.com
-zo.servehttp.com
-zoo(-zone|europe|fil).com
-zoo-?sex-?(pics|motion-videos|pictures)?.(com|biz)
-zoosx.net
-zorpia\.com/xt
-zpics.net
-zt148.com
-zum-bestpreis.de
-zxyzxy.com
-zybxg.net
-zy-image.com
-zzdh.com
-zzgj.net
-
-abouthongkong\.asexblogs\.com/
-abouthongkong\.bloggingmax\.com/
-abouthongkong\.blogslinger\.com/
-abouthongkong\.satublog\.com/
-berko\.com\.au/merry/
-blog\.bachhoacung\.ws/freey/
-blog\.mogway\.com/abouthongkong/
-blog\.myaliyah\.com/\?u=abouthongkong
-blogcharm\.com/huanger/
-blogs\.thesubculture\.com/\?u=abouthongkong
-cancerblog\.com\.au/abouthongkong/
-film4vn\.net/blog/\?w=lieey
-rockstart\.net/blog/\?u=abouthongkong
-smeego\.com/feier/
-tornblog\.com/abouthongkong/
-um\.com\.my/win/
-vfwnjwebcom\.org/abouthongkong/
-we-r-blogs\.com/\?w=drewer
-weblog\.statisticounter\.com/abouthongkong/
-www\.asiannotes\.com/art/
-www\.betterbrain\.com/blog/\?u=abouthongkong
-www\.billionaire-blogs\.com/abouthongkong/
-www\.blarbitration\.com/lelby/
-www\.blog3\.com/\?u=abouthongkong
-www\.blogfreely\.com/abouthongkong/
-www\.blogstuff\.co\.uk/\?u=abouthongkong
-www\.blogtoowoomba\.com/\?w=homuy
-www\.earthtank\.com/diewu/
-www\.elblog\.de/howue/
-www\.freescrapblogs\.com/red/
-www\.fsaalumni\.net/blog/\?u=abouthongkong
-www\.kosova\.ch/yourblog/\?u=abouthongkong
-www\.love2k\.com/weblogs/\?u=abouthongkong
-www\.mattian\.co\.uk/liuhcai/
-www\.nukeblog\.info/\?u=abouthongkong]]
-www\.pandablogs\.com/xiangang
-www\.picturethisblog\.com/\?u=abouthongkong
-www\.sblnet\.co\.uk/sblogger/abouthongkong/
-www\.skaffe\.com/weblog/abouthongkong/
-www\.slickblogs\.com/abouthongkong/
-www\.slpblogs\.com/abouthongkong/
-www\.soccerblogger\.co\.uk/\?w=uowek
-www\.sovereigngracesingles\.com/sgs_blog/\?u=abouthongkong
-www\.spottersblog\.com/tremo/
-www\.spweblog\.com/abouthongkong/
-www\.stitch-studios\.com/weblogs/\?u=abouthongkong
-www\.stu-c\.com/blogs/abouthongkong/
-www\.tatsulok\.com/yuer/
-www\.teenblog\.org/abouthongkong/
-www\.toiyeu\.net/nhatky/\?w=toiyew
-www\.totalvideogames\.com/blog/laner
-www\.vfwmowebcom\.org/nicer/
-www\.weblogone\.com/dry/
-www\.westwoodbapt\.org/blog/abouthongkong/
-www\.worldblognet\.com/abouthongkong/
-www\.ym1\.com/abouthongkong/
-chio92\.com
-onlinepoker\.happyhost\.org
-kolloidales-silber\.at
-sonyy1\.com
-tdk14\.com
-nyteam\.info
-ethock\.info
-pepsi14\.info
-jiayinte\.cn
-moxor\.info
-maxor\.info
-chevy\.ws
-adoption\.ws
-carpetcleaning\.ws
-hrentut\.org
-icwak\.info
-humela\.info
-guoyong\.com
-ziyangwz\.com
-zhanziyang\.com
-ziyangshiwo\.com
-short\-termhealthinsurance\.com
-scooter\-web\.org
-bikesplanet\.org
-aishwaryalife\.com
-jessicaalbalife\.com
-shakiralife\.com
-terapatricklife\.com
-adrianalimapics\.org
-wifiguide\.org
-wifi-planet\.org
-wifi-world\.org
-teainfo\.org
-pizzaguide\.org
-coffee-guide\.us
-chocolateplanet\.org
-girls-xxx-party\.com
-trinitao\.com
-tjshenguang\.com
-liveadulthost\.com
-speedorado\.com
-sexsdreams\.com
-carpassion\.com
-neureich\.de
-v-ringtones\.com
-4vti8\.com
-artsmediamag\.com
-ringtones\.konaxil\.be
-upcoming\.netteen\.net
-cfcsouthpugetsound\.org
-xultin\.info
-tidep\.info
-ythrip\.info
-yston\.info
-xution\.info
-gosle\.info
-tallygotmoves\.com
-sexstar2000\.com
-dante4all\.com
-q7voda\.com
-fetishrred\.spycams777\.com
-discovery\.teenorg\.net
-cosmo02\.net
-(cam|sex|gay|fuck|swingers|adult|dating|erotic|personal|ads|cum|wife-swap)[\w\-_.]*\.blogspot\.com
-irzar\.com
-gokdep\.com
-nittion\.com
-cheapwowgold\.co\.uk
-win\.com\.cn
-wowgoldworld\.com
-starsnak\.biz
-shop-now\.be
-whitewalker\.com
-beatroulette\.atspace\.com
-onlines-slots-game\.atspace\.com
-(friendlysearch|medchoice|freesearches|getmedicineeasy)\.bravehost\.com
-gihore\.info
-soseik\.info
-ithyr\.info
-letreal\.info
-efdmen\.info
-udwryp\.info
-bupyere\.info
-tagmyn\.info
-suogman\.info
-gegbyl\.info
-laww\.info
-plonehostingdemo\.nidelven-it\.no
-wiki\.opennetcf\.org/upload
-sprint\.zope\.it
-ssdcard\.info
-soujipiao\.com
-5ijipiao\.com
-jipiao126\.com
-jipiaoair\.com
-canjipiao\.com
-bjxiongfei\.com
-SaNaLHaCKERLaR\.ORG
-jspit7\.info
-kokoxx\.info
-donte\.info
-lib/exe/fetch.php\?media=
-imhotep\.sphosting\.com
-1-myspace-layout\.blogspot\.com
-dinmo\.cn
-51education\.com
-sispc.com\.cn
-sh-dzgs\.com
-teyi21\.com
-yizhish\.com
-oa586\.com
-watesi\.com
-sh-shenhuang\.com
-guojikuaidi\.com
-lbjq2h\.com
-xingaoweixing\.com
-shyw\.com
-shnakano\.com
-ihtc\.cn
-chonggong\.com
-kkvalve\.com\.cn
-uwb1hhc\.info
-vzh5k87\.info
-mvuxq60z\.info
-bodybillboardz\.com
-blog\.lide\.cz
-teeenp0rn\.org
-creditcarddebt\.neo\.cx
-dhzilnwr\.com
-hntwzokt\.com
-xoyeeuqx\.com
-badcredpersloan\.new\.fr
-securedcreditcard\.neo\.li
-hometown\.aol\.com
-(creditcons|creditreport|freeannualcr1|freecreditro|freecredits|cealis)\.monforum\.com
-fishmls\.com
-localendar\.com/public/
-\.maxblog\.pl
-\.phpbbx\.de
-foroswebgratis\.com
-(cabrini|annotation)\.bravepages\.com
-(asp|impaction|monocled|wriggle|maneating|migrations)\.1sweethost\.com
-(bailee|carrycot|webmasters|markab|homewards)\.dreamstation\.com
-(bohemians|encloses|gravel|verite|tenderfeet|sabers)\.exactpages\.com
-(drained|shuffles|diathermy)\.fcpages\.com
-(headland|similar|muffler|normalise|typologist|buckshots)\.741\.com
-(ctenophore|failles|whistle|mayflies|nestled|eunice)\.angelcities\.com
-(arcady|tulip|undreamt|impair|reamers|hokiest|catnapping)\.greatnow\.com
-(absolutely|bellman|kwangchow|fluctuant|trouping)\.wtcsites\.com
-(wafers|whensoever|prescient|spacious|acadia|toothsome|gasolines)\.envy\.nu
-(smuggles|showboat|ipecacs|skivvying|straying)\.150m\.com
-(suffixed|barbeques|dispersal)\.100freemb\.com
-(killer|grumbles|despoiler|termites)\.kogaryu\.com
-(adversely|militated)\.g0g\.net
-(brunettes|struts)\.o-f\.com
-(reconnect|clownishly)\.00freehost\.com
-(drygoods|fl|liberia)\.9cy\.com
-(membership|retarders|spoonfed|pointedly)\.freewebsitehosting\.com
-(unwiser|innervates|woofed)\.ibnsites\.com
-(goodnight|shortens|brokering)\.freewebpages\.org
-(epaulet|impotency|jewelries)\.1accesshost\.com
-homepage\.mac\.com/(nonreader|cartels|cornflour|docilities|unanswered|feelings1)/
-(imagist|phosphor|hatecrime|landward)\.freecities\.com
-(ainsurance|diflucanmed|mypropecia|1creditrepair)\.proboards104\.com
-(carisoprodol|tadalafil)\.mybbland\.com
-(refinancingmortgage|cheapautoinsurance|autoinsurancequote)\.(forumactif|actifforum)\.com
-fioricetmed\.blogcu\.com
-the-sabotage\.org
-spygrup\.org
-gencnesil\.org
-\.(blogsitemaking|blogginpoint)\.info
-hjlxmosb\.com
-dohzqmod\.com
-dadbhpsu\.com
-supermegapizdetc\.com
-cjbqixzs\.com
-tacmbuqe\.com
-qcprkjgp\.com
-wwcldvob\.com
-nhdwinyg\.com
-pewddohw\.com
-x-uqur\.org
-toyota-corollailf\.blogspot\.com
-corolla-toyota730\.blogspot\.com
-staticstroke\.tr\.cx
-vuhavrva\.com
-nfzwzphv\.com
-ljhasdic\.com
-peoazsog\.com
-szsbqqdb\.com
-kvxkloks\.com
-turkatesi\.net
-megaturks\.com
-rnsgroup\.us
-turkstorm\.org
-(ladyboy|shemale)\.viptop\.org
-nxyvarpv\.com
-shlmsapu\.com
-wjmlwkvk\.com
-www\.umes\.edu/accsupport/ossd/ossdchat/
-jiyxhkdf\.com
-hpdrsykw\.com
-wminyrxj\.com
-gucvfiuh\.com
-osgtpzde\.com
-szexqgix\.com
-susiesbeads\.net
-swliuxue\.com
-mindtouch\.com
-e-parishilton\.com
-\.vg\.edu
-euitaly\.info
-sprzedam\.pl
-wpi\.biz
-galadriel\.nmsu\.edu
-d007\.phpnet\.us
-todosvem\.info
-flowers-shop\.sitesfree\.com
-bcasinos1\.ovp\.pl
-\.greatkozel(site|world)\.info
-hack-e\.com
-eelive\.info
-asi\.0moola\.com
-Valintino.Guxxi
-web\.hit\.bg
-\.sportsinfoitaly\.info
-urlbee\.com
-site3\.info
-bdqt\.org
-\.svt\.pl
-ycaol\.com
-abunimah\.org
-aypp\.info
-poker\.blog\.drecom\.jp
-idisk\.mac\.com/ringtonesforyou
-chaco\.gov\.ar/meccyt/subsecyt/_act1
-forourbano\.gov\.ar/_forodisc/
-tx-bridge\.com
-beijingimpression\.com
-enrichuk\.com
-recphone\.cn
-kcmp\.cn
-pumppump\.cn
-officezx\.com
-vcd-dvd168\.com\.cn
-dinmoseo\.com
-wow-powerleveling-wow\.com
-e-fanyi\.net
-chongshang\.com\.cn
-radfort\.com
-eachost\.com
-bjjly\.net
-sino-(jipiao|liuxue|zufang|lvyou)\.com(\.cn)?
-citylight\.com\.cn
-e4u\.cn
-china-co\.com
-celsnet\.cn
-deqinfy\.com
-mycomb\.com
-dm-(baojie|jipiao)\.cn
-xttg\.cn
-cthb\.com\.cn
-china-byt\.com
-china(yuntong|lipin|yiyao)(\.com|\.net)?\.cn
-jinpack\.com
-xinyuanit\.com
-timeyiqi\.com\.cn
-mendean\.net
-zgpdw\.cn
-5i8811sf\.com
-my-projector\.net
-bjlhj\.cn
-imperial\.edu/maria\.coronel/
-vca\.org
-faculty\.chi\.devry\.edu/ksteinkr/
-encyko\.bee\.pl
-(synthroid|cialis|depakote|zithromax|cipro|aciphex-meds|diflucan-777|lipitor|zocor|norvasc|propecia|imitrex)\.ca\.cx # this is the specific regex
-\.ca\.cx # if noone complains we'll just keep that
-fpoker\.abc\.pl
-ftpoker\.ir\.pl
-ftpoker\.blogjapan\.jp
-wxerqxad\.com
-mnwftplr\.com
-ixgqwyaj\.com
-lglpvgdi\.com
-khmifkyd\.com
-fnabdymv\.com
-maomzyex\.com
-iprnhyeb\.com
-qytkgqkk\.com
-supermeganah\.com
-xnjehmqg\.com
-koufoadi\.com
-palgdhek\.com
-kcqdqjiv\.com
-xxqzcrbx\.com
-ejulbpnr\.com
-dfywxiza\.com
-wjdvppas\.com
-qfoijpym\.com
-usphwxib\.com
-fawhongh\.com
-xjayjaqh\.com
-hmaugptw\.com
-saeoazbj\.com
-pnjugiiu\.com
-xpubccoq\.com
-umbmjyug\.com
-lqbguwrt\.com
-1url\.org/go/1yolui
-uwrejaag\.com
-wjlnjljz\.com
-jacpusnk\.com
-51ticket\.net
-galasale\.com
-bjcdmaker\.com
-sdcy\.com\.cn
-ukpass\.org
-archifashion\.com
-sino-ups\.com
-qwerty\.wblogs\.org/2007/06/
-astroguia\.org/bitacoras/qwerty/2007/06/
-trinilopez\.com/_msgbrd/00002992
-thyoapan\.com
-qfrtsyrp\.com
-uooyqazf\.com
-websearchdir\.net
-firstwebdirect\.org
-webdironline\.org
-nwdirect\.org
-wwbol\.info
-maagrenn?a\.tripod\.com
-(trumtrum|bugaga)\.ifrance\.com
-(bugogo|damdan)\.ibelgique\.com
-(sukonah|tramtram)\.isuisse\.com
-(gurevin|grandan)\.awardspace\.com
-uubol\.info
-rrbol\.info
-iibol\.info
-qqbol\.info
-iibol\.info
-eoajx\.quotaless\.com
-hardcorerapecomics\.tripod\.com
-(qq|pp|yy)adv\.biz
-(dd|gg)coll\.info
-rietdekkersbedrijfscholten\.com
-taylorrain\.newsit\.es
-\.webdirext\.com
-(sh)?chfang\.com
-xianweijin\.com
-strawberrydelights\.com
-whichsideofthefence\.com
-it\.snhu\.edu
-free-online-dating
-sudu\.info
-shcbprint\.net
-toppowerlevel\.net
-mysiteup\.my2gig\.com
-globalceoforum\.com\.cn
-isefc\.com\.cn
-teamflyelectronic\.com
-hzmqzs\.com
-coolingame\.com
-mydofus\.com
-rs2myth\.com
-levelmyth\.com
-ankama\.us
-buy-dofus-kamas\.net
-vulturesknob\.com
-yournetexpert\.hostwq\.net
-fundorro\.net
-normalforce\.com
-sei-mein-bester-freund\.de
-titaniuexport\.kiev\.ua
-loveangelinajolie\.com
-movief\.5gbfree\.com
-ylhz\.net
-grendamix\.com
-89bm\.net
-temaxd\.cn
-gglhctm\.cn
-xgswd\.cn
-ofcpa\.com
-netbai\.net
-power-level\.net
-e489d\.com
-lingollc\.com
-boinbb\.com
-fourw\.jp
-sweepdesign\.jp
-chn-job\.com\.cn
-xfgkj\.com
-houseso\.cn
-beijingxiezilou\.com
-xiezilouxinxi\.com
-kibonbarcode\.com
-xzhfblp\.com
-linuxbj\.com
-pr1ma\.info
-dom\d\.info
-cardz\d\.info
-hom\d\.info
-rossa\d\.info
-svx\d\.info
-bomb\d\.info
-filmes[\w\-_.]*sexo
-filmes[\w\-_.]*gratis
-video[\w\-_.]*sexo
-video[\w\-_.]*gratis
-foto[\w\-_.]*nudo
-seeyo\.info
-suphost\.info
-freehostss\.info
-hostzz\.info
-19mb\.info
-freespase\.info
-host24h\.info
-cdq369\.com
-datangshutong\.com
-jonchn\.com\.cn
-sweepdesign\.jp
-bj5yuehua\.com
-jonchn\.com\.cn
-bjht888\.com
-zgxbzlw\.com
-466tv\.cn
-sixnet\.com\.cn
-99caigang\.cn
-cydjk\.com
-fstzb\.com
-znstudio\.net
-datangshutong\.com
-liaoxinbj\.com
-bjhrj\.cn
-flowervoice\.com
-jonchn\.com\.cn
-iiwezxmkwzht\.com
-miqiatwuypzw\.com
-hjigunxxrqaf\.com
-slondcnixlwj\.com
-bengfa168\.cn
-kaiquan\.com\.cn
-huigao-v\.com
-bgzb\.com
-spvalve\.com
-dltools\.cn
-rosement\.com\.cn
-stone-ebay\.com
-zgxbzlw\.com
-farfly\.com
-e-bjmelody\.cn
-adsmc\.com
-yhht-valve\.com
-qmtyblphlilu\.com
-qewojlupomxg\.com
-zoqecyrqdfhc\.com
-jbhazglyuzml\.com
-bodt\.com\.cnn
-bodt\.com\.cn
-onebedroomfurniture\.com
-69bm\.com
-69bm\.net
-cp788\.com
-1k888\.com
-libfondo\.info
-nimerino\.info
-minutospa\.info
-ihtibel\.info
-akmandel\.info
-168xh\.net
-posui\.net\.cn
-szgwjy\.com
-tcl\.com
-johnsonip\.cn
-szwanyang\.com
-lfhcn\.com
-89bm\.com
-caishen\d*\.cn
-hcplasticmold\.com
-ViewMyLoan\.com
-hotwetred\.info
-uniwuros\.com
-cbyanrbp\.com
-vmwtynhs\.com
-odosuz\.cn
-idakoxic\.cn
-ifom\.info
-omiducer\.cn
-isekecec\.cn
-hzylin\.cn
-vaqyjcqu\.com
-nvzisslp\.com
-jxzgdglq\.com
-wetwetwett\.info
-nudevidz\.info
-nunde4free\.info
-668w\.com
-fregalz\.info
-hothothott\.info
-163\.(com|net)
-ifux\.info
-jzups\.com\.cn
-longre\.com
-wecomesh\.com
-cjh120\.com
-cctv8168\.com
-meter17\.cn
-quntuo\.com
-bjjinshan\.com
-cccstandard\.com
-szlrwl\.cn
-deqinfy\.net
-ebakvqsq\.com
-adklnaum\.com
-gohzmgek\.com
-hypoq\.(org|info)
-cerbaq\.info
-vertyn\.info
-bjyyct\.com
-blt\.net\.cn
-qemlcnwg\.com
-hudwzsfh\.com
-ppyecsia\.com
-impactcrusher\.net\.cn
-hammercrushers\.com
-benconq\.com
-jawcrusher\.net\.cn
-raymondmill\.cn
-zenithcrusher\.com
-cnzenith\.com
-conecrushers\.com\.cn
-impactcrusher\.net\.cn
-beconq\.com
-benconq\.com
-crusher-cn\.com
-zenithcrusher\.com
-lemmings.dontexist\.com
-bjjjjgd\.cn
-mingshengximqm\.com
-shangguanhong\.(com|net)
-zooxtreme\.(com|net|org)
-beastplace\.(com|net|org)
-beastzone\.(com|net|org)
-beast-space\.(com|net|org)
-3vindia\.info
-2kool4u\.net
-22web\.net
-isgreat\.org
-iblogger\.org
-talk4fun\.net
-prophp\.org
-totalh\.com
-xanga\.com
-stonecrusher\.net\.cn
-vone\.net\.cn
-aggregate-plant\.com
-grindingmill\.cn
-huili-cn\.com
-globalchineseedu\.com
-zgxbzlw\.com
-wahlee\.net
-lilyspring\.com
-wetlesbiansx\.com
-wetindians\.net
-sex4uonly\.net
-jxpump\.com
-bfjxkf\.com
-zzdehong\.com
-wet-n-hairy\.net
-pinkshaved\.net
-sweetttits\.com
-jxpump\.com
-uextkhveawym\.com
-ghzbstszrpgo\.com
-qsevvccxnzlb\.com
-ahxxugvpswym\.com
-cce-china\.cn
-cd8545\.com
-travelnursingdirect\.com
-cone-crusher\.org
-chinadrtv\.com
-jsd-coffee\.com
-flolon\.com
-sc818\.com
-seo315\.(net|cn)
-pkseo\.cn
-nabirbsb\.com
-oqholfwb\.com
-wjoupiyw\.com
-yejuntech\.com
-ngvvlxpwuqhh\.com
-opggdydlpwsx\.com
-jrrwpwbungrk\.com
-lmkjshlsejlh\.com
-lovewind\.cn
-jormabridal\.com(\.cn)?
-paddletotheheadwaters\.com
-muzica-mp3\.ro
-movie2b\.com
-(stone|jaw|impact|cone|hammer)[-]*crusher\.(org|com|net|cn)
-pfkf999\.com
-hnpjs\.cn
-pysz\.com\.cn
-dxb\.ha\.cn
-ganbing120\.com\.cn
-forexcentre\.org
-igad\.info
-0516glass\.com
-liuhuaji\.com\.cn
-obsoletecomputermuseum\.org/forums/
-bonahr\.com\.cn
-stevepinto\.com
-touguanshi\.godele\.com
-bobauv\.com
-sangya\.com
-wanbaolong\.cc
-99k\.org
-clanteam\.com
-ztsousou\.com
-azresults\.com
-zxq\.net
-ckcf\.com\.cn
-wuhanbl\.com
-asp100\.cn
-xpcd\.net
-mygold123\.com
-onlinegoldsale\.com
-rhftsb\.com
-yfyc\.cn
-cz-wanjia\.com
-freewebtown\.com
-mix\.org\.cn
-cnlxj\.cn
-56817\.net
-99shijia\.com
-hailianlitong\.com
-zggcw\.net
-bj-hongyun\.com
-chushiji2008\.com
-symlhb\.com
-hndfzx\.(com|cn)
-vpn123\.com
-autovote\.cn
-warnlaser\.com
-google8\.com\.cn
-dlong\.com\.cn
-chinasolutionco\.com
-dy-bb\.com
-daiyun315\.cn
-bj-jbh\.com
-lunwen22\.com
-lun-wen\.com\.cn
-lunwenff\.com
-comegames\.com
-nicewow\.com
-ixtm\.net
-alexasir\.com
-itxb\.net
-seo315\.cn
-hnfbqz\.[xc]n
-oofay\.com
-igset\.com
-eqset\.com
-beijing-trip\.net
-czdipan\.cn
-5-happy\.cn
-sc98\.cn
-keeprun\.com
-hydehr\.com
-jiuyew\.com
-thedentalassistantonline\.com
-lhosting\.info
-allyouneed\.pl
-szlrkj\.com
-idating\.cn
-runescape\.com
-runescape2\.cc
-xneo\.org
-feilin\.ha\.cn
-banj315\.cn
-sdii\.com\.cn
-zzssjx\.com
-ganfushui\.cn
-okfish\.com\.cn
-cddvdvcd\.com
-utbwjawnvdtj\.com
-iyvjvdvpwali\.com
-dfsuyhhwpanb\.com
-iurvgecemloj\.com
-csusa\.org\.au
-nofeehost\.com
-auxt\.info
-italia113\.info
-favorgame\.net
-italaska\.info
-italyhomes\.info
-italiaconsulting\.info
-italypasta\.info
-gyhongwei\.com
-gystjx\.com
-hnydzg\.cn
-e-rhonealpes\.net
-italyresorts\.info
-madeitaly\.info
-workinitaly\.info
-offkey\.info
-digitalnod\.info
-fst-lab\.com
-xilu\.com
-0571ax\.com
-orkeor\.cn
-accurian\.cn
-beon\.ru
-lokerpoker\.com
-imeem\.com
-mycool\.com
-joetheisendds\.com
-digiadv\.co\.jp
-asianjazz\.ciao\.jp
-jkw\.name
-aaaoe\.com
-bjsfyj\.com
-cxlsx\.com
-ming-qing\.com
-gb-kontakt\.net
-gbkontakt\.info
-phpbb4you\.com
-fdtech\.biz
-hostofhosting\.com
-chinaliangzhu\.com
-suntop-fence\.com
-aaqtq\.cn
-hmxlzx\.cn
-ctexm\.com
-mc-subway\.cn
-netberg\.cn
-cannabin\.cn
-mcparking\.cn
-ezysearch\.cn
-mcfreestyle\.cn
-taobao\.com
-tangoing\.info
-ceroline\.info
-zhaoad\.cn
-nanhuachem\.com
-hhpumps*\.(com|cn|net|org)
-wowgold\.hk
-wowgoldvip\.com
-wowgold-sale\.com
-mmogcart\.com
-mygamesale\.com
-powerlevelings\.com
-power-levels\.com
-game-level\.com
-tongdeli\.com
-smt16\.cn
-hnkehai\.com
-gyfzjx\.com
-zzyl\.(com|cn)
-floopityjoop\.com
-tits\.cn
-eduoduo\.com\.cn
-hymarkets\.com
-cango\.com\.cn
-videolucho\.com
-baidu\.com
-9fag\.cn
-9nsk\.cn
-9skf\.cn
-cnnsk\.cn
-fagchina\.cn
-fagweb\.cn
-nsk022\.cn
-nskcn\.com
-nskweb\.cn
-skf022\.cn
-skfweb\.cn
-tjnrzc\.cn
-zcskf\.cn
-zhouchengskf\.cn
-eileenmcgann\.net
-abra[0-9]\.com
-lunwendx\.com
-ghlxj\.com
-hyinvestment\.com
-clife365\.com
-szh168\.cn
-rose-wedding\.cn
-jhstbj\.(com|cn)
-wybb999\.com
-francebfl\.com
-cmpack\.cn
-dabaog\.cn
-hnccqz\.cn
-ultra-gear\.com
-cnzycp\.cn
-hnzxzx\.cn
-cnpjs\.cn
-changw\.com
-t-bond\.com\.cn
-zjghtbf\.cn
-08kaoyan\.net
-netbai\.com
-ontsibvwjyhr\.com
-cevdvcpeomet\.com
-iahucbhvcqbg\.com
-dammagoxpvwx\.com
-tjzdxf\.cn
-shanghairuth\.com
-gupiao258\.(com|cn)
-snownes\.com
-bjbcl\.com
-korack\.cn
-cebiz\.cn
-anesd\.cn
-dianhualy\.com
-digseo\.net
-hzw1\.com
-kpwyxl\.com
-zjyihe\.com
-malatown\.com\.cn
-kmyuda\.com
-xowow\.com
-powerlevelingweb\.com
-1kan\.net\.cn
-howview\.cn
-bczl\.com\.cn
-fangshui99\.com
-bjxsbt\.com\.cn
-chuxinrui\.cn
-slfr\.net
-hyhxsm\.cn
-wang666\.cn
-shbingluo\.com
-keslon\.com
-hpsell\.com\.cn
-chenghechuangye\.cn
-bjyuantuo\.cn
-jnjinli\.com
-flower18\.com\.cn
-dianhualy\.com
-ifcmbj\.com
-xbjk120\.net
-howview\.cn
-egri\.net\.cn
-digseo\.net
-hzst\.net\.cn
-3movievideoclip\.com
-51yd\.com\.cn
-homesoft\.com\.cn
-bjzktd\.com
-dlpy\.cn
-hkfeng\.com
-zhengstar\.com
-99cars\.net
-szrona\.com
-keetouch\.com
-ipcam\.com\.cn
-ope888\.cn
-oktouch\.com
-1king\.com\.cn
-plancool\.com\.cn
-tianguangroups\.com
-beautynet\.cn
-housing-on-line\.com
-xinhai-pd\.com
-bjpbx\.com
-fozhe\.com
-cp2y\.com
-windhorsetour\.com
-buy-runescapegold\.com
-cchello\.com
-lookee\.in
-kotick\.in
-honi-moon\.in
-thsale\.com
-power4game\.com
-stk-interlining\.com
-wowgoldprice\.org
-ceskecelebrity\.com
-bvu\.com\.cn
-fsouber\.com
-allotec\.com
-p-pass\.com
-teamsun\.com\.cn
-pass4sure\.com
-pass4exam\.com
-exam4sure\.com
-certay\.com
-huochepiao168\.cn
-chinabestop\.com
-smartsgarment\.com
-pcqshoes\.com
-bestoplingerie\.com
-china-sexy-lingerie\.com
-fashion-emart\.com
-bestopsolar\.com
-info\.bizhostings\.net
-isk-eve\.com
-quickpass\.org
-shdzbc\.net\.cn
-xltcpl\.cn
-taiad\.com\.cn
-bjpeilian\.net
-wow-*gold.*\.(com|org|net|cn)
-sino-strong\.com\.cn
-vanguardct\.com
-hzzrs\.com
-hfcxhw\.com
-toeic-world\.com\.tw
-toefl-expert\.com\.tw
-gept4u\.com\.tw
-kingcoder\.com\.cn
-ning-wang-fu\.cn
-zzhkjx\.com
-exam100\.org
-76my\.com
-gamezmoney\.com
-86xh\.com
-ab222\.cn
-yn666\.com
-flowerordercentral\.cn
-geocities\.com/hentaioza
-www021\.com\.cn
-chinakaba\.com
-zdzdm\.sqnet\.cn
-szhostar\.com
-pulverizer\.com\.cn
-szyasen\.com
-xkzs\.cn
-tudou56\.com
-xcb120\.cn
-aab-co\.com
-jsps\.cn
-yuanchangsh\.cn
-fen-zi-shai\.cn
-jsqmfg\.cn
-valve-hm\.com
-hu-xi-qi\.cn
-surecan\.com\.cn
-wowpower-leveling\.com
-no1health\.org
-handbagroom\.com
-caxa\.com
-dinmo\.org\.cn
-underwear-wholesaler\.com
-17-china\.cn
-longhainet\.com
-quarry\-plant\.com\.cn
-rock\-crushers\.com\.cn
-brogame\.com
-pan-tibet\.com
-jxsb\.org\.cn
-fzpg\.net\.cn
-xxyd\.org\.cn
-fzfz\.org\.cn
-jmzj999\.com
-xbkf120\.cn
-inaturaldiet\.com
-osthair\.com
-yqyb\.org\.cn
-jjyp\.net\.cn
-lpsp\.net\.cn
-yybj\.net\.cn
-txcp\.net\.cn
-hrdzf\.com
-17ftp\.cn
-ibuy-sell\.com
-itemrate\.com
-mul-t-lock\.com\.cn
-kevincostnerfans\.com
-lavigneavril\.net
-loveparishilton\.net
-lovebritneyspears\.net
-alpacino\.net\.cn
-bradpitt\.net\.cn
-robertdeniro\.net\.cn
-gosuperplayers\.com
-item4sale\.com
-hitop-mould\.com
-dghighcrown\.com
-junxingstone\.com
-adholes\.net
-bibliotecaitata\.com
-chapso\.de
-teamagazine\.com\.hk
-blogbox\.dk
-tunesonic\.com
-blogpager\.com
-casa-lavoro\.net
-chicodeguzman\.net
-designblog\.gr
-hartenergy\.com
-isdev\.odg\.cc
-jshyx1985
-mode2testsite\.com
-mosentenem\.com
-myadulthosting\.net
-nosdivertimos\.com
-seniorsspace\.com
-megasexblog\.com
-blogsdevenezuela\.com
-islablog\.com
-go-cms\.info
-sportsfanstv\.com
-worldswatches\.com
-myblog\.g89\.org
-evsblogs\.com
-blogs\.omanana\.net
-gayteenresources\.org
-blog\.medigo\.pl
-blog\.thai-z\.com
-3xblog\.ro
-jumpblog\.com
-blogs\.slis\.ua\.edu
-zteo\.com
-propertyblogging\.com
-tangotogether\.com
-my\.vipublog\.com
-htchx\.us
-horizonacademyblog\.com
-emeraldnova\.com
-monsterblogs\.net
-losblogs\.net
-blog\.cybercc\.sg
-mormonorgs\.com
-drumblogs\.com
-jshyx2003
-kxy\.cn
-free-download-firefox\.net
-byzxw\.com
-1573\.hk
-tiffanyin\.com
-all4kid\.com
-deppjohnny\.com
-monicabelluccifans\.com
-gamesmd\.com
-implantjapan\.com
-i-denki\.net
-lasik-hikaku\.jp
-naturalk\.jp
-babyrockets\.com
-ocn\.ne\.jp
-w-medicalnet\.com
-sky361\.com
-powerleveling123\.com
-greentec-sound\.com\.cn
-runescapegoldvip\.com
-grasoftseo\.com
-mygamestock\.com
-rsgold-rsgold\.com
-kidmannicole\.com
-googlesoftware\.net
-accountsbay\.com
-fangdaomen\.cc
-hbjinggong\.cn
-mj-net\.jp
-marucollet\.jp
-cashing-view\.com
-century-21\.co\.jp
-dzbc\.org
-baojianwang\.com
-zhangsaohan\.cn
-huoyingrengzhe\.cn
-ouzou\.com\.cn
-trustyelectronic-china\.com
-china01\.cn
-goldcheapest\.com
-itemchannel\.com
-cn-chong\.com
-bjjhj\.com
-2artgallery\.com
-gdqingtian\.com
-tiffanyline\.com
-ggfou\.com
-jxmc\.com\.cn
-donba\.com
-oilpainting109\.com
-cnmolecular-sieve\.com
-bodahg\.com
-5eba\.com
-51zzw\.cn
-thecommercejournal\.com
-da-zhong-ban-chang\.com
-gl-firmenadressen\.(info|net)
-nyzhyq\.com
-veryge\.com
-fm965\.cn
-goleveling\.com
-cnwfyy\.com
-biaori\.com
-hangzhouhunqing\.com
-kwyf\.com\.cn
-g2gmart\.com
-baihelai\.com
-freetestking\.org
-sup-lotro-gold\.com
-warcus\.com
-mini-freegames\.com
-zalasoft\.com
-hollyginger\.com
-sitgame\.com
-jdllj\.com
-shevip\.com\.cn
-bacobolo\.com
-world-womans\.com
-88gk\.cn
-imvub\.com
-gpkoo\.com
-s2789\.com
-yw17\.com
-rfyljx\.com\.cn
-pboy\.com\.cn
-fashioninchina\.net
-electroplating-equipment\.cn
-lxep\.com
-carpet-china\.com\.cn
-jixietg\.cn
-break-day\.com
-games8848\.com
-fesffonpourr\.com
-fmrxfqdmwlbl\.com
-hdwccaggguzm\.com
-pjpxjijenjam\.com
-rjvurgjybnjn\.com
-uynlhrrfljtb\.com
-xljdfoxuceuh\.com
-zdcoxwpzjmhn\.com
-hyperrealty\.com
-mamariano\.us
-www-clubseventeen\.com
-ig2t\.com
-iamgaolijun\.cn
-monternet\.com
-granitecountertops\.com\.cn
-kercap\.com
-cwb120\.com
-gravelline\.cn
-applesupport\.com\.cn
-fcsgame\.com
-just4gold\.com
-goodvk\.com
-selldofus-kamas\.cn
-seo-newline\.com\.cn
-hzhongtai\.cn
-ymiao\.cn
-runescape-items\.org
-gcadressen-db\.net
-bambwood\.com
-jt120\.org\.cn
-thelodger\.net
-osceolanaacp\.org
-chattababy\.com
-touslescommerces\.net
-thepoliticalwasteland\.com
-moshergallery\.com
-membrane-solutions\.com
-abmbzkdszdwj\.com
-fwmqvmirgxya\.com
-mcxnlhviuojw\.com
-ogeworld\.com
-db-adressen\.(info|net)
-bathroomremodeling\.buzznet\.com
-chanelhandbag\.blog\.hr
-chinausbflashdrives\.com
-xyenglish\.com
-xingbingchina\.com
-fuworld\.com
-bjhongda2008\.com
-nowaction\.net
-qmyyw\.com
-yuanqiaowenhua\.com
-bjjh2000\.com
-lawfirst\.com\.cn
-a-polo\.cn
-librich\.com
-kicksarea\.com
-hybenet\.net
-yuanqiaowenhua\.com
-buy-runescape-money-gold\.com
-mesothelioma-uk\.net
-adsclicking\.com
-eastcarpet\.com\.cn
-jdshiyanji\.cn
-pandaphone\.com
-runescape2-money\.org
-wcx88\.cn
-dvd1314\.com
-cenkx\.com
-cnblp\.cn
-davismicro\.com
-fanggead\.com
-karrylady\.cn
-macrown\.com\.cn
-mdcchj\.com\.cn
-newbst\.com
-shoes4days\.com
-yaojian\.com\.cn
-zj-xinhong\.com
-ccok11\.com
-elkf120\.cn
-quhong120\.com
-rfid789\.com
-szchuangjie\.com
-windowregulator\.net
-ydyxl\.com
-adressendb\.net
-gc-datenbanken\.info
-rzqncfvopsdi\.com
-hvnrueyuufhh\.com
-ocrrtustraht\.com
-gxfuiynpudtp\.com
-gprunescape2\.com
-gsyb.com\.cn
-hzsxjx\.cn
-jdaluminum\.com
-jshengfa\.com
-wx-fd\.com
-usfine\.com
-maplestoryer\.com
-gcdatenbanken\.(net|info)
-google\.com/notebook/public
-cnhld\.org
-xykavmjkiisc\.com
-stasppcbybco\.com
-lxkqozwybkue\.com
-jpxgbssdoait\.com
-cilanie\.com
-8bio\.com
-goodpolisher\.com
-watchepay\.com
-airprice\.com
-bonnych\.com
-watchec\.com
-ele-art\.com
-sqsensor\.com
-mabinogi-gold\.org
-rohan-gold\.org
-webprogress-seo\.com
-webprogress-de\.info
-brandtrading\.net
-notebook-batteries\.org
-supply-batteries\.co\.uk
-casininio\.com
-feiyun8\.cn
-pastemark\.com
-storeingame\.com
-ymcmotor\.com\.cn
-97sese-mm.cn
-97sese-xxoo\.cn
-97sese-xxoo\.com\.cn
-dancedressshop\.com
-famousbrandwatch\.com
-jiuqusese-mm\.cn
-jiuqusese-mm\.com\.cn
-rentiyishu9\.com\.cn
-replica031\.com
-thepowerlevel\.com
-bjktwx\.com
-ktwxbj\.com
-nikespaces\.com
-paris-hilton\.wikidot\.com
-cert-world\.com
-weebly\.com
-db-gcadressen\.info
-dbadressen\.com
-rezeptfrei-kaufen\.com
-armee\.roonk\.de
-easysixpack\.de
-agoodic\.com
-ugamegold\.com
-zglxjkw\.com
-ourdtv\.tv
-flowexpo\.com
-supakopi\.com
-ero-xxx-pimiw\.cn
-gloway\.de
-gamelee\.com
-gogoer\.com
-mmorpgtube\.com
-mygamegoods\.com
-player-kill\.com
-srogold\.com
-tbcgold\.com
-tibiacrystal\.com
-rsgold-accounts\.com
-sfs168\.cn
-sfsok\.com
-szsfs\.com
-vgoldzone\.com
-vgsgame\.com
-banchang160\.com
-banjia99\.com
-bjgs01\.cn
-diaoche160\.com
-tuoyun160\.com
-lvhang\.net
-oilpaintingscn\.com
-shbaojing\.com
-wansp\.cn
-yaliuya\.cn
-yayaliu\.cn
-csjqlts\.cn
-crltjqsplts\.cn
-luoliaosp\.cn
-qqmnsplts\.cn
-kaoyao\.net
-goldmine\.by\.ru
-tarkus01\.by\.ru
-newsmaestro
-7vee\.info
-shoeshome\.net
-desiresecrets\.com
-toyline\.net
-sexyfancy\.net
-pleasuretoys\.biz
-jsjgjt\.com
-cuvyr\.com
-air\.io
-ecotect\.com
-azedresearch\.org
-eklmnhost\.com
-il\.mahidol\.ac\.th
-nmxxkmzgonko\.com
-johnmoan1\.freehostia\.com
-warezboard\.seothaithai\.com
-mooselodgeproductions\.com
-tenormedia\.com
-forums\.sellyoursitefast\.com
-forum\.dreamaboutchina\.com
-nikonisti\.ro
-redeseducativaspade\.com
-quantulus\.com
-guineaonline\.com
-globalunitedsavings\.com
-lakechelanalumni\.net
-forum\.fasanga\.com
-edinburgh\.craigslist\.co\.uk
-blogcelular\.net
-i0799\.com
-reagentcafe\.com
-leronimo\.com
-forum\.a2actors\.com
-forum\.money2take\.tk
-commsedu\.co\.uk
-long1985.byethost3\.com
-pictures-point\.nl
-ojodelaplata\.vox\.com
-dragon-tech\.org
-kotsos3\.livepage\.gr
-lifemind\.com
-canvaco\.org
-nightdomination\.altervista\.org
-alhorea\.com
-pardaan\.com
-tinavmurray\.com
-blazn360\.com
-gol\.mainwebsite\.org
-com-health\.com
-genius-entertainment\.com
-lydiadeetz\.vox\.com
-pilipino\.com
-faceroll\.se
-dustie\.com
-edicolantenews\.com
-xbox360achievements\.org
-2dfighter\.com
-Girls-Next-Door
-elephantcarhire\.com
-rushessays?\.com
-bestessays?\.com
-bestdissertations?\.com
-cheappoolproducts\.com
-superiorpapers\.com
-bestessays\.ca
-mightystudents\.com
-term-paper-research\.com
-college-paper\.org
-kamin\.kilu\.de
-kaminscout24\.de
-poker-rooms-review\.org
-all-auto\.ro
-517dv\.com
-casino.?spielen\.biz
-ktmboard\.com
-seospec\.net
-sexocuritiba\.com\.br
-webdesign63\.de
-websearchplanet\.info
-blog\.bitcomet\.com
-dissertationlab\.com
-bestessayhelp\.com
-bookwormlab\.com
-hollandandbarrett\.com
-bestcheapautoinsurance\.com
-profischnell\.com
-getcreditrepairtips4u\.com
-maketodaypayday\.co\.uk
-usfirepits\.com
-cheapautoinsurancekentucky\.com
-automobile-insurance\.com
-carinsuranceonline-\d\d\.com
-4autoinsurancequote\.org
-essay-writer\.org
-essaywritingservices\.org
-iresearchpapers\.com
-domainname\.com\.au
-lifeinsurancequotes\.com\.au
-myfuneralinsurance\.com\.au
-giftbasketsplus\.com
-lifeinsurance\.net\.au
-online-poker-spielen\.biz
-lowinterestcreditcards\.com(\.au)?
-balancetransfercreditcards\.org
-dartsimaging\.com
-searchengineoptimi[zs](ing|ation)(world|australia)\.com(\.au)?
-webair\.com
-aext\.net
-njoyz\.com
-pokerenfrancais\.eu
-momswhothink\.com
-fortunebaby\.com
-blackpenguin\.net
-novatedleasedeals\.com\.au
-labradoodle-puppies-for-sale\.net
-allstartradingpins\.com
-lease-a-seo\.com
-offsidebet\.com
-ukppiclaims\.org
-learners\.in\.th
-orbitfm\.com
-thekoeniggroup\.com
-forexinsider\.co\.uk
-indiangoldrates\.com
-iwanttosellmydiamond\.net
-pacquiaomosley\.co\.cc
-hcg-injections\.org
-hcgdiet\.net
-communaute\.sstic\.org
-prlog\.org
-unlockiphone4\.com
-patioheater[sz]?\.com
-card-approvals\.co\.uk
-hamptonbayceilingfans\.net
-novolinespiele\.de
-novoline24\.eu
-diamondlinks\.net
-lol\.com
-mastersdissertation\.co\.uk
-mortgagecomparison\.com\.au
-i52\.photobucket\.com
-outdoorpropanefirepit\.net
-s3\.hubimg\.com
-antiquegasstoves\.info
-bohaute\.com
-ariplex\.com
-wroughtironpatiofurnituresale\.com
-payday-loans-online\.com\.au
-carinquotes\.com
-carinsurancecomparisonsites\.com
-2wheelmotors\.info
-thegrio\.com
-outdoorfountains\.com
-profi-fachuebersetzung\.de
-uebersetzung-deutsch-englisch\.com
-xn--bersetzungsbro-frankfurt-uscm\.de
-shindiristudio\.com
-emailmarketingsoftwares\.org
-signalsforex\.org
-smebs\.blog\.com
-sme\.in
-essayhelppros\.co\.uk
-headlicetreatmentworld\.com
-logodesignmaestro\.com
-customessayhelp\.com
-pffchat\.com
-book-of-ra-spielen\.com
-dissertation-help\.co\.uk
-termpapers-guide\.com
-logodesignconsultant\.com
-mmcashloans\.co\.uk
-mmpaydayloans\.co\.uk
-my\.apexfitness\.com
-mystore\.24hourfitness\.com
-mycaal\.com
-mmtaxlawyer\.com
-mmtaxrelief\.com
-mmtaxhelp\.com
-mmtaxdebt\.com
-mmtaxattorney\.com
-waterproofmp3\.info
-juegosgratis\.de
-motorcyclegames\.us
-angry-birds-online\.com
-snipsly\.com
-scotties\.co\.nz
-nzhirecartoday\.info
-videofishingknots\.com
-cheapaudiobooks\.org
-bernardtips\.com
-buyphone4withoutcontract\.com
-auto-ready\.com
-lacapila\.com
-hotelsinamsterdam-netherlands\.com
-refrigeration-repair-tips\.com
-pandoracharm-uk\.com
-swissking\.net
-watchonetreehill\.org
-www-e-bad-credit-credit-cards\.com
-surgerythailand\.com
-pandoracharmsuksale\.net
-thomassabostockists\.com
-braceletsuk\.com
-kanayorecommends\.com
-goosejakkedk\.com
-kontaktlinserna\.com
-prestigeweddinginvitations\.com
-sum-security\.com
-pandoraaustraliastockists\.com
-angrybirdshub\.com
-onlinepokered\.com
-downloadfullgamesfree\.net
-hotwirelesscoupons\.com
-purecigs\.com
-trivology\.com
-biocig\.ro
-promocoder\.ne
-linkyoursite\.net
-geekzu\.com
-perfectclaims\.co\.uk
-tagesgeldzinsen\.tv
-bluegravityhosting\.com
-mywikibiz\.com
-sell-junkcars\.com
-jaycomm\.com\.au
-jualvccmurah\.com
-fashionreplicabags\.asia
-purifiedlife\.com
-carinsurancecomparisonshelp\.com
-faresoldisuinternet\.com
-itshumour\.blogspot\.com
-thefunnyquotessayings\.com
-coachoutletny\.com
-community\.remedygames\.com
-forums\.immigration\.com
-forums\.toucharcade\.com
-forum\.bbpixel\.com
-juristischer-uebersetzer\.profis\.info
-uebersetzung-deutsch-englisch\.4kp\.de
-uebersetzer-englisch-niederlaendisch\.at\.cr
-simultandolmetscher\.9gb\.de
-sprachenfokus\.eo3\.de
-open-mic\.tv
-missoldppi\.co
-texturedroots\.com
-ofen-nrw\.de
-personalinjuryclaimsadvice\.com
-coffeemakersreviewed\.net
-isabelmarantnlsneakers\.com
-raspberryketonepurenow\.com
-priorityappliances\.net
-vitrier-rueil-malmaison\.fr
-primavakantie\.nl
-miss-link\.net
-kontopoulos\.net
-bhgalleries\.com
-repairpartstock\.com
-ashlagbaroch\.org
-
-## ===========================================================================================
-## Please keep this comment at the end. Please note:
-## MoinMoin >=1.6 has TextCHAs for spam prevention and they are currently very effective (no
-## spam any more since switching to 1.6). So if you still suffer from spam, consider updating.
-## ===========================================================================================
diff --git a/Benchmarking.mdwn b/Benchmarking.mdwn
new file mode 100644
index 0000000..fdf8c9a
--- /dev/null
+++ b/Benchmarking.mdwn
@@ -0,0 +1,121 @@
+
+
+## Blender
+
+The blender developers wrote a script for benchmarking their app. Download [[benchmark.blend|http://peach.blender.org/wp-content/uploads/movies/benchmark.blend]]. Run blender with ` blender ~/benchmark.blend `, then press alt-P.
+
+
+## Nexuiz
+
+
+[[!format txt """
+nexuiz-glx -benchmark demos/demo1 -nosound 2>&1 | egrep -e '[0-9]+ frames'
+"""]]
+Or, you can open the console by pressing '`' (or shift + escape) and enter:
+[[!format txt """
+timedemo demos/demo1.dem
+"""]]
+Available demos: demo1-5, bench1, piece-o-cake.
+
+If you want to run demos in a loop, run `nexuiz-glx -nosound` and enter in console:
+[[!format txt """
+startdemos demos/demo1 demos/demo2
+demos
+"""]]
+
+## Xonotic
+
+
+[[!format txt """
+xonotic-glx -benchmark demos/the-big-keybench 2>&1 | egrep -e '[0-9]+ frames'
+"""]]
+
+## OpenArena
+
+anholt recorded a timedemo for use. The developers may include a canonical timedemo in a future release.
+
+Place [[anholt.cfg|http://people.freedesktop.org/~airlied/scratch/anholt.cfg]] in `~/.openarena/baseoa/`
+
+Place [[anholt.dm_68|anholt.dm_68]] in `~/.openarena/baseoa/demos`
+
+Run openarena using:
+[[!format txt """
+openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
+"""]]
+
+## Quake3 Demo
+
+Install Quake 3 Demo
+[[!format txt """
+wget ftp://ftp.idsoftware.com/idstuff/quake3/linux/linuxq3ademo-1.11-6.x86.gz.sh
+chmod a+x linuxq3ademo-1.11-6.x86.gz.sh
+./linuxq3ademo-1.11-6.x86.gz.sh -target ~/q3
+cd ~/q3
+cp bin/x86/glibc-2.0/q3demo .
+./q3demo
+"""]]
+The timedemo we use is DEMO001. Place the following script in `~/.q3a/demoq3/demo.cfg`
+[[!format txt """
+timedemo 1
+set demodone "quit"
+set demoloop1 "demo DEMO001; set nextdemo vstr demodone"
+vstr demoloop1
+"""]]
+Run Quake3 Demo using:
+[[!format txt """
+cd /q3 && ./q3demo +exec demo 2>&1 | egrep -e '[0-9]+ frames'
+"""]]
+
+## Quake3
+
+The timedemo we use is demofour. Place the following script in `~/.q3a/baseq3/demofour.cfg`:
+[[!format txt """
+timedemo 1
+set demodone "quit"
+set demoloop1 "demo four; set nextdemo vstr demodone"
+vstr demoloop1
+"""]]
+Run quake3 using:
+[[!format txt """
+cd /usr/games/quake3 && ./quake3.x86 +exec demofour 2>&1 | egrep -e '[0-9]+ frames'
+"""]]
+
+## Enemy Territory
+
+The timedemo we use is "Radar", located at [[http://www.3dcenter.org/downloads/enemy-territory-radar.php|http://www.3dcenter.org/downloads/enemy-territory-radar.php]]. Place the demo in `~/.etwolf/etmain/demos`.
+
+Place the following script in `~/.etwolf/etmain/radar.cfg`
+[[!format txt """
+timedemo 1
+set demodone "quit"
+set demoloop1 "demo radar; set nextdemo vstr demodone"
+vstr demoloop1
+"""]]
+Run et using:
+[[!format txt """
+et +exec radar 2>&1 | egrep -e '[0-9]+ frames'
+"""]]
+To show fps at runtime, hit '~' and type:
+[[!format txt """
+/cg_drawfps 1
+"""]]
+
+## Doom3 (not the demo)
+
+Go to the console and type
+[[!format txt """
+timedemo demo001 usecache
+"""]]
+
+## UT2004
+
+Set [[MinDesiredFramerate|MinDesiredFramerate]] to 0 in your UT2004.ini in `~/.ut2004/System/UT2004.ini`. You probably also want to set `UseVBO=True` if your driver supports VBOs (UT doesn't automatically set this if the extension is exposed, for some reason).
+
+Then, start a benchmark botmatch with:
+[[!format txt """
+ut2004 "br-bridgeoffate?spectatoronly=1?numbots=8?quickstart=1?attractcam=1" -benchmark -seconds=60 -nosound
+"""]]
+The framerate is appended to `~/.ut2004/Benchmark/benchmark.log`:
+[[!format txt """
+tail -n 1 ~/.ut2004/Benchmark/benchmark.log | awk '{print $5}'
+"""]] \ No newline at end of file
diff --git a/Benchmarking.moin b/Benchmarking.moin
deleted file mode 100644
index 4e640dc..0000000
--- a/Benchmarking.moin
+++ /dev/null
@@ -1,117 +0,0 @@
-== Blender ==
-The blender developers wrote a script for benchmarking their app. Download [[http://peach.blender.org/wp-content/uploads/movies/benchmark.blend|benchmark.blend]]. Run blender with
-{{{ blender ~/benchmark.blend }}}, then press alt-P.
-
-== Nexuiz ==
-{{{
-nexuiz-glx -benchmark demos/demo1 -nosound 2>&1 | egrep -e '[0-9]+ frames'
-}}}
-Or, you can open the console by pressing '`' (or shift + escape) and enter:
-{{{
-timedemo demos/demo1.dem
-}}}
-Available demos: demo1-5, bench1, piece-o-cake.
-
-If you want to run demos in a loop, run {{{nexuiz-glx -nosound}}} and enter in console:
-{{{
-startdemos demos/demo1 demos/demo2
-demos
-}}}
-
-== Xonotic ==
-{{{
-xonotic-glx -benchmark demos/the-big-keybench 2>&1 | egrep -e '[0-9]+ frames'
-}}}
-
-== OpenArena ==
-anholt recorded a timedemo for use. The developers may include a canonical timedemo in a future release.
-
-Place [[http://people.freedesktop.org/~airlied/scratch/anholt.cfg|anholt.cfg]] in {{{~/.openarena/baseoa/}}}
-
-Place [[attachment:anholt.dm_68]] in {{{~/.openarena/baseoa/demos}}}
-
-
-
-Run openarena using:
-{{{
-openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
-}}}
-
-== Quake3 Demo ==
-Install Quake 3 Demo
-{{{
-wget ftp://ftp.idsoftware.com/idstuff/quake3/linux/linuxq3ademo-1.11-6.x86.gz.sh
-chmod a+x linuxq3ademo-1.11-6.x86.gz.sh
-./linuxq3ademo-1.11-6.x86.gz.sh -target ~/q3
-cd ~/q3
-cp bin/x86/glibc-2.0/q3demo .
-./q3demo
-}}}
-
-The timedemo we use is DEMO001. Place the following script in {{{~/.q3a/demoq3/demo.cfg}}}
-{{{
-timedemo 1
-set demodone "quit"
-set demoloop1 "demo DEMO001; set nextdemo vstr demodone"
-vstr demoloop1
-}}}
-
-Run Quake3 Demo using:
-{{{
-cd /q3 && ./q3demo +exec demo 2>&1 | egrep -e '[0-9]+ frames'
-}}}
-
-== Quake3 ==
-The timedemo we use is demofour. Place the following script in {{{~/.q3a/baseq3/demofour.cfg}}}:
-{{{
-timedemo 1
-set demodone "quit"
-set demoloop1 "demo four; set nextdemo vstr demodone"
-vstr demoloop1
-}}}
-
-Run quake3 using:
-{{{
-cd /usr/games/quake3 && ./quake3.x86 +exec demofour 2>&1 | egrep -e '[0-9]+ frames'
-}}}
-
-== Enemy Territory ==
-
-The timedemo we use is "Radar", located at [[http://www.3dcenter.org/downloads/enemy-territory-radar.php]]. Place the demo in {{{~/.etwolf/etmain/demos}}}.
-
-Place the following script in {{{~/.etwolf/etmain/radar.cfg}}}
-{{{
-timedemo 1
-set demodone "quit"
-set demoloop1 "demo radar; set nextdemo vstr demodone"
-vstr demoloop1
-}}}
-
-Run et using:
-{{{
-et +exec radar 2>&1 | egrep -e '[0-9]+ frames'
-}}}
-
-To show fps at runtime, hit '~' and type:
-{{{
-/cg_drawfps 1
-}}}
-
-== Doom3 (not the demo) ==
-Go to the console and type
-{{{
-timedemo demo001 usecache
-}}}
-
-== UT2004 ==
-Set MinDesiredFramerate to 0 in your UT2004.ini in {{{~/.ut2004/System/UT2004.ini}}}. You probably also want to set {{{UseVBO=True}}} if your driver supports VBOs (UT doesn't automatically set this if the extension is exposed, for some reason).
-
-Then, start a benchmark botmatch with:
-{{{
-ut2004 "br-bridgeoffate?spectatoronly=1?numbots=8?quickstart=1?attractcam=1" -benchmark -seconds=60 -nosound
-}}}
-
-The framerate is appended to {{{~/.ut2004/Benchmark/benchmark.log}}}:
-{{{
-tail -n 1 ~/.ut2004/Benchmark/benchmark.log | awk '{print $5}'
-}}}
diff --git a/BinaryCompatability.mdwn b/BinaryCompatability.mdwn
new file mode 100644
index 0000000..25c4dcf
--- /dev/null
+++ b/BinaryCompatability.mdwn
@@ -0,0 +1,108 @@
+
+
+## Binary compatibility
+
+This section is about the binary compatibility within the several parts that make a DRI driver.
+
+
+### What does binary compatibility means?
+
+It means that that driver binaries made on previous releases should work with newer versions.
+
+
+### Why is it so important?
+
+To avoid potential havoc. For example:
+
+ * If a user installs that latest version of XFree86 -- they don't always know they need a new kernel module too -- and end up running with the older ones.
+ * A vendor has intellectual property they don't want to release. Binary only components can be released, but they will need to support many different flavors of release.
+ * To support driver suite binary releases created by DRI development team.
+
+### Binary compatibility in practice.
+
+Proper use of individual versioning components is important. The version number is comprised of three fields separated by dots ".". The first field is the major number, the second the minor number and the third is the patch level.
+
+Generally, the service provider sets the version number, and the initial revision is 1.0.0.
+
+The service user checks the versioning with logic like:
+
+ * [[!format txt """
+if (major_number != major_expected || minor_number < minor_expected) {
+ Report Incompatibility
+ Return Failure
+}
+"""]]
+If the interface between service provider and service user does not change, then the patch level is the only number that needs to be incremented in order to reflect internal bug fixes and/or updates.
+
+When interface changes are made, care should be taken to preserve the ability for the new service provider to still work with older service users. Incrementing the minor revision number will account for this type of interface change. This is the backwards compatibility the we must strive for.
+
+In the event compatibility must be destroyed, incrementing the major version number will be required. This option is highly discouraged.
+
+The following sections outline a list of service providers, and which components utilize these sections.
+
+
+#### Of the Device Specific Kernel DRM Driver...
+
+We have to maintain one direction of compatibility in order to stay in the Linux kernel release. This can be accomplished by:
+
+ * semantic change should create a new ioctl and leave support for the old semantics in the DRM module as well
+ * bumping the minor revision number to give a mechanism to know if the new semantics were available
+**Note:** Check for different versions and fail gracefully is not a viable scenario according to Linus.
+
+**Note:** Even when we ignore this and break compatibility completely -- we have to use versioning properly or we don't even get warnings and disabling. We get **crashes**!!!
+
+Versioning set by (service provider):
+
+ * Kernel DRM Driver (`programs/Xserver/hw/xfree86/os-support/shared/drm/kernel/<driver>.h`)
+Versioning checked by (service user):
+
+ * 2D Driver (`xc/programs/Xserver/hw/xfree86/drivers/<driver>/<driver>_dri.c`)
+ * 3D Driver (`xc/lib/GL/mesa/src/drv/<driver>/<driver>_screen.c`)
+
+#### In the SAREA...
+
+This is not a service provider by itself, rather it's a communication mechanism used by service providers. The versioning of the service provider should reflect any changes to the SAREA. Additions to the end would typically result in a backwards compatible minor number bump. Removal of fields would result in an incompatible major number bump, and are highly discouraged.
+
+
+#### Of the 2D Driver...
+
+These are less likely to get out of sync as the DRM module -- but it's still possible. Again, having good revision checking can save a lot of headaches later. If the versioning isn't accounted for we get hangs and crashes with mismatches.
+
+We need to account for older versions, but not necessarily fully support -- we could fail gracefully --, although a driver suite supporter could decide to support older versions of one module or the other -- at their options. For example, let's say a hardware vendor released a binary DDX module for a special video out mode, then it would be nice if the 3D open source component worked with that module for as many versions as the initial interface allowed. So, even though we did many updates and releases, the old closed-source binary still worked.
+
+Versioning set by (service provider):
+
+ * 2D Driver (`programs/Xserver/hw/xfree86/drivers/<driver>/<driver>_dri.c`)
+Versioning checked by:
+
+ * 3D Driver (`lib/GL/mesa/src/drv/<driver>/<driver>_screen.c`)
+
+#### Of the Device Independent DRM Library...
+
+Unlike the individual device dependent components in the kernel, this versioning reflects the overall DRM Library API supported by the `libdrm.a` component. A few device extensions were added to this API, and have since been converted to use the generic _drmCommand_ mechanism. All new extensions should exclusively use drmCommand. The older existing device extensions are still available strictly for backwards compatibility.
+
+The 3D Driver does not check this because this module is staticly linked, and consequently is always the matching version.
+
+Versioning set by (service provider):
+
+ * DRM Library (`programs/Xserver/hw/xfree86/os-support/<os>/drm/xf86drm.c`)
+Versioning checked by:
+
+ * 2D Driver (`programs/Xserver/hw/xfree86/drivers/<driver>/<driver>_dri.c`)
+
+#### Of the DRI Server Extension...
+
+This reflects the version of the DRI X11 protocol extension.
+
+Versioning set by (service provider):
+
+ * DRI Extension Module (`programs/Xserver/GL/dri/dri.c`)
+Versioning checked by:
+
+ * 3D Driver (`lib/GL/mesa/src/drv/<driver>/<driver>_screen.c`)
+
+#### Of the 3D Driver...
+
+The 3D driver is used by the libGL library. Versioning does not exist for this interface, yet. However, great care should be taken to not change the interface between the libGL library and the 3D drivers.
+
+-- [[JensOwen|JensOwen]]
diff --git a/BinaryCompatability.moin b/BinaryCompatability.moin
deleted file mode 100644
index 54562db..0000000
--- a/BinaryCompatability.moin
+++ /dev/null
@@ -1,147 +0,0 @@
-== Binary compatibility ==
-
-This section is about the binary compatibility within the several parts that make a DRI driver.
-
-=== What does binary compatibility means? ===
-
-It means that that driver binaries made on previous releases should work with newer versions.
-
-=== Why is it so important? ===
-
-To avoid potential havoc. For example:
-
- * If a user installs that latest version of XFree86 -- they don't always know they need a new kernel module too -- and end up running with the older ones.
-
- * A vendor has intellectual property they don't want to release. Binary only components can be released, but they will need to support many different flavors of release.
-
- * To support driver suite binary releases created by DRI development team.
-
-=== Binary compatibility in practice. ===
-
-Proper use of individual versioning components is important. The version number
-is comprised of three fields separated by dots ".". The first field is the
-major number, the second the minor number and the third is the patch level.
-
-Generally, the service provider sets the version number, and the initial
-revision is 1.0.0.
-
-The service user checks the versioning with logic like:
-
- {{{
-if (major_number != major_expected || minor_number < minor_expected) {
- Report Incompatibility
- Return Failure
-}
-}}}
-
-If the interface between service provider and service user does not change,
-then the patch level is the only number that needs to be incremented in order
-to reflect internal bug fixes and/or updates.
-
-When interface changes are made, care should be taken to preserve the ability
-for the new service provider to still work with older service users.
-Incrementing the minor revision number will account for this type of interface
-change. This is the backwards compatibility the we must strive for.
-
-In the event compatibility must be destroyed, incrementing the major version
-number will be required. This option is highly discouraged.
-
-The following sections outline a list of service providers, and which
-components utilize these sections.
-
-==== Of the Device Specific Kernel DRM Driver... ====
-
-We have to maintain one direction of compatibility in order to stay in the
-Linux kernel release. This can be accomplished by:
-
- * semantic change should create a new ioctl and leave support for the old semantics in the DRM module as well
-
- * bumping the minor revision number to give a mechanism to know if the new semantics were available
-
-'''Note:''' Check for different versions and fail gracefully is not a viable scenario according to Linus.
-
-'''Note:''' Even when we ignore this and break compatibility completely -- we
-have to use versioning properly or we don't even get warnings and disabling. We
-get '''crashes'''!!!
-
-Versioning set by (service provider):
-
- * Kernel DRM Driver (`programs/Xserver/hw/xfree86/os-support/shared/drm/kernel/<driver>.h`)
-
-Versioning checked by (service user):
-
- * 2D Driver (`xc/programs/Xserver/hw/xfree86/drivers/<driver>/<driver>_dri.c`)
-
- * 3D Driver (`xc/lib/GL/mesa/src/drv/<driver>/<driver>_screen.c`)
-
-==== In the SAREA... ====
-
-This is not a service provider by itself, rather it's a communication mechanism
-used by service providers. The versioning of the service provider should
-reflect any changes to the SAREA. Additions to the end would typically result
-in a backwards compatible minor number bump. Removal of fields would result in
-an incompatible major number bump, and are highly discouraged.
-
-==== Of the 2D Driver... ====
-
-These are less likely to get out of sync as the DRM module -- but it's still
-possible. Again, having good revision checking can save a lot of headaches
-later. If the versioning isn't accounted for we get hangs and crashes with
-mismatches.
-
-We need to account for older versions, but not necessarily fully support -- we
-could fail gracefully --, although a driver suite supporter could decide to
-support older versions of one module or the other -- at their options. For
-example, let's say a hardware vendor released a binary DDX module for a special
-video out mode, then it would be nice if the 3D open source component worked
-with that module for as many versions as the initial interface allowed. So,
-even though we did many updates and releases, the old closed-source binary
-still worked.
-
-Versioning set by (service provider):
-
- * 2D Driver (`programs/Xserver/hw/xfree86/drivers/<driver>/<driver>_dri.c`)
-
-Versioning checked by:
-
- * 3D Driver (`lib/GL/mesa/src/drv/<driver>/<driver>_screen.c`)
-
-==== Of the Device Independent DRM Library... ====
-
-Unlike the individual device dependent components in the kernel, this
-versioning reflects the overall DRM Library API supported by the `libdrm.a`
-component. A few device extensions were added to this API, and have since been
-converted to use the generic ''drmCommand'' mechanism. All new extensions should
-exclusively use drmCommand. The older existing device extensions are still
-available strictly for backwards compatibility.
-
-The 3D Driver does not check this because this module is staticly linked, and
-consequently is always the matching version.
-
-Versioning set by (service provider):
-
- * DRM Library (`programs/Xserver/hw/xfree86/os-support/<os>/drm/xf86drm.c`)
-
-Versioning checked by:
-
- * 2D Driver (`programs/Xserver/hw/xfree86/drivers/<driver>/<driver>_dri.c`)
-
-==== Of the DRI Server Extension... ====
-
-This reflects the version of the DRI X11 protocol extension.
-
-Versioning set by (service provider):
-
- * DRI Extension Module (`programs/Xserver/GL/dri/dri.c`)
-
-Versioning checked by:
-
- * 3D Driver (`lib/GL/mesa/src/drv/<driver>/<driver>_screen.c`)
-
-==== Of the 3D Driver... ====
-
-The 3D driver is used by the libGL library. Versioning does not exist
-for this interface, yet. However, great care should be taken to not change the
-interface between the libGL library and the 3D drivers.
-
--- JensOwen
diff --git a/BrianPaul.mdwn b/BrianPaul.mdwn
new file mode 100644
index 0000000..13e30d4
--- /dev/null
+++ b/BrianPaul.mdwn
@@ -0,0 +1,19 @@
+
+
+## Brian Paul
+
+[[!img http://www.tungstengraphics.com/photos/brian.jpg]
+Email
+: brianp at tungstengraphics dot com
+
+Interests
+:
+ * Mesa
+ * Chromium
+
+
+
+
+---
+
+ [[CategoryHomepage|CategoryHomepage]]
diff --git a/BrianPaul.moin b/BrianPaul.moin
deleted file mode 100644
index 87f8a7e..0000000
--- a/BrianPaul.moin
+++ /dev/null
@@ -1,12 +0,0 @@
-== Brian Paul ==
-
-{{http://www.tungstengraphics.com/photos/brian.jpg}}
-
- Email:: brianp at tungstengraphics dot com
-
- Interests::
- * Mesa
- * Chromium
-
-----
-CategoryHomepage
diff --git a/BugZilla.mdwn b/BugZilla.mdwn
new file mode 100644
index 0000000..38dd7e6
--- /dev/null
+++ b/BugZilla.mdwn
@@ -0,0 +1,6 @@
+
+BugZilla is a commonly used bug report management system.
+
+DRI and Mesa bugs should be submitted at [[freedesktop.org's Bugzilla|http://bugs.freedesktop.org/]]. Bug reports submitted in this fashion will be automatically forwarded to the dri-devel mailing list. Please submit all new bugs here.
+
+There are also older bug databases for DRI at [[xfree86.org|http://bugs.xfree86.org/]] and [[sourceforge.net|http://sourceforge.net/tracker/?atid=100387&group_id=387&func=browse]], but these are deprecated, and should not be used for submitting new bugs.
diff --git a/BugZilla.moin b/BugZilla.moin
deleted file mode 100644
index 89aee88..0000000
--- a/BugZilla.moin
+++ /dev/null
@@ -1,5 +0,0 @@
-BugZilla is a commonly used bug report management system.
-
-DRI and Mesa bugs should be submitted at [[http://bugs.freedesktop.org/|freedesktop.org's Bugzilla]]. Bug reports submitted in this fashion will be automatically forwarded to the dri-devel mailing list. Please submit all new bugs here.
-
-There are also older bug databases for DRI at [[http://bugs.xfree86.org/|xfree86.org]] and [[http://sourceforge.net/tracker/?atid=100387&group_id=387&func=browse|sourceforge.net]], but these are deprecated, and should not be used for submitting new bugs.
diff --git a/Building.moin b/Building.mdwn
index f6f5ad6..7a1a58b 100644
--- a/Building.moin
+++ b/Building.mdwn
@@ -1,292 +1,286 @@
-#pragma section-numbers on
-
-'''Contents'''
-<<TableOfContents>>
-
-= Building the DRI with X.org and Mesa =
-
-This is a basic guide to building DRI from source. This guide '''only''' covers building the client-side 3D drivers. Since the transition to the modular X.org build, building an X-server and 2D drivers is beyond the scope of this document. That information can be found in the [[http://wiki.x.org/wiki/ModularDevelopersGuide|X.org Modular Developer Guide]]. An important aspect is to compile X-server with the {{{--with-mesa-source=/path/to/mesa}}} option, to include glx/OpenGL support. You will most probably need to (re)compile also at least the keyboard and mouse drivers, in addition to a video card 2D driver.
-
-KDrive servers are not supported at this time. Please report any problems with these instructions on the dri-users mailing list or on IRC.
-
-The 2D drivers with DRI support, server-side GLX support and the GL library capable of loading DRI 3D drivers are developed in X.org's CVS. The 3D drivers, though, live in the Mesa tree, so you will have to check out the Mesa git tree. You should also get the DRM git tree for up-to-date kernel modules. The following instructions will guide you through the process step by step.
-
-'''Warning:''' In case you didn't notice, you are about to compile and install experimental software. This will allow you to test the latest features and bug fixes. It may, however, also introduce new bugs. Be prepared for problems every now and then.
-
-== Dependencies ==
-
-You need a current version (7.4, ie. xserver 1.5 as of this writing) of X.org (core and development packages) installed on your system. In particular, you need these X.org components:
-
- * proto/glproto [[http://xorg.freedesktop.org/releases/individual/proto/glproto-1.4.14.tar.bz2|1.4.14]] or `git://anongit.freedesktop.org/git/xorg/proto/glproto`
- * proto/xf86vidmodeproto `git://anongit.freedesktop.org/git/xorg/proto/xf86vidmodeproto`
- * lib/libXxf86vm `git://anongit.freedesktop.org/git/xorg/lib/libXxf86vm`
- * lib/libXmu `git://anongit.freedesktop.org/git/xorg/lib/libXmu`
- * dri2proto [[http://xorg.freedesktop.org/releases/individual/proto/dri2proto-2.6.tar.bz2|2.6]] or `git://anongit.freedesktop.org/xorg/proto/dri2proto`
-
-=== On Debian/Ubuntu ===
-
-If you are using Debian or Ubuntu you can install the packages with:
-
-{{{
-apt-get build-dep libdrm mesa
-apt-get install linux-headers-`uname -r`
-apt-get install libxi-dev libxmu-dev x11proto-xf86vidmode-dev
-apt-get install git-core autoconf automake libtool
-}}}
-
-== Getting the latest source trees ==
-
-Get the source trees using two `git` commands. These commands should be run in the same directory. When they've run, you will have two new subdirectories: `mesa`, and `drm`.
-
-=== Getting DRM and libdrm ===
-
-The clean DRM source tree takes about 4MB of disk space.
-
-{{{
-git clone git://anongit.freedesktop.org/git/mesa/drm
-}}}
-
-=== Getting Mesa ===
-
-The clean Mesa source tree takes about 32MB of disk space.
-
-{{{
-git clone git://anongit.freedesktop.org/git/mesa/mesa
-}}}
-
-== Building libdrm ==
-
-The Mesa drivers now require `libdrm` to be installed. Do the following to build `libdrm`:
-
-{{{
-cd drm
-./autogen.sh
-}}}
-
-'''Note:''' `libdrm` installs to `/usr/local/lib` by default. To install in `/usr/lib` run:
-{{{
-./configure --prefix=/usr
-}}}
-
-Now you're ready to compile it:
-{{{
-make
-}}}
-
-Then as root, to install:
-{{{
-make install
-}}}
-
-== Building Mesa 3D drivers ==
-
-The DRI 3D drivers are now built from the Mesa source.
-
-{{{
-cd mesa
-./autogen.sh
-}}}
-
-'''Note:''' `mesa` installs to `/usr/local/lib` by default. To install in `/usr/lib` run:
-{{{
-./configure --prefix=/usr
-}}}
-
-Choose the right configure options depending on the hardware architecture you're compiling for. <<BR>>
-See http://www.mesa3d.org/autoconf.html for more information about configuring mesa
-or read the output from:
-{{{
-./configure --help
-}}}
-
-'''Note:''' You will need to install `libdrm` for Mesa to build properly. You should have done that at step 1.3 when doing the "make install".
-
-'''Note:''' You will need to update PKG_CONFIG_PATH if you installed `libdrm` in `/usr/local/lib`. For example, `export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH`.
-
-Now you're ready to compile it:
-
-{{{
-make
-}}}
-
-== Installing the 3D drivers ==
-
-After compiling the Mesa tree, the 3D drivers can be found in `mesa/lib`. There are two ways of using them: installing them in the destined place, or telling X where to find them.
-
-1. Install the drivers to `/usr/lib/`:
-
-Run as root, to install:
-
-{{{
-make install
-}}}
-
-2. Or set the environment variable LIBGL_DRIVERS_PATH to point to `<path to Mesa>/lib`, and also preload the newly built `libGL.so`:
-
-{{{
-export LIBGL_DRIVERS_PATH=<path to Mesa>/lib
-export LD_PRELOAD=<path to Mesa>/lib/libGL.so.1
-}}}
-
-To make these settings persistent, you'll have to add them to `.bashrc` or a similar login script.
-
-== Building the DRM ==
-
-The DRM is shipped with the kernel on both Linux and FreeBSD, so you shouldn't have to build it explicitly. If you want to build it or develop it, the kernel building and development rules apply.
-
-== Finishing up ==
-
-There are two things you have to do if you compiled X.org for the first time and were using XFree86 before. There should be a symbolic link `/etc/X11/X` that points to `/usr/X11R6/bin/XFree86`. You should make that link point to `/usr/X11R6/bin/Xorg`.
-
-{{{
-cd /etc/X11
-mv X X.backup
-ln -s /usr/X11R6/bin/Xorg X
-}}}
-
-Copy your `XF86Config-4` or `XF86Config` to `xorg.conf`, and in this file change the keyboard driver from `keyboard` to `kbd`.
-
-{{{
-Section "Input"
- # ...
- Driver "kbd"
- # ...
-EndSection
-}}}
-
-In order to activate 3D acceleration make sure your `xorg.conf` is set up right.
-In particular, make sure the GLX and DRI modules are being loaded:
-
-{{{
-Section "Module"
- # ...
- Load "glx"
- Load "dri"
- # ...
-EndSection
-}}}
-
-and set the permissions for DRI appropriately. To allow anyone to use DRI, do:
-{{{
-Section "DRI"
- Mode 0666
-EndSection
-}}}
-
-To restrict DRI access to a certain group, find on your system the name of the group that is for video hardware access. (Have a look in `/etc/group`. It is often called `video`.) Add the users that may access the video hardware to that group. Then put this into `xorg.conf`:
-{{{
-Section "DRI"
- Group "video"
- Mode 0660
-EndSection
-}}}
-
-On Linux 2.4.x make sure the agpgart kernel module is loaded before you start X. On Linux 2.6.x make sure both agpgart and the agp chipset specific driver for your motherboard (via_agp, intel_agp, et al.) are loaded before you start X. To make the agp modules load automatically add these lines to your `modules.conf`:
-
-2.4.x kernels:
-{{{
-pre-install <drm module> /sbin/modprobe "-k" "agpgart"
-}}}
-
-2.6.x kernels:
-{{{
-pre-install <drm module> /sbin/modprobe "-k" "agpgart"
-pre-install agpgart /sbin/modprobe "-k" "<agp chipset driver>"
-}}}
-
-Replace <drm module> with the name of the drm module for your video card (e.g., radeon, mga, savage, etc.).
-Replace <agp chipset driver> with the name of the agp driver for your motherboard (e.g., via_agp, intel_agp, etc.).
-
-For all kernels, make sure the DRM module is loaded before you start X.
-
-Remember to restart X so the server will use the new modules.
-
-
-= Troubleshooting =
-
-If your issue isn't covered here, please report it on `#dri` on IRC or on the dri-users mailing list. This section only covers build-time troubleshooting; for run-time issues see DriTroubleshooting.
-
-== I cannot load my new DRM module on Linux Kernel 2.6.1 ==
-
-{{{
-FATAL: Error inserting via (/lib/modules/2.6.1/kernel/
-drivers/char/drm/<module name>.ko): Unknown symbol in module,
-or unknown parameter (see dmesg)
-}}}
-
-This error occurs because there are some missing symbols in the 2.6.1 kernel source. One way to get around this problem is to upgrade your kernel to a newer version... (You *might* be able to patch the DRM code to avoid this... Not sure about this, though!)
-
-
-== Can't find 'X11/Xlibint.h' ==
-
-You need to have the headers for your current X version installed. How you install these depends on how you installed X in the first place:
-
- * If you downloaded a binary from xfree86.org, the headers are in {{{Xprog.tgz}}}.
-
- * For Slackware the package is called {{{xfree86-devel}}}.
-
- * Redhat/Fedora and SuSE users should install the appropriate {{{XFree86-devel}}} package.
-
- * Mandrake calls this package {{{libxfree86-devel}}} for some reason.
-
- * Debian users should use {{{xlibs-dev}}}.
-
- * Gentoo users only need to make sure `xfree` or `xorg-x11` have already been emerged.
-
-== Compilation fails when building the kernel modules ==
-
-When building the kernel modules, the compilation might fail for some modules. In a recent CVS snapshot, I got the following:
-
-{{{
-savage_drv.c: In function `savage_alloc_continuous_mem':
-savage_drv.c:106: warning: passing arg 1 of `remap_page_range_Rc414bdc2' makes pointer from integer without a cast
-savage_drv.c:106: incompatible type for argument 4 of `remap_page_range_Rc414bdc2'
-savage_drv.c:106: too few arguments to function `remap_page_range_Rc414bdc2'
-savage_drv.c: In function `savage_get_physics_address':
-savage_drv.c:170: warning: implicit declaration of function `pte_offset'
-savage_drv.c:170: warning: assignment makes pointer from integer without a cast
-make[2]: *** [savage_drv.o] Error 1
-}}}
-
-You can avoid this problem by only building the modules you need. See the DRM section above for the bit about the `DRM_MODULES` variable.
-
-== xf86cfg doesn't compile/link ==
-
-xf86cfg requires libXaw (and appropriate headers) to be installed in order to build. You can either install the relevant packages for your distribution, or else add the line:
-
-{{{
-#define BuildXFree86ConfigTools NO
-}}}
-
-to your `config/cf/host.def` and rerun `make World`.
-
-ToDo: fill this in with package names, as above.
-
-== I'm using Gentoo and... ==
-
-Gentoo has its own How-To on their website -- http://www.gentoo.org/doc/en/dri-howto.xml
-
-For those who enabled DRI via the instructions here...
-
-There is a known issue with Gentoo's Open``GL package switch; when the `opengl-update` package is installed, Gentoo places Open``GL libraries and header files under `/usr/lib/opengl` and uses symlinks to make everything appear in the normal place. As a result the normal install process doesn't always work.
-
-Try setting up a "fake" Open``GL package, and switch into it:
-{{{
-cd /usr/lib/opengl
-mkdir mesa-cvs
-cd mesa-cvs
-ln -s ../../../local/lib
-ln -s ../../../local/include
-ln -s ../xorg-x11/extensions
-opengl-update mesa-cvs
-}}}
-This assumes you installed Mesa (including lib``GL) into `/usr/local`, which is the default. Also, you may like to remove everything in `/usr/local/lib` from Mesa that isn't either `libGL.*` or `libGLU.*` -- things like `libGLw.*` can cause problems.
-
-If you set things up differently, a way to check whether you are affected by `opengl-update` is to strace any Open``GL based program (for example: `glxgears`) and to see which `libGL.so` it loads. Despite all symlinks it should load `/usr/lib/libGL.so.1.2`. If it doesn't correct the symlinks in `/usr/lib` to point to `/usr/lib/libGL.so.1.2`. After that '''don't run `opengl-update`''' -- it will only break things.
-
-= References =
-
-- [[http://www.atomicmpc.com.au/forums.asp?s=2&c=16&t=1501|Guide by snakeoil]]
-
-- [[http://dri.sourceforge.net/doc/building.html|Old DRI building guide]]
-http://dri.sourceforge.net/cgi-bin/moin.cgi/RecentChanges
+
+**Contents** [[!toc ]]
+
+
+# Building the DRI with X.org and Mesa
+
+This is a basic guide to building DRI from source. This guide **only** covers building the client-side 3D drivers. Since the transition to the modular X.org build, building an X-server and 2D drivers is beyond the scope of this document. That information can be found in the [[X.org Modular Developer Guide|http://wiki.x.org/wiki/ModularDevelopersGuide]]. An important aspect is to compile X-server with the `--with-mesa-source=/path/to/mesa` option, to include glx/OpenGL support. You will most probably need to (re)compile also at least the keyboard and mouse drivers, in addition to a video card 2D driver.
+
+KDrive servers are not supported at this time. Please report any problems with these instructions on the dri-users mailing list or on IRC.
+
+The 2D drivers with DRI support, server-side GLX support and the GL library capable of loading DRI 3D drivers are developed in X.org's CVS. The 3D drivers, though, live in the Mesa tree, so you will have to check out the Mesa git tree. You should also get the DRM git tree for up-to-date kernel modules. The following instructions will guide you through the process step by step.
+
+**Warning:** In case you didn't notice, you are about to compile and install experimental software. This will allow you to test the latest features and bug fixes. It may, however, also introduce new bugs. Be prepared for problems every now and then.
+
+
+## Dependencies
+
+You need a current version (7.4, ie. xserver 1.5 as of this writing) of X.org (core and development packages) installed on your system. In particular, you need these X.org components:
+
+* proto/glproto [[1.4.14|http://xorg.freedesktop.org/releases/individual/proto/glproto-1.4.14.tar.bz2]] or `git://anongit.freedesktop.org/git/xorg/proto/glproto`
+* proto/xf86vidmodeproto `git://anongit.freedesktop.org/git/xorg/proto/xf86vidmodeproto`
+* lib/libXxf86vm `git://anongit.freedesktop.org/git/xorg/lib/libXxf86vm`
+* lib/libXmu `git://anongit.freedesktop.org/git/xorg/lib/libXmu`
+* dri2proto [[2.6|http://xorg.freedesktop.org/releases/individual/proto/dri2proto-2.6.tar.bz2]] or `git://anongit.freedesktop.org/xorg/proto/dri2proto`
+
+### On Debian/Ubuntu
+
+If you are using Debian or Ubuntu you can install the packages with:
+
+
+[[!format txt """
+apt-get build-dep libdrm mesa
+apt-get install linux-headers-`uname -r`
+apt-get install libxi-dev libxmu-dev x11proto-xf86vidmode-dev
+apt-get install git-core autoconf automake libtool
+"""]]
+
+## Getting the latest source trees
+
+Get the source trees using two `git` commands. These commands should be run in the same directory. When they've run, you will have two new subdirectories: `mesa`, and `drm`.
+
+
+### Getting DRM and libdrm
+
+The clean DRM source tree takes about 4MB of disk space.
+
+
+[[!format txt """
+git clone git://anongit.freedesktop.org/git/mesa/drm
+"""]]
+
+### Getting Mesa
+
+The clean Mesa source tree takes about 32MB of disk space.
+
+
+[[!format txt """
+git clone git://anongit.freedesktop.org/git/mesa/mesa
+"""]]
+
+## Building libdrm
+
+The Mesa drivers now require `libdrm` to be installed. Do the following to build `libdrm`:
+
+
+[[!format txt """
+cd drm
+./autogen.sh
+"""]]
+**Note:** `libdrm` installs to `/usr/local/lib` by default. To install in `/usr/lib` run:
+[[!format txt """
+./configure --prefix=/usr
+"""]]
+Now you're ready to compile it:
+[[!format txt """
+make
+"""]]
+Then as root, to install:
+[[!format txt """
+make install
+"""]]
+
+## Building Mesa 3D drivers
+
+The DRI 3D drivers are now built from the Mesa source.
+
+
+[[!format txt """
+cd mesa
+./autogen.sh
+"""]]
+**Note:** `mesa` installs to `/usr/local/lib` by default. To install in `/usr/lib` run:
+[[!format txt """
+./configure --prefix=/usr
+"""]]
+Choose the right configure options depending on the hardware architecture you're compiling for.
+ See [[http://www.mesa3d.org/autoconf.html|http://www.mesa3d.org/autoconf.html]] for more information about configuring mesa or read the output from:
+[[!format txt """
+./configure --help
+"""]]
+**Note:** You will need to install `libdrm` for Mesa to build properly. You should have done that at step 1.3 when doing the "make install".
+
+**Note:** You will need to update PKG_CONFIG_PATH if you installed `libdrm` in `/usr/local/lib`. For example, `export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH`.
+
+Now you're ready to compile it:
+
+
+[[!format txt """
+make
+"""]]
+
+## Installing the 3D drivers
+
+After compiling the Mesa tree, the 3D drivers can be found in `mesa/lib`. There are two ways of using them: installing them in the destined place, or telling X where to find them.
+
+1. Install the drivers to `/usr/lib/`:
+
+Run as root, to install:
+
+
+[[!format txt """
+make install
+"""]]
+2. Or set the environment variable LIBGL_DRIVERS_PATH to point to `<path to Mesa>/lib`, and also preload the newly built `libGL.so`:
+
+
+[[!format txt """
+export LIBGL_DRIVERS_PATH=<path to Mesa>/lib
+export LD_PRELOAD=<path to Mesa>/lib/libGL.so.1
+"""]]
+To make these settings persistent, you'll have to add them to `.bashrc` or a similar login script.
+
+
+## Building the DRM
+
+The DRM is shipped with the kernel on both Linux and FreeBSD, so you shouldn't have to build it explicitly. If you want to build it or develop it, the kernel building and development rules apply.
+
+
+## Finishing up
+
+There are two things you have to do if you compiled X.org for the first time and were using XFree86 before. There should be a symbolic link `/etc/X11/X` that points to `/usr/X11R6/bin/XFree86`. You should make that link point to `/usr/X11R6/bin/Xorg`.
+
+
+[[!format txt """
+cd /etc/X11
+mv X X.backup
+ln -s /usr/X11R6/bin/Xorg X
+"""]]
+Copy your `XF86Config-4` or `XF86Config` to `xorg.conf`, and in this file change the keyboard driver from `keyboard` to `kbd`.
+
+
+[[!format txt """
+Section "Input"
+ # ...
+ Driver "kbd"
+ # ...
+EndSection
+"""]]
+In order to activate 3D acceleration make sure your `xorg.conf` is set up right. In particular, make sure the GLX and DRI modules are being loaded:
+
+
+[[!format txt """
+Section "Module"
+ # ...
+ Load "glx"
+ Load "dri"
+ # ...
+EndSection
+"""]]
+and set the permissions for DRI appropriately. To allow anyone to use DRI, do:
+[[!format txt """
+Section "DRI"
+ Mode 0666
+EndSection
+"""]]
+To restrict DRI access to a certain group, find on your system the name of the group that is for video hardware access. (Have a look in `/etc/group`. It is often called `video`.) Add the users that may access the video hardware to that group. Then put this into `xorg.conf`:
+[[!format txt """
+Section "DRI"
+ Group "video"
+ Mode 0660
+EndSection
+"""]]
+On Linux 2.4.x make sure the agpgart kernel module is loaded before you start X. On Linux 2.6.x make sure both agpgart and the agp chipset specific driver for your motherboard (via_agp, intel_agp, et al.) are loaded before you start X. To make the agp modules load automatically add these lines to your `modules.conf`:
+
+2.4.x kernels:
+[[!format txt """
+pre-install <drm module> /sbin/modprobe "-k" "agpgart"
+"""]]
+2.6.x kernels:
+[[!format txt """
+pre-install <drm module> /sbin/modprobe "-k" "agpgart"
+pre-install agpgart /sbin/modprobe "-k" "<agp chipset driver>"
+"""]]
+Replace <drm module> with the name of the drm module for your video card (e.g., radeon, mga, savage, etc.). Replace <agp chipset driver> with the name of the agp driver for your motherboard (e.g., via_agp, intel_agp, etc.).
+
+For all kernels, make sure the DRM module is loaded before you start X.
+
+Remember to restart X so the server will use the new modules.
+
+
+# Troubleshooting
+
+If your issue isn't covered here, please report it on `#dri` on IRC or on the dri-users mailing list. This section only covers build-time troubleshooting; for run-time issues see [[DriTroubleshooting|DriTroubleshooting]].
+
+
+## I cannot load my new DRM module on Linux Kernel 2.6.1
+
+
+[[!format txt """
+FATAL: Error inserting via (/lib/modules/2.6.1/kernel/
+drivers/char/drm/<module name>.ko): Unknown symbol in module,
+or unknown parameter (see dmesg)
+"""]]
+This error occurs because there are some missing symbols in the 2.6.1 kernel source. One way to get around this problem is to upgrade your kernel to a newer version... (You *might* be able to patch the DRM code to avoid this... Not sure about this, though!)
+
+
+## Can't find 'X11/Xlibint.h'
+
+You need to have the headers for your current X version installed. How you install these depends on how you installed X in the first place:
+
+* If you downloaded a binary from xfree86.org, the headers are in `Xprog.tgz`.
+* For Slackware the package is called `xfree86-devel`.
+* Redhat/Fedora and SuSE users should install the appropriate `XFree86-devel` package.
+* Mandrake calls this package `libxfree86-devel` for some reason.
+* Debian users should use `xlibs-dev`.
+* Gentoo users only need to make sure `xfree` or `xorg-x11` have already been emerged.
+
+## Compilation fails when building the kernel modules
+
+When building the kernel modules, the compilation might fail for some modules. In a recent CVS snapshot, I got the following:
+
+
+[[!format txt """
+savage_drv.c: In function `savage_alloc_continuous_mem':
+savage_drv.c:106: warning: passing arg 1 of `remap_page_range_Rc414bdc2' makes pointer from integer without a cast
+savage_drv.c:106: incompatible type for argument 4 of `remap_page_range_Rc414bdc2'
+savage_drv.c:106: too few arguments to function `remap_page_range_Rc414bdc2'
+savage_drv.c: In function `savage_get_physics_address':
+savage_drv.c:170: warning: implicit declaration of function `pte_offset'
+savage_drv.c:170: warning: assignment makes pointer from integer without a cast
+make[2]: *** [savage_drv.o] Error 1
+"""]]
+You can avoid this problem by only building the modules you need. See the DRM section above for the bit about the `DRM_MODULES` variable.
+
+
+## xf86cfg doesn't compile/link
+
+xf86cfg requires libXaw (and appropriate headers) to be installed in order to build. You can either install the relevant packages for your distribution, or else add the line:
+
+
+[[!format txt """
+#define BuildXFree86ConfigTools NO
+"""]]
+to your `config/cf/host.def` and rerun `make World`.
+
+[[ToDo|ToDo]]: fill this in with package names, as above.
+
+
+## I'm using Gentoo and...
+
+Gentoo has its own How-To on their website -- [[http://www.gentoo.org/doc/en/dri-howto.xml|http://www.gentoo.org/doc/en/dri-howto.xml]]
+
+For those who enabled DRI via the instructions here...
+
+There is a known issue with Gentoo's Open``GL package switch; when the `opengl-update` package is installed, Gentoo places Open``GL libraries and header files under `/usr/lib/opengl` and uses symlinks to make everything appear in the normal place. As a result the normal install process doesn't always work.
+
+Try setting up a "fake" Open``GL package, and switch into it:
+[[!format txt """
+cd /usr/lib/opengl
+mkdir mesa-cvs
+cd mesa-cvs
+ln -s ../../../local/lib
+ln -s ../../../local/include
+ln -s ../xorg-x11/extensions
+opengl-update mesa-cvs
+"""]]
+This assumes you installed Mesa (including lib``GL) into `/usr/local`, which is the default. Also, you may like to remove everything in `/usr/local/lib` from Mesa that isn't either `libGL.*` or `libGLU.*` -- things like `libGLw.*` can cause problems.
+
+If you set things up differently, a way to check whether you are affected by `opengl-update` is to strace any Open``GL based program (for example: `glxgears`) and to see which `libGL.so` it loads. Despite all symlinks it should load `/usr/lib/libGL.so.1.2`. If it doesn't correct the symlinks in `/usr/lib` to point to `/usr/lib/libGL.so.1.2`. After that **don't run `opengl-update`** -- it will only break things.
+
+
+# References
+
+- [[Guide by snakeoil|http://www.atomicmpc.com.au/forums.asp?s=2&c=16&t=1501]]
+
+- [[Old DRI building guide|http://dri.sourceforge.net/doc/building.html]] [[http://dri.sourceforge.net/cgi-bin/moin.cgi/RecentChanges|http://dri.sourceforge.net/cgi-bin/moin.cgi/RecentChanges]]
diff --git a/BuildingWithLLVM.moin b/BuildingWithLLVM.mdwn
index 26b50ee..5cd3707 100644
--- a/BuildingWithLLVM.moin
+++ b/BuildingWithLLVM.mdwn
@@ -1,31 +1,33 @@
-This page describes how to build mesa with llvm support.
-
-First build llvm from svn with clang support:
-
-{{{
-svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
-cd llvm
-./configure --enable-pic
-make
-make install
-cd tools
-svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
-cd clang
-make
-make install
-}}}
-
-Next build mesa with llvm support:
-
-{{{
-git clone git+ssh://marcheu@git.freedesktop.org/git/mesa/mesa
-cd mesa
-git checkout --track -b gallium-0.2 origin/gallium-0.2
-make linux-llvm
-}}}
-
-Mesa-7.9 [still unreleased as of 17-09-2010, but already branched from master] has configure switch for autoconf-based build system:
-
-{{{
---enable-gallium-llvm
-}}}
+
+This page describes how to build mesa with llvm support.
+
+First build llvm from svn with clang support:
+
+
+[[!format txt """
+svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
+cd llvm
+./configure --enable-pic
+make
+make install
+cd tools
+svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
+cd clang
+make
+make install
+"""]]
+Next build mesa with llvm support:
+
+
+[[!format txt """
+git clone git+ssh://marcheu@git.freedesktop.org/git/mesa/mesa
+cd mesa
+git checkout --track -b gallium-0.2 origin/gallium-0.2
+make linux-llvm
+"""]]
+Mesa-7.9 [still unreleased as of 17-09-2010, but already branched from master] has configure switch for autoconf-based build system:
+
+
+[[!format txt """
+--enable-gallium-llvm
+"""]] \ No newline at end of file
diff --git a/CAS.moin b/CAS.mdwn
index ee6f164..221c3f1 100644
--- a/CAS.moin
+++ b/CAS.mdwn
@@ -1,8 +1,13 @@
-== Check And Set (CAS) ==
-
-CAS, meaning "Check and Set" or "Compare and Swap," is used by the DRI for the fast locking it uses. The DRM_CAS macro is located in xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h and is really Check and Set. It takes a pointer to the lock, the possible old value, the new value, and a place to store the result to. Then, atomically, the lock is checked for the old value and set to the new value if equal. If this passes, the return value is set to 1, else 0.
-
-The DRM's locking is based on this. To lock from userland, a CAS is tried with the old value being the context ID and the new value being the context ID ORed with DRM_LOCK_HELD. If this passes, then the client holds the lock. If not, then drmGetLock is called, which goes into the kernel, tries to get the lock, and sleeps on the lock if it's held.
-
-----
-CategoryGlossary
+
+
+## Check And Set (CAS)
+
+CAS, meaning "Check and Set" or "Compare and Swap," is used by the DRI for the fast locking it uses. The DRM_CAS macro is located in xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h and is really Check and Set. It takes a pointer to the lock, the possible old value, the new value, and a place to store the result to. Then, atomically, the lock is checked for the old value and set to the new value if equal. If this passes, the return value is set to 1, else 0.
+
+The DRM's locking is based on this. To lock from userland, a CAS is tried with the old value being the context ID and the new value being the context ID ORed with DRM_LOCK_HELD. If this passes, then the client holds the lock. If not, then drmGetLock is called, which goes into the kernel, tries to get the lock, and sleeps on the lock if it's held.
+
+
+
+---
+
+ [[CategoryGlossary|CategoryGlossary]]
diff --git a/CVSView.mdwn b/CVSView.mdwn
new file mode 100644
index 0000000..757b303
--- /dev/null
+++ b/CVSView.mdwn
@@ -0,0 +1,8 @@
+
+To browse the CVS repository online and view the complete history of any file in the repository.
+
+For Mesa see [[http://freedesktop.org/cgi-bin/viewcvs.cgi/mesa/|http://freedesktop.org/cgi-bin/viewcvs.cgi/mesa/]]
+
+For DRI see [[http://freedesktop.org/cgi-bin/viewcvs.cgi/dri/|http://freedesktop.org/cgi-bin/viewcvs.cgi/dri/]]
+
+See CVS, [[CvsPolicy|CvsPolicy]], and [[CvsBranches|CvsBranches]] for more information on using the CVS repositories.
diff --git a/CVSView.moin b/CVSView.moin
deleted file mode 100644
index 57ef524..0000000
--- a/CVSView.moin
+++ /dev/null
@@ -1,7 +0,0 @@
-To browse the CVS repository online and view the complete history of any file in the repository.
-
-For Mesa see http://freedesktop.org/cgi-bin/viewcvs.cgi/mesa/
-
-For DRI see http://freedesktop.org/cgi-bin/viewcvs.cgi/dri/
-
-See CVS, CvsPolicy, and CvsBranches for more information on using the CVS repositories.
diff --git a/CVSup.moin b/CVSup.mdwn
index 56269a9..c68d379 100644
--- a/CVSup.moin
+++ b/CVSup.mdwn
@@ -1,23 +1,24 @@
-CVSup is a tool which allows quick checkouts of CVS branches or mirroring of a CVS repository.
-
-To use it, first install cvsup. It can be installed using "apt-get install cvsup" on debian, "yum install cvsup" on fedora, "portupgrade -RiN cvsup" on FreeBSD, or downloaded and installed manually from http://www.cvsup.org/ . Then grab the [[http://dri.freedesktop.org/~dri/dri-supfile|dri-supfile]].
-
-Next, edit your dri-supfile for your configuration. The example dri-supfile tells cvsup to place checked out files in /usr/src/dri and cvsup's extra state in /etc/cvsup/drisup. If you wish to check out a branch other than the trunk of CVS, edit the tag in the line:
-
-{{{ * default release=cvs tag=. }}}
-
-to the name of your branch, for example:
-
-{{{ * default release=cvs tag=mach64-0-0-6-branch }}}
-
-If you want to check out the entire CVS repository, remove the "tag=." line entirely. If you choose to do that, you can then check out CVS from your local machine using:
-
-{{{ cvs -d/usr/src/dri checkout xc }}}
-
-This allows for fast checkouts and diffing without hitting the network.
-
-Below that is the collection name, "dri-xc." Two collections are offered. The "dri-xc" collection contains just the xc/ directory, which is what most people want from DRI CVS. Changing that to the "dri" collection will get you all of CVS, including the agpgart WIP and other projects.
-
-When you are finished configuring, run "cvsup dri-supfile". You may want to check out the cvsup manpage for extra flags to add. My standard set is "cvsup -s -g -L 2 dri-supfile". The process can be killed and restarted as necessary, if your connection is slow.
-
-See CVS, CvsPolicy, and CvsBranches for more information on using the DRI CVS repository.
+
+CVSup is a tool which allows quick checkouts of CVS branches or mirroring of a CVS repository.
+
+To use it, first install cvsup. It can be installed using "apt-get install cvsup" on debian, "yum install cvsup" on fedora, "portupgrade -RiN cvsup" on FreeBSD, or downloaded and installed manually from [[http://www.cvsup.org/|http://www.cvsup.org/]] . Then grab the [[dri-supfile|http://dri.freedesktop.org/~dri/dri-supfile]].
+
+Next, edit your dri-supfile for your configuration. The example dri-supfile tells cvsup to place checked out files in /usr/src/dri and cvsup's extra state in /etc/cvsup/drisup. If you wish to check out a branch other than the trunk of CVS, edit the tag in the line:
+
+` * default release=cvs tag=. `
+
+to the name of your branch, for example:
+
+` * default release=cvs tag=mach64-0-0-6-branch `
+
+If you want to check out the entire CVS repository, remove the "tag=." line entirely. If you choose to do that, you can then check out CVS from your local machine using:
+
+` cvs -d/usr/src/dri checkout xc `
+
+This allows for fast checkouts and diffing without hitting the network.
+
+Below that is the collection name, "dri-xc." Two collections are offered. The "dri-xc" collection contains just the xc/ directory, which is what most people want from DRI CVS. Changing that to the "dri" collection will get you all of CVS, including the agpgart WIP and other projects.
+
+When you are finished configuring, run "cvsup dri-supfile". You may want to check out the cvsup manpage for extra flags to add. My standard set is "cvsup -s -g -L 2 dri-supfile". The process can be killed and restarted as necessary, if your connection is slow.
+
+See CVS, [[CvsPolicy|CvsPolicy]], and [[CvsBranches|CvsBranches]] for more information on using the DRI CVS repository.
diff --git a/CategoryFaq.mdwn b/CategoryFaq.mdwn
new file mode 100644
index 0000000..4c0eccc
--- /dev/null
+++ b/CategoryFaq.mdwn
@@ -0,0 +1,19 @@
+
+
+# Frequently Asked Questions
+
+Here is a list of pages with frequently asked questions:
+
+[[!inline pages="link(CategoryFaq)" quick feeds="no" archive="yes"]]
+
+
+
+---
+
+ See also the [[old FAQ|http://dri.sourceforge.net/old/faq.phtml]].
+
+
+
+---
+
+ [[CategoryCategory|CategoryCategory]]
diff --git a/CategoryFaq.moin b/CategoryFaq.moin
deleted file mode 100644
index 5818f39..0000000
--- a/CategoryFaq.moin
+++ /dev/null
@@ -1,11 +0,0 @@
-= Frequently Asked Questions =
-
-Here is a list of pages with frequently asked questions:
-
-<<FullSearch(CategoryFaq)>>
-
-----
-See also the [[http://dri.sourceforge.net/old/faq.phtml|old FAQ]].
-
-----
-CategoryCategory
diff --git a/CategoryGlossary.mdwn b/CategoryGlossary.mdwn
new file mode 100644
index 0000000..6cc492f
--- /dev/null
+++ b/CategoryGlossary.mdwn
@@ -0,0 +1,7 @@
+
+
+# Glossary
+
+Here is a list of pages with glossary definitions:
+
+[[!inline pages="link(CategoryGlossary)" quick feeds="no" archive="yes"]]
diff --git a/CategoryGlossary.moin b/CategoryGlossary.moin
deleted file mode 100644
index d84d023..0000000
--- a/CategoryGlossary.moin
+++ /dev/null
@@ -1,5 +0,0 @@
-= Glossary =
-
-Here is a list of pages with glossary definitions:
-
-<<FullSearch(CategoryGlossary)>>
diff --git a/CategoryHardware.mdwn b/CategoryHardware.mdwn
new file mode 100644
index 0000000..5a8fa0c
--- /dev/null
+++ b/CategoryHardware.mdwn
@@ -0,0 +1,2 @@
+
+Here is a list of pages covering hardware specific details: [[!inline pages="link(CategoryHardware)" quick feeds="no" archive="yes"]]
diff --git a/CategoryHardware.moin b/CategoryHardware.moin
deleted file mode 100644
index d912e1e..0000000
--- a/CategoryHardware.moin
+++ /dev/null
@@ -1,2 +0,0 @@
-Here is a list of pages covering hardware specific details:
-<<FullSearch(CategoryHardware)>>
diff --git a/CategoryHardwareChipset.mdwn b/CategoryHardwareChipset.mdwn
new file mode 100644
index 0000000..da20b95
--- /dev/null
+++ b/CategoryHardwareChipset.mdwn
@@ -0,0 +1,11 @@
+
+
+## Chipsets
+
+[[!inline pages="link(CategoryHardwareChipset)" quick feeds="no" archive="yes"]]
+
+
+
+---
+
+ [[CategoryCategory|CategoryCategory]]
diff --git a/CategoryHardwareChipset.moin b/CategoryHardwareChipset.moin
deleted file mode 100644
index f740840..0000000
--- a/CategoryHardwareChipset.moin
+++ /dev/null
@@ -1,6 +0,0 @@
-== Chipsets ==
-
-<<FullSearch(CategoryHardwareChipset)>>
-
-----
-CategoryCategory
diff --git a/CategoryHardwareVendor.mdwn b/CategoryHardwareVendor.mdwn
new file mode 100644
index 0000000..3dd1f61
--- /dev/null
+++ b/CategoryHardwareVendor.mdwn
@@ -0,0 +1,11 @@
+
+
+## Independent Hardware Vendors
+
+[[!inline pages="link(CategoryHardwareVendor)" quick feeds="no" archive="yes"]]
+
+
+
+---
+
+ [[CategoryCategory|CategoryCategory]]
diff --git a/CategoryHardwareVendor.moin b/CategoryHardwareVendor.moin
deleted file mode 100644
index e7360a8..0000000
--- a/CategoryHardwareVendor.moin
+++ /dev/null
@@ -1,6 +0,0 @@
-== Independent Hardware Vendors ==
-
-<<FullSearch(CategoryHardwareVendor)>>
-
-----
-CategoryCategory
diff --git a/CategoryHelpWanted.mdwn b/CategoryHelpWanted.mdwn
new file mode 100644
index 0000000..d08a652
--- /dev/null
+++ b/CategoryHelpWanted.mdwn
@@ -0,0 +1,9 @@
+
+
+## Help Wanted
+
+This is a list of potential enhancements that can be incorporated into the DRI project.
+
+If you are interested in developing or funding any DRI enhancements, simply post your interest to the [[DRI Developers list|http://lists.sourceforge.net/mailman/listinfo/dri-devel]] or contact [[JensOwen|JensOwen]] at Tungsten Graphics.
+
+[[!inline pages="link(CategoryHelpWanted)" quick feeds="no" archive="yes"]]
diff --git a/CategoryHelpWanted.moin b/CategoryHelpWanted.moin
deleted file mode 100644
index 3919c77..0000000
--- a/CategoryHelpWanted.moin
+++ /dev/null
@@ -1,7 +0,0 @@
-== Help Wanted ==
-
-This is a list of potential enhancements that can be incorporated into the DRI project.
-
-If you are interested in developing or funding any DRI enhancements, simply post your interest to the [[http://lists.sourceforge.net/mailman/listinfo/dri-devel|DRI Developers list]] or contact JensOwen at Tungsten Graphics.
-
-<<FullSearch(CategoryHelpWanted)>>
diff --git a/CategoryOperatingSystem.mdwn b/CategoryOperatingSystem.mdwn
new file mode 100644
index 0000000..d71fe70
--- /dev/null
+++ b/CategoryOperatingSystem.mdwn
@@ -0,0 +1,11 @@
+
+
+## Operating Systems
+
+[[!inline pages="link(CategoryOperatingSystem)" quick feeds="no" archive="yes"]]
+
+
+
+---
+
+ [[CategoryCategory|CategoryCategory]]
diff --git a/CategoryOperatingSystem.moin b/CategoryOperatingSystem.moin
deleted file mode 100644
index 9ea9d14..0000000
--- a/CategoryOperatingSystem.moin
+++ /dev/null
@@ -1,6 +0,0 @@
-== Operating Systems ==
-
-<<FullSearch(CategoryOperatingSystem)>>
-
-----
-CategoryCategory
diff --git a/CategoryTemplate.mdwn b/CategoryTemplate.mdwn
new file mode 100644
index 0000000..d156735
--- /dev/null
+++ b/CategoryTemplate.mdwn
@@ -0,0 +1,14 @@
+
+Describe the pages in this category...
+
+To add a page to this category, add a link to this page on the last line of the page. You can add multiple categories to a page.
+
+**List of pages in this category:**
+
+[[!inline pages="link(CategoryTemplate)" quick feeds="no" archive="yes"]]
+
+
+
+---
+
+ [[CategoryCategory|CategoryCategory]]
diff --git a/CategoryTemplate.moin b/CategoryTemplate.moin
deleted file mode 100644
index 6a6a603..0000000
--- a/CategoryTemplate.moin
+++ /dev/null
@@ -1,17 +0,0 @@
-## Please edit system and help pages ONLY in the moinmaster wiki! For more
-## information, please see MoinMaster:MoinPagesEditorGroup.
-##master-page:CategoryTemplate
-##master-date:Unknown-Date
-#format wiki
-#language en
-
-Describe the pages in this category...
-
-To add a page to this category, add a link to this page on the last line of the page. You can add multiple categories to a page.
-
-'''List of pages in this category:'''
-
-<<FullSearchCached(CategoryTemplate)>>
-
-----
-CategoryCategory
diff --git a/CategoryTroubleshooting.mdwn b/CategoryTroubleshooting.mdwn
new file mode 100644
index 0000000..98cfd80
--- /dev/null
+++ b/CategoryTroubleshooting.mdwn
@@ -0,0 +1,11 @@
+
+
+## Troubleshooting
+
+
+
+
+
+---
+
+ [[CategoryCategory|CategoryCategory]]
diff --git a/CategoryTroubleshooting.moin b/CategoryTroubleshooting.moin
deleted file mode 100644
index 9495e78..0000000
--- a/CategoryTroubleshooting.moin
+++ /dev/null
@@ -1,6 +0,0 @@
-== Troubleshooting ==
-
-<<FullSearch>>
-
-----
-CategoryCategory
diff --git a/CirrusLogic.mdwn b/CirrusLogic.mdwn
new file mode 100644
index 0000000..2f1d073
--- /dev/null
+++ b/CirrusLogic.mdwn
@@ -0,0 +1,26 @@
+
+
+# Cirrus Logic
+
+**Chipsets** [[!map pages="^Vendor.+"]]
+
+
+## Status
+
+Documentation exists but no current driver support.
+
+
+## Specifications
+
+Publically available for the 5465 series devices. These have basic textured triangle engines and not much else.
+
+
+## Resources
+
+A primitive Cirrus driver, called "mondello", was available in Mesa 1.2.8, which can still be found on ftp sites. ([[Example|http://www.ibiblio.org/pub/linux/libs/X/Mesa-1.2.8.src.tgz]])
+
+
+
+---
+
+ [[CategoryHardwareVendor|CategoryHardwareVendor]] [[http://dri.sourceforge.net/cgi-bin/moin.cgi/RecentChanges|http://dri.sourceforge.net/cgi-bin/moin.cgi/RecentChanges]]
diff --git a/CirrusLogic.moin b/CirrusLogic.moin
deleted file mode 100644
index 8a87fd3..0000000
--- a/CirrusLogic.moin
+++ /dev/null
@@ -1,20 +0,0 @@
-= Cirrus Logic =
-
-'''Chipsets'''
-<<PageList(^Vendor.+)>>
-
-== Status ==
-
-Documentation exists but no current driver support.
-
-== Specifications ==
-
-Publically available for the 5465 series devices. These have basic textured triangle engines and not much else.
-
-== Resources ==
-
-A primitive Cirrus driver, called "mondello", was available in Mesa 1.2.8, which can still be found on ftp sites. ([[http://www.ibiblio.org/pub/linux/libs/X/Mesa-1.2.8.src.tgz | Example]])
-
-----
-CategoryHardwareVendor
-http://dri.sourceforge.net/cgi-bin/moin.cgi/RecentChanges
diff --git a/CommunicationSchemes.mdwn b/CommunicationSchemes.mdwn
new file mode 100644
index 0000000..60635c4
--- /dev/null
+++ b/CommunicationSchemes.mdwn
@@ -0,0 +1,18 @@
+
+
+# Communication schemes
+
+[[!inline pages="PIO" quick="yes" raw="yes"]]
+
+[[!inline pages="MMIO" quick="yes" raw="yes"]]
+
+[[!inline pages="DMA" quick="yes" raw="yes"]]
+
+
+## Summary
+
+All of these communication schemes was originally used with disk I/O before graphics entered the picture, so you may wish to view them in that light. It makes it more obvious how they fit together in terms of efficiency. In PIO, you had to write a loop to write a chunk of data to one address in I/O space with outb or outw.
+
+With MMIO, you could use a simple _memcpy_ call and take advantage of all of the optimizations inherent in that.
+
+With DMA, you wrote a few bytes to an I/O address to tell an external chip to "go to town" on data you had already composed. Meanwhile, you could work on getting the next chunk ready. Most simultaneous work getting done in the latter case.
diff --git a/CommunicationSchemes.moin b/CommunicationSchemes.moin
deleted file mode 100644
index bb1e94d..0000000
--- a/CommunicationSchemes.moin
+++ /dev/null
@@ -1,23 +0,0 @@
-= Communication schemes =
-
-<<Include(PIO)>>
-
-<<Include(MMIO)>>
-
-<<Include(DMA)>>
-
-== Summary ==
-
-All of these communication schemes was originally used with disk I/O before
-graphics entered the picture, so you may wish to view them in that light. It
-makes it more obvious how they fit together in terms of efficiency. In PIO, you
-had to write a loop to write a chunk of data to one address in I/O space with
-outb or outw.
-
-With MMIO, you could use a simple ''memcpy'' call and take advantage of all of
-the optimizations inherent in that.
-
-With DMA, you wrote a few bytes to an I/O address to tell an external chip to
-"go to town" on data you had already composed. Meanwhile, you could work on
-getting the next chunk ready. Most simultaneous work getting done in the latter
-case.
diff --git a/CompiledVertexArray.mdwn b/CompiledVertexArray.mdwn
new file mode 100644
index 0000000..71cfca0
--- /dev/null
+++ b/CompiledVertexArray.mdwn
@@ -0,0 +1,13 @@
+
+
+# Generic Optimization for EXT_compiled_vertex_array
+
+It should be possible to provide generic optimization for [[compiled vertex arrays|http://www.opengl.org/registry/specs/EXT/compiled_vertex_array.txt]]. These optimizations should be implementable for both indirect rendering and direct rendering. For the direct rendering case, Mesa should provide generic paths that drivers can enable or disable. These paths are only useful for drivers that implement [[vertex buffer objects|http://www.opengl.org/registry/specs/ARB/vertex_buffer_object.txt]] and have hardware T&L units.
+
+When glLockArraysEXT is called, a buffer is created that is large enough to hold all of the currently known array state. All arrays for which data has been set (e.g., via glVertexPointer, glColorPointer, etc) is included in the calculation. It is possible that the application may enable or disable additional arrays. The calculated size includes only the range specified by the "count" parameter of glLockArraysEXT.
+
+At this time, a flag is set within libGL to note that the library is in the special CVA mode. If any pointer function is called, the buffer object is destroyed and the flag is cleared.
+
+In the CVA case, all element data will come from client memory either via calls to glArrayElement, glDrawArrays, or the pointer supplied to glDrawElements. This implies that all the indexes will pass through libGL. When the data passes through libGL, the library can re-base the data from the "first" parameter of glLockArraysEXT. The net effect is that the library will tell the server that "first" is element zero in all arrays. This implies, of course, that elements less than "first" won't work. This is not a problem since the EXT_compiled_vertex_array specification clearly states this may not work.
+
+When a draw call made and the CVA flag is set, buffer object protocol is used to perform the drawing.
diff --git a/CompiledVertexArray.moin b/CompiledVertexArray.moin
deleted file mode 100644
index 7c933d6..0000000
--- a/CompiledVertexArray.moin
+++ /dev/null
@@ -1,27 +0,0 @@
-= Generic Optimization for EXT_compiled_vertex_array =
-
-It should be possible to provide generic optimization for [[http://www.opengl.org/registry/specs/EXT/compiled_vertex_array.txt|compiled vertex arrays]]. These optimizations should be implementable for both indirect rendering and direct rendering. For the direct rendering case, Mesa should provide generic paths that drivers can enable or disable. These paths are only useful for drivers that implement [[http://www.opengl.org/registry/specs/ARB/vertex_buffer_object.txt|vertex buffer objects]] and have hardware T&L units.
-
-When glLockArraysEXT is called, a buffer is created that is large enough to
-hold all of the currently known array state. All arrays for which data
-has been set (e.g., via glVertexPointer, glColorPointer, etc) is included in
-the calculation. It is possible that the application may enable or disable
-additional arrays. The calculated size includes only the range specified by
-the "count" parameter of glLockArraysEXT.
-
-At this time, a flag is set within libGL to note that the library is in the
-special CVA mode. If any pointer function is called, the buffer object is
-destroyed and the flag is cleared.
-
-In the CVA case, all element data will come from client memory either via
-calls to glArrayElement, glDrawArrays, or the pointer supplied to
-glDrawElements. This implies that all the indexes will pass through libGL.
-When the data passes through libGL, the library can re-base the data from
-the "first" parameter of glLockArraysEXT. The net effect is that the
-library will tell the server that "first" is element zero in all arrays.
-This implies, of course, that elements less than "first" won't work. This
-is not a problem since the EXT_compiled_vertex_array specification clearly
-states this may not work.
-
-When a draw call made and the CVA flag is set, buffer object protocol is
-used to perform the drawing.
diff --git a/CompositeSwap.mdwn b/CompositeSwap.mdwn
new file mode 100644
index 0000000..da74814
--- /dev/null
+++ b/CompositeSwap.mdwn
@@ -0,0 +1,211 @@
+
+
+## Issues
+
+X and GL applications need to control how their data is displayed for several reasons:
+
+ * preventing distracting artifacts - ugly "tearing" or partial drawing for example
+ * smoothness - constant, predictable frame rates are a requirement for animation, video and high end simulation programs
+ * performance - apps need to know how well they're keeping up with their desired frame rate so they can throttle back or simplify drawing as needed
+Plain X doesn't have many ways of doing the above (it mostly assumes immediate mode drawing to the visible frame buffer), but GLX provides many extensions related to handling the actual display of buffers on the user visible screen, these extensions need to be supported in DRI2 for the Linux graphics stack to really shine.
+
+There are also issues related to memory consumption, swap behavior, and performance that can be addressed:
+
+
+### Memory savings
+
+ * memory consumption could be reduced if the private back/front pair was reduced to just a private back with the compositor copy acting as front (though there are issues with front buffer rendering in this case).
+ * This can be implemented purely client side through the addition of compositor<->client protocols.
+ * it could also be reduced by throwing away the private back buffer in between frame rendering.
+ * This can happen automatically with some additions to the DRI2 protocol and client/server behavior.
+
+### Performance
+
+ * performance could be significantly improved on low bandwidth platform if buffer swaps could be simple pointer exchanges when windowed (similar to the way page flips work for full screen applications)
+ * requires window managers to draw decorations independent of application window (i.e. exchange is only possible if front & back window pixmaps are the same size)
+ * page flipping for full screen swaps is also a significant win on bandwidth limited platforms
+
+### Behavior
+
+ * some applications want to control how buffer swaps occur (e.g. to preserve back buffer contents after a swap)
+ * triple buffering should be available to applications that need it, with configurable behavior for discard vs. queue if the buffers are rendered faster than can be displayed
+
+## OpenGL and GLX swap and throttling related extensions
+
+Under a compositor, the behavior of these routines could change, or additional compositor<->client protocol added to support similar behavior. Changes noted below, though in general "video frame" should be thought of as a virtualized compositor frame rate rather than a monitor refresh (e.g. the compositor may report 60fps to applications even though it only updates the screen when recompositing is needed):
+
+ * [[SGI_swap_control|http://www.opengl.org/registry/specs/SGI/swap_control.txt]] - controls how frequently glXSwapBuffers swaps occur (in frames)
+ 1. for redirected windows, interval is in compositor frames rather than monitor video frames
+ * [[SGI_video_sync|http://www.opengl.org/registry/specs/SGI/video_sync.txt]] - allows clients to query frame counts and wait on specific counts or divisor/remainders thereof
+ 1. for redirected windows, glXGetVideoSyncSGI returns the compositor frame count rather than the monitor frame count
+ 1. for redirected windows, glXWaitVideoSyncSGI will block until the compositor frame count satisfies the specified conditions
+ * [[OML_sync_control|http://www.opengl.org/registry/specs/OML/glx_sync_control.txt]] - combines the above and adds the notion of a "swap count" and frame timestamp, allowing applications to closely monitor their performance and swap frequency
+ 1. for redirected windows, MSC represents the compositor frame count; likewise UST indicates the time when the compositor last generated a frame
+ 1. for redirected windows, SBC could be incremented when the compositor copies a buffer rather than when the buffer is copied from back to front
+ * [[OML_swap_method|http://www.opengl.org/registry/specs/OML/glx_swap_method.txt]] - exposes swap method (whether copy, exchange or undefined) to the FBconfig
+ 1. the way X and compositors work now make it hard to report anything other than 'unknown' as the swap method; page flipping is opportunistic, and exchange is difficult for windows (redirected or not) due to reparenting by window managers
+ * [[SGIX_swap_group|http://www.opengl.org/registry/specs/SGIX/swap_group.txt]]/[[NV_swap_group|http://www.opengl.org/registry/specs/NV/glx_swap_group.txt]] - allow clients to swap in a synchronized manner
+ 1. for redirected windows, swap groups could depend on compositor copies (see SBC count above)
+ * [[SGIX_swap_barrier|http://www.opengl.org/registry/specs/SGIX/swap_barrier.txt]] - controls swap group behavior
+ 1. should be unaffected
+ * TBD_swap_control - allow selection triple/N buffering
+ 1. needs to be defined, can fail if driver can't handle requested number of buffers
+ * [[INTEL_swap_event|http://people.freedesktop.org/~jbarnes/swapbufferevent.txt]] - deliver swap information to clients after a swap completes, useful for integrating swap based throttling into client event loops
+
+## Compositor extensions
+
+To support the above, feedback from the currently active compositor is necessary. Compositor<->client protocol is needed for:
+
+ * [[CompositeNotifyPixmapCopied|CompositeNotifyPixmapCopied]](pixmap) - compositor notifies server that pixmap has been copied, unblocks clients blocked on swapping or rendering to front
+ * should be doable with xsync already, as a defined protocol between the compositor and clients
+ * [[NotifyPixmapReady|NotifyPixmapReady]](pixmap) - server notifies compositor that an application has a new frame is ready (e.g. after a glXSwapBuffers)
+ * should be similar to a damage event, maybe damage is sufficient?
+ * [[CompositeNotifyFrameDone|CompositeNotifyFrameDone]] - compositor notifies client that the compositor has finished drawing a new frame; clients blocked on frame related events can continue.
+ * again, should be doable with xsync
+
+## Triple buffering
+
+Triple buffering means different things to different people. For convenience, we list the types we're concerned about for this discussion here. All have a high memory cost and should generally only be enabled for a small number of clients at a time.
+
+ 1. compositor based - compositor keeps a private copy of each application's front buffer; this means it always has a consistent, fully drawn pixmap to use for creating screen frames. glXSwapBuffers updates the redirected front and notifies the compositor a new one is ready to pick up as its private copy.
+ * good for avoiding ugly partial drawing artifacts
+ 1. server based - server keeps last ready client buffer around and returns available buffers to the client after a glXSwapBuffers occurs
+ * can help keep clients busy at the cost of extra memory (good to keep frame rates up while preserving vblank sync'd swapping)
+ 1. client based - server returns 3 buffers to the client, which somehow requests copies between various of them using glXSwapBuffers
+ * like (2) but totally client side.
+Another factor for triple buffering is how to handle extra frames. If frames are rendered faster than can be displayed, some applications may want to discard the extra frames, while others may want to queue them (and likely be throttled).
+
+
+## New code
+
+All of this means new DRI2, display server and compositor code, but it should be doable. In particular we may want:
+
+ * DRI2 proto for waiting on a given swap or frame count
+ * DRI2 swapbuffers support for frame count & divisor/remainder delayed swaps
+ * new server code for handling swap groups
+ * new server code for handling indirect clients doing frame count or swap buffer count waits
+
+### Implementation: SGI_swap_control for the X server
+
+The SGI_swap_control extension allows applications to control their glXSwapBuffers frequency. The glXSwapIntervalSGI call lets clients specify how frequently, in frames, their buffer swaps should occur. Implementing this requires server support, since with DRI2 the server is responsible for performing swaps. The basic flow is as follows:
+
+ 1. When an application calls glXSwapBuffers, a swap is scheduled in the server for the current frame count plus the interval count (though if the swap is to be a page flip, it's scheduled to be scheduled, since flips occur at the next vblank after being queued).
+ 1. The server calls into the DDX driver's ->[[ScheduleSwap|ScheduleSwap]] routine, which is responsible for requesting a kernel frame event for when the swap should occur
+ 1. Control is returned to the client immediately
+ 1. Note: any futher GLX calls requiring a GLX context to be bound will block until the swap completes
+ 1. When the DDX receives the associated frame event, it will perform all the scheduled swap
+ 1. The swap count will increase
+ 1. The client will be unblocked if necessary
+
+### Implementation: SGI_video_sync for the X server
+
+SGI_video_sync gives clients control over their framerate by exposing the frame count and allowing apps to wait on a given frame count. glXGetVideoSyncSGI returns the current frame count for the display the drawable is on, and glXWaitVideoSyncSGI allows a client to block until a given frame count is reached on its drawable's display. Flow in the server & client for glXGetVideoSyncSGI direct rendered case:
+
+ 1. Client calls glXGetVideoSyncSGI
+ 1. Mesa code receives the request and turns it into a DRI2GetMSCReq protocol request
+ 1. display server receives the request and calls DDX driver's ->GetMSC hook
+ 1. DDX driver returns frame count based on drawable location (count is returned for the CRTC with the greatest intersection with the drawable), or 0 if the drawable is currently offscreen (the GLX spec should be updated to reflect this), note this could also return an error ([[BadDrawable|BadDrawable]] possibly).
+ 1. display server returns a DRI2GetMSCReply with the current MSC count to the client
+Flow for glXWaitVideoSyncSGI direct rendered case:
+
+ 1. Client calls glXWaitVideoSyncSGI
+ 1. Mesa code receives the request and turns it into a DRI2WaitMSCReq protocol request
+ 1. display server receives the request and calls DDX driver's ->ScheduleWaitMSC hook which is responsible for requesting a kernel frame event for the specified [[WaitVideoSync|WaitVideoSync]] values
+ 1. DDX blocks the client until the requested frame is received (which could be immediate if the frame has already passed)
+ 1. DDX receives the event and unblocks the client, calling into the server to complete the reply
+ 1. display server returns a DRI2WaitMSCReply with current MSC, SBC to the client
+Again, if the window is redirected or the drawable is offscreen, the client won't block; an MSC reply with all zeros will be returned (again, could also return [[BadDrawable|BadDrawable]]).
+
+
+### Testing
+
+The code for the above is present in several repos and patches:
+
+ 1. kernel - 2.6.33-rc
+ 1. libdrm - 2.4.17 or newer
+ 1. dri2proto - 2.2 or newer
+ 1. glproto - 1.4.11 or newer
+ 1. mesa - master branch (will be in 7.8)
+ 1. xserver - master branch (will be in 1.9)
+ 1. xf86-video-intel - master branch (will be in 2.11)
+See [[Graphics stack git development|http://wiki.x.org/wiki/Development/git]] for information on how to build a stack with the above.
+
+The direct rendered cases outlined in the implementation notes above are complete, but there's a bug in the async glXSwapBuffers that sometimes causes clients to hang after swapping rather than continue.
+
+
+#### Open issues
+
+This implementation does not guarantee tear free drawing in the non-composited, non-fullscreen (flip) case, but does provide the throttling feature implicit in SGI_swap_control. For a tear-free guarantee, the application must be performing full screen swaps eligible for page filpping or a compositor using page flipping must be present and the application's window redirected. Alternately, the driver can synchronize its blit activity with the scanout position to avoid tearing. However this approach can negatively affect performance.
+
+The implementation also needs screen from the the compositor in the case of redirected windows, so it can request a vblank event from the kernel for the correct CRTC.
+
+
+# Using the new code
+
+Some Linux applications may assume that glXSwapBuffers blocks until the swap has completed. With the above code, that's no longer the case (it's also not the case on other GLX implementations, so it's a non-portable assumption).
+
+Similarly, some code may assume no throttling of swaps occurs. Now this behavior can be controlled with glXSwapInterval or through using glXSwapBuffersMscOML.
+
+See below for specific use cases.
+
+
+## Avoiding tearing
+
+Tearing occurs when blits or scanout buffer changes aren't synchronized with vertical retrace, causing two frames to appear adjacent to one another in the vertical (see [[Screen_tearing|http://en.wikipedia.org/wiki/Screen_tearing]] for an example). Since vertical blank periods are often very short (especially in LCD panels) and CPU scheduling between processes can be highly variable, simply blocking until a vertical retrace completes (e.g. using glXWaitForMscOML or glXWaitVideoSyncSGI) is not a reliable way of avoiding tearing.
+
+Some DDX drivers provide an option to synchronize DRI2CopyRegion requests (generated by glXCopySubBufferMESA calls and some paths in glXSwapBuffers calls); this can prevent tearing at a potentially significant performance cost since some GPUs will stall until the vertical retrace is outside the region to be copied.
+
+Another way to avoid tearing, assuming you're running a kernel with page flipping support, is to run your application full screen or under a compositing manager. If your app or compositing manager uses glXSwapBuffers to display new frames (as opposed to using glXCopySubBufferMESA without driver vertical retrace synchronization), the DDX and server should coordinate to flip whole new scanout buffers through the kernel, which synchronizes the flip to vertical retrace.
+
+
+## Throttling rendering
+
+Use SGI_video_sync, SGI_swap_control, OML_sync_control or ARB_sync extensions to render at a constant rate. Depending on the application, it may be appropriate to throttle your rendering to a factor of the refresh rate (using SGI_swap_control or OML_sync_control) if you can't keep up with it; this avoids a variable frame rate which can be visually distracting. However, for many animations, especially those simulating physical activities (e.g. a bounce or slide), maintaining refresh rate rendering is critical to visual quality, so reducing quality may be a better option than dropping frames or displaying every other frame in those cases where your application can't keep up with the refresh rate.
+
+
+## Controlling buffer swap behavior
+
+Use a TBD_swap_method_control to select triple buffering, blit or exchange methods.
+
+
+## Mutter
+
+* When memory isn't a concern:
+ * Triple buffer all composited applications:
+ * 1) busy being used as part of the compositors next render.
+ * 2) a front buffer for the application to queue render commands against; swaping with 3 when done.
+ * 3) a back buffer waiting to be picked up by the compositor, and swap with 1)
+ * Ideally the compositor never has to wait to pick up the applications next front buffer, and no copying is required.
+ * use the SGI_swap_control extension to set glXSwapInterval (1) in applications and compositor.
+ * compositor "video frame periods" are defined - as normal - so we flip at the first vblank after a render completes.
+ * Allow the compositor to drive the video frame period of redirected applications (I.e. consider the compositor to be a pseudo display for redirected drawables)
+ * (Lets assume the compositor is rendering to multiple windows to cover multiple displays - because the full size of the monitors exceeds the GPU render target limits)
+ * The compositor can use a swap group to ensure each of these windows presents in sync.
+ * A new fence/sync object like extension could be implemented that allows the compositor to say: "when my sync group becomes ready and swaps, please notify all these composited-drawables of a video frame progression".
+ * I'm not sure what the best way to link composited drawables to a compositor are a.t.m
+ * when the compositors group swap completes I imagine it would be possible to avoid having to wait for the compositor to be scheduled to send a DRI2 request to the X server, to send events to clients. I.e. instead of using new DRI2 protocol to send the notification can it not be dealt with by the drm driver that would presumably know when the compositors group swap completes, it would then know to increment the video frame period for some other set of associated composited-drawables and if they pass their designated swap interval they can be unblocked. (or if we have asynchronous swap buffers - see below - an event could be sent by writing to the device file)
+ * asynchronous glXSwapBuffers and swap-buffers-complete events.
+ * Although the applications shouldn't run ahead of the compositor, since there's no point rendering more frames than the compositor can keep up with, applications also shouldn't be blocked from queueing up commands for the next frame. If we had asynchronous swapping + poll-able event notifications for swap-completion the application could stop itself painting when it knows it is two frames ahead of the compositor.
+
+### Misc notes (rib Thu Sep 3 20:40:43 BST 2009)
+
+* It seems that composited apps should never need to know about real world screen vblank issues, that's only relevant to non-redirected windows including the compositor's. When dealing with a redirected window it seems it would be acceptable to come up with an entirely fake number for all existing extensions that care about vblanks. Somehow tying it to the render/swap-complete of the current compositor seems reasonable.
+* Assuming we have the compositor generating a fake swap interval as above, and the compositor itself is responsible for synchronizing all windows it's responsible for it seems like all the swap group related extensions may just work.
+ * Walking through a hypothetical example of a composited flightgear simulator across multiple monitors seems to add up...
+ * Lets say the compositor has two windows across two monitors (assuming it would exceed render target limits to just have one)
+ * Say flightgear also creates two windows for the same reason and wants to use a swap group to ensure they get presented at the same time.
+ * Assume the compositor is itself also using a swap group to ensure all it's windows get presented at the same time and it drives the video frame period according to it own swap group becoming ready and completing.
+ * If the first flightgear window is drawn too and a swap issued it becomes ready but doesn't actually swap yet (so the compositor wont see it)
+ * The compositor may at this point complete it's current frame and swap and the latest flightgear window won't be shown.
+ * The second flightgear window can be drawn too and a swap issued which makes the group ready so now both windows are swapped and become available to the compositor.
+ * The compositor will pick up the new window contents and since it is itself using a a swap group both windows will be presented in sync.
+* I can't see how GLX_OML_swap_method can be supported at all, given that GLX doesn't know ahead of time if any glx window will be later redirected?
+
+## Reference
+
+For reference:
+
+ * [[Apple GL Programming Guide|http://developer.apple.com/mac/library/documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_intro/opengl_intro.html]] - covers best practices for GL programmers in Apple's composited environment
+ * [[Overview of triple buffering from a gamer perspective|http://www.ocworkbench.com/2006/articles/DXtweaker/]]
+ * [[Android Developer's Guide|http://developer.android.com/guide/index.html]]
+ * [[DirectX Programmer's Guide|http://msdn.microsoft.com/en-us/library/bb173024(VS.85).aspx]] \ No newline at end of file
diff --git a/CompositeSwap.moin b/CompositeSwap.moin
deleted file mode 100644
index fc5552c..0000000
--- a/CompositeSwap.moin
+++ /dev/null
@@ -1,192 +0,0 @@
-== Issues ==
-X and GL applications need to control how their data is displayed for several reasons:
- * preventing distracting artifacts - ugly "tearing" or partial drawing for example
- * smoothness - constant, predictable frame rates are a requirement for animation, video and high end simulation programs
- * performance - apps need to know how well they're keeping up with their desired frame rate so they can throttle back or simplify drawing as needed
-Plain X doesn't have many ways of doing the above (it mostly assumes immediate mode drawing to the visible frame buffer), but GLX provides many extensions related to handling the actual display of buffers on the user visible screen, these extensions need to be supported in DRI2 for the Linux graphics stack to really shine.
-
-There are also issues related to memory consumption, swap behavior, and performance that can be addressed:
-
-=== Memory savings ===
- * memory consumption could be reduced if the private back/front pair was reduced to just a private back with the compositor copy acting as front (though there are issues with front buffer rendering in this case).
- * This can be implemented purely client side through the addition of compositor<->client protocols.
- * it could also be reduced by throwing away the private back buffer in between frame rendering.
- * This can happen automatically with some additions to the DRI2 protocol and client/server behavior.
-
-=== Performance ===
- * performance could be significantly improved on low bandwidth platform if buffer swaps could be simple pointer exchanges when windowed (similar to the way page flips work for full screen applications)
- * requires window managers to draw decorations independent of application window (i.e. exchange is only possible if front & back window pixmaps are the same size)
- * page flipping for full screen swaps is also a significant win on bandwidth limited platforms
-
-=== Behavior ===
- * some applications want to control how buffer swaps occur (e.g. to preserve back buffer contents after a swap)
- * triple buffering should be available to applications that need it, with configurable behavior for discard vs. queue if the buffers are rendered faster than can be displayed
-
-== OpenGL and GLX swap and throttling related extensions ==
-
-Under a compositor, the behavior of these routines could change, or additional compositor<->client protocol added to support similar behavior. Changes noted below, though in general "video frame" should be thought of as a virtualized compositor frame rate rather than a monitor refresh (e.g. the compositor may report 60fps to applications even though it only updates the screen when recompositing is needed):
-
- * [[http://www.opengl.org/registry/specs/SGI/swap_control.txt|SGI_swap_control]] - controls how frequently glXSwapBuffers swaps occur (in frames)
- 1. for redirected windows, interval is in compositor frames rather than monitor video frames
- * [[http://www.opengl.org/registry/specs/SGI/video_sync.txt|SGI_video_sync]] - allows clients to query frame counts and wait on specific counts or divisor/remainders thereof
- 1. for redirected windows, glXGetVideoSyncSGI returns the compositor frame count rather than the monitor frame count
- 1. for redirected windows, glXWaitVideoSyncSGI will block until the compositor frame count satisfies the specified conditions
- * [[http://www.opengl.org/registry/specs/OML/glx_sync_control.txt|OML_sync_control]] - combines the above and adds the notion of a "swap count" and frame timestamp, allowing applications to closely monitor their performance and swap frequency
- 1. for redirected windows, MSC represents the compositor frame count; likewise UST indicates the time when the compositor last generated a frame
- 1. for redirected windows, SBC could be incremented when the compositor copies a buffer rather than when the buffer is copied from back to front
- * [[http://www.opengl.org/registry/specs/OML/glx_swap_method.txt|OML_swap_method]] - exposes swap method (whether copy, exchange or undefined) to the FBconfig
- 1. the way X and compositors work now make it hard to report anything other than 'unknown' as the swap method; page flipping is opportunistic, and exchange is difficult for windows (redirected or not) due to reparenting by window managers
- * [[http://www.opengl.org/registry/specs/SGIX/swap_group.txt|SGIX_swap_group]]/[[http://www.opengl.org/registry/specs/NV/glx_swap_group.txt|NV_swap_group]] - allow clients to swap in a synchronized manner
- 1. for redirected windows, swap groups could depend on compositor copies (see SBC count above)
- * [[http://www.opengl.org/registry/specs/SGIX/swap_barrier.txt|SGIX_swap_barrier]] - controls swap group behavior
- 1. should be unaffected
- * TBD_swap_control - allow selection triple/N buffering
- 1. needs to be defined, can fail if driver can't handle requested number of buffers
- * [[http://people.freedesktop.org/~jbarnes/swapbufferevent.txt|INTEL_swap_event]] - deliver swap information to clients after a swap completes, useful for integrating swap based throttling into client event loops
-
-== Compositor extensions ==
-
-To support the above, feedback from the currently active compositor is necessary. Compositor<->client protocol is needed for:
- * CompositeNotifyPixmapCopied(pixmap) - compositor notifies server that pixmap has been copied, unblocks clients blocked on swapping or rendering to front
- * should be doable with xsync already, as a defined protocol between the compositor and clients
- * NotifyPixmapReady(pixmap) - server notifies compositor that an application has a new frame is ready (e.g. after a glXSwapBuffers)
- * should be similar to a damage event, maybe damage is sufficient?
- * CompositeNotifyFrameDone - compositor notifies client that the compositor has finished drawing a new frame; clients blocked on frame related events can continue.
- * again, should be doable with xsync
-
-== Triple buffering ==
-
-Triple buffering means different things to different people. For convenience, we list the types we're concerned about for this discussion here. All have a high memory cost and should generally only be enabled for a small number of clients at a time.
-
- 1. compositor based - compositor keeps a private copy of each application's front buffer; this means it always has a consistent, fully drawn pixmap to use for creating screen frames. glXSwapBuffers updates the redirected front and notifies the compositor a new one is ready to pick up as its private copy.
- * good for avoiding ugly partial drawing artifacts
- 1. server based - server keeps last ready client buffer around and returns available buffers to the client after a glXSwapBuffers occurs
- * can help keep clients busy at the cost of extra memory (good to keep frame rates up while preserving vblank sync'd swapping)
- 1. client based - server returns 3 buffers to the client, which somehow requests copies between various of them using glXSwapBuffers
- * like (2) but totally client side.
-
-Another factor for triple buffering is how to handle extra frames. If frames are rendered faster than can be displayed, some applications may want to discard the extra frames, while others may want to queue them (and likely be throttled).
-
-== New code ==
-
-All of this means new DRI2, display server and compositor code, but it should be doable. In particular we may want:
- * DRI2 proto for waiting on a given swap or frame count
- * DRI2 swapbuffers support for frame count & divisor/remainder delayed swaps
- * new server code for handling swap groups
- * new server code for handling indirect clients doing frame count or swap buffer count waits
-
-=== Implementation: SGI_swap_control for the X server ===
-
-The SGI_swap_control extension allows applications to control their glXSwapBuffers frequency. The glXSwapIntervalSGI call lets clients specify how frequently, in frames, their buffer swaps should occur. Implementing this requires server support, since with DRI2 the server is responsible for performing swaps. The basic flow is as follows:
- 1. When an application calls glXSwapBuffers, a swap is scheduled in the server for the current frame count plus the interval count (though if the swap is to be a page flip, it's scheduled to be scheduled, since flips occur at the next vblank after being queued).
- 1. The server calls into the DDX driver's ->ScheduleSwap routine, which is responsible for requesting a kernel frame event for when the swap should occur
- 1. Control is returned to the client immediately
- i. Note: any futher GLX calls requiring a GLX context to be bound will block until the swap completes
- 1. When the DDX receives the associated frame event, it will perform all the scheduled swap
- 1. The swap count will increase
- 1. The client will be unblocked if necessary
-
-=== Implementation: SGI_video_sync for the X server ===
-
-SGI_video_sync gives clients control over their framerate by exposing the frame count and allowing apps to wait on a given frame count. glXGetVideoSyncSGI returns the current frame count for the display the drawable is on, and glXWaitVideoSyncSGI allows a client to block until a given frame count is reached on its drawable's display. Flow in the server & client for glXGetVideoSyncSGI direct rendered case:
- 1. Client calls glXGetVideoSyncSGI
- 1. Mesa code receives the request and turns it into a DRI2GetMSCReq protocol request
- 1. display server receives the request and calls DDX driver's ->GetMSC hook
- 1. DDX driver returns frame count based on drawable location (count is returned for the CRTC with the greatest intersection with the drawable), or 0 if the drawable is currently offscreen (the GLX spec should be updated to reflect this), note this could also return an error (BadDrawable possibly).
- 1. display server returns a DRI2GetMSCReply with the current MSC count to the client
-
-Flow for glXWaitVideoSyncSGI direct rendered case:
- 1. Client calls glXWaitVideoSyncSGI
- 1. Mesa code receives the request and turns it into a DRI2WaitMSCReq protocol request
- 1. display server receives the request and calls DDX driver's ->ScheduleWaitMSC hook which is responsible for requesting a kernel frame event for the specified WaitVideoSync values
- 1. DDX blocks the client until the requested frame is received (which could be immediate if the frame has already passed)
- 1. DDX receives the event and unblocks the client, calling into the server to complete the reply
- 1. display server returns a DRI2WaitMSCReply with current MSC, SBC to the client
-Again, if the window is redirected or the drawable is offscreen, the client won't block; an MSC reply with all zeros will be returned (again, could also return BadDrawable).
-
-=== Testing ===
-
-The code for the above is present in several repos and patches:
- 1. kernel - 2.6.33-rc
- 1. libdrm - 2.4.17 or newer
- 1. dri2proto - 2.2 or newer
- 1. glproto - 1.4.11 or newer
- 1. mesa - master branch (will be in 7.8)
- 1. xserver - master branch (will be in 1.9)
- 1. xf86-video-intel - master branch (will be in 2.11)
-
-See [[http://wiki.x.org/wiki/Development/git|Graphics stack git development]] for information on how to build a stack with the above.
-
-The direct rendered cases outlined in the implementation notes above are complete, but there's a bug in the async glXSwapBuffers that sometimes causes clients to hang after swapping rather than continue.
-
-==== Open issues ====
-
-This implementation does not guarantee tear free drawing in the non-composited, non-fullscreen (flip) case, but does provide the throttling feature implicit in SGI_swap_control. For a tear-free guarantee, the application must be performing full screen swaps eligible for page filpping or a compositor using page flipping must be present and the application's window redirected. Alternately, the driver can synchronize its blit activity with the scanout position to avoid tearing. However this approach can negatively affect performance.
-
-The implementation also needs screen from the the compositor in the case of redirected windows, so it can request a vblank event from the kernel for the correct CRTC.
-
-= Using the new code =
-
-Some Linux applications may assume that glXSwapBuffers blocks until the swap has completed. With the above code, that's no longer the case (it's also not the case on other GLX implementations, so it's a non-portable assumption).
-
-Similarly, some code may assume no throttling of swaps occurs. Now this behavior can be controlled with glXSwapInterval or through using glXSwapBuffersMscOML.
-
-See below for specific use cases.
-
-== Avoiding tearing ==
-
-Tearing occurs when blits or scanout buffer changes aren't synchronized with vertical retrace, causing two frames to appear adjacent to one another in the vertical (see [[http://en.wikipedia.org/wiki/Screen_tearing|Screen_tearing]] for an example). Since vertical blank periods are often very short (especially in LCD panels) and CPU scheduling between processes can be highly variable, simply blocking until a vertical retrace completes (e.g. using glXWaitForMscOML or glXWaitVideoSyncSGI) is not a reliable way of avoiding tearing.
-
-Some DDX drivers provide an option to synchronize DRI2CopyRegion requests (generated by glXCopySubBufferMESA calls and some paths in glXSwapBuffers calls); this can prevent tearing at a potentially significant performance cost since some GPUs will stall until the vertical retrace is outside the region to be copied.
-
-Another way to avoid tearing, assuming you're running a kernel with page flipping support, is to run your application full screen or under a compositing manager. If your app or compositing manager uses glXSwapBuffers to display new frames (as opposed to using glXCopySubBufferMESA without driver vertical retrace synchronization), the DDX and server should coordinate to flip whole new scanout buffers through the kernel, which synchronizes the flip to vertical retrace.
-
-== Throttling rendering ==
-
-Use SGI_video_sync, SGI_swap_control, OML_sync_control or ARB_sync extensions to render at a constant rate. Depending on the application, it may be appropriate to throttle your rendering to a factor of the refresh rate (using SGI_swap_control or OML_sync_control) if you can't keep up with it; this avoids a variable frame rate which can be visually distracting. However, for many animations, especially those simulating physical activities (e.g. a bounce or slide), maintaining refresh rate rendering is critical to visual quality, so reducing quality may be a better option than dropping frames or displaying every other frame in those cases where your application can't keep up with the refresh rate.
-
-== Controlling buffer swap behavior ==
-
-Use a TBD_swap_method_control to select triple buffering, blit or exchange methods.
-
-== Mutter ==
-
- * When memory isn't a concern:
- * Triple buffer all composited applications:
- * 1) busy being used as part of the compositors next render.
- * 2) a front buffer for the application to queue render commands against; swaping with 3 when done.
- * 3) a back buffer waiting to be picked up by the compositor, and swap with 1)
- * Ideally the compositor never has to wait to pick up the applications next front buffer, and no copying is required.
- * use the SGI_swap_control extension to set glXSwapInterval (1) in applications and compositor.
- * compositor "video frame periods" are defined - as normal - so we flip at the first vblank after a render completes.
- * Allow the compositor to drive the video frame period of redirected applications (I.e. consider the compositor to be a pseudo display for redirected drawables)
- * (Lets assume the compositor is rendering to multiple windows to cover multiple displays - because the full size of the monitors exceeds the GPU render target limits)
- * The compositor can use a swap group to ensure each of these windows presents in sync.
- * A new fence/sync object like extension could be implemented that allows the compositor to say: "when my sync group becomes ready and swaps, please notify all these composited-drawables of a video frame progression".
- * I'm not sure what the best way to link composited drawables to a compositor are a.t.m
- * when the compositors group swap completes I imagine it would be possible to avoid having to wait for the compositor to be scheduled to send a DRI2 request to the X server, to send events to clients. I.e. instead of using new DRI2 protocol to send the notification can it not be dealt with by the drm driver that would presumably know when the compositors group swap completes, it would then know to increment the video frame period for some other set of associated composited-drawables and if they pass their designated swap interval they can be unblocked. (or if we have asynchronous swap buffers - see below - an event could be sent by writing to the device file)
- * asynchronous glXSwapBuffers and swap-buffers-complete events.
- * Although the applications shouldn't run ahead of the compositor, since there's no point rendering more frames than the compositor can keep up with, applications also shouldn't be blocked from queueing up commands for the next frame. If we had asynchronous swapping + poll-able event notifications for swap-completion the application could stop itself painting when it knows it is two frames ahead of the compositor.
-
-=== Misc notes (rib Thu Sep 3 20:40:43 BST 2009) ===
-
- * It seems that composited apps should never need to know about real world screen vblank issues, that's only relevant to non-redirected windows including the compositor's. When dealing with a redirected window it seems it would be acceptable to come up with an entirely fake number for all existing extensions that care about vblanks. Somehow tying it to the render/swap-complete of the current compositor seems reasonable.
- * Assuming we have the compositor generating a fake swap interval as above, and the compositor itself is responsible for synchronizing all windows it's responsible for it seems like all the swap group related extensions may just work.
- * Walking through a hypothetical example of a composited flightgear simulator across multiple monitors seems to add up...
- * Lets say the compositor has two windows across two monitors (assuming it would exceed render target limits to just have one)
- * Say flightgear also creates two windows for the same reason and wants to use a swap group to ensure they get presented at the same time.
- * Assume the compositor is itself also using a swap group to ensure all it's windows get presented at the same time and it drives the video frame period according to it own swap group becoming ready and completing.
- * If the first flightgear window is drawn too and a swap issued it becomes ready but doesn't actually swap yet (so the compositor wont see it)
- * The compositor may at this point complete it's current frame and swap and the latest flightgear window won't be shown.
- * The second flightgear window can be drawn too and a swap issued which makes the group ready so now both windows are swapped and become available to the compositor.
- * The compositor will pick up the new window contents and since it is itself using a a swap group both windows will be presented in sync.
-
- * I can't see how GLX_OML_swap_method can be supported at all, given that GLX doesn't know ahead of time if any glx window will be later redirected?
-
-== Reference ==
-
-For reference:
- * [[http://developer.apple.com/mac/library/documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_intro/opengl_intro.html|Apple GL Programming Guide]] - covers best practices for GL programmers in Apple's composited environment
- * [[http://www.ocworkbench.com/2006/articles/DXtweaker/|Overview of triple buffering from a gamer perspective]]
- * [[http://developer.android.com/guide/index.html|Android Developer's Guide]]
- * [[http://msdn.microsoft.com/en-us/library/bb173024(VS.85).aspx|DirectX Programmer's Guide]]
diff --git a/ConfigurationForDevelopers.mdwn b/ConfigurationForDevelopers.mdwn
new file mode 100644
index 0000000..98f2347
--- /dev/null
+++ b/ConfigurationForDevelopers.mdwn
@@ -0,0 +1,101 @@
+
+
+# How to make a driver configurable
+
+[[ToDo|ToDo]]
+
+
+# How to add a new configuration option
+
+Steps:
+
+1. Define the new option
+1. Add the option to the common option pool (optional)
+ 1. Add the new option to common/xmlpool/t_options.h
+ 1. Update common/xmlpool/options.h
+1. Add the new option to `__driConfigOptions`
+1. Query the option in a convenient place
+
+## 1. Define the new option
+
+Configuration options are described to the driver and external configuration tools in XML. A set of macros in src/mesa/drivers/dri/common/xmlpool.h helps building such descriptions.
+
+An option description always starts with `DRI_CONF_OPT_BEGIN` or `DRI_CONF_OPT_BEGIN_V` depending on whether you intend to limit the valid range of option values. These macros have 3 or 4 parameters respecitively: _name_, _type_, _default value_ and optionally _valid range_.
+
+An option description ends with `DRI_CONF_OPT_END`. Inbetween you can place verbal descriptions of your options in any number of languages. In the simplest case a description looks like this: `DRI_CONF_DESC(lang,"text")`.
+
+**Note:** Descriptions must be UTF-8 encoded.
+
+If you are describing enum type options then you start a description with `DRI_CONF_DESC_BEGIN(lang,"text")` and end it with `DRI_CONF_DESC_END`. Inbetween you can place descriptions of different values of the enum option like `DRI_CONF_ENUM(value,"text")`.
+
+For enum options it is recommended that you also define macros to give option values symbolic names to be used in the driver.
+
+
+## 2. Add the option to the common option pool (optional)
+
+It is recommended that new options that are likely to be used by more than one driver are added to the common pool of configuration options. This makes maintainance easier and increases the chances of the option description being translated to more languages.
+
+
+### 2.1. Add the new option to common/xmlpool/t_options.h
+
+Common options are defined in common/xmlpool/t_options.h. This file is not directly used by drivers, it is only a template containing macros with option definitions and their English descriptions. There is a Python script that generates common/xmlpool/options.h by filling in all available translations.
+
+You add an option by defining a macro that expands to the entire option description as outlined in the previous section. In order to get your option description translated to other languages, translatable strings must be wrapped in `gettext(...)`. You may choose to make the default value a parameter of this macro so that the driver can choose an appropriate default value. For some options it may also make sense to make the valid range of values a parameter.
+
+
+### 2.2. Update common/xmlpool/options.h
+
+Option definitions in t_options.h are not directly available to drivers. You need to update common/xmlpool/options.h. This is done automatically by running `make` in common/xmlpool. The actual work is done by a Python script, so you need Python installed on your system.
+
+Now the option will have only an English description. It's the translators job to update the translations. If your native language is not English then you may want to add a translation for your native language yourself. See Section _How to translate option descriptions_ below for details.
+
+Finally you should commit the new common/xmlpool/t_options.h and common/xmlpool/options.h to CVS.
+
+
+## 3. Add the new option to __driConfigOptions
+
+In order to inform the driver and external configuration tools about the new option it has to be added to the XML document that advertises the driver's configuration options. It is stored in the global variable `__driConfigOptions` which is usually found in _driver__screen.c or _driver__xmesa.c.
+
+If you added the option to the common pool of options then you just use the macro defined there. Otherwise you fill in the entire option description here. Related options are grouped in sections in `__driConfigOptions`. Either choose an appropriate section or add a new one if the new options doesn't fit in an existing one.
+
+Finally, don't forget to increment the value of `__driNConfigOptions` after adding a new option. If you do, the driver will output an error message that reminds you.
+
+
+## 4. Query the option in a convenient place
+
+Now you can query the option value. This must happen after `driParseOptionInfo` and `driParseConfigFiles` have been called. This means that you can't query an option before context creation. There are three functions `driQueryOption[bif]` for querying options for boolean, integer and floating point options respectively. Enum options are queried like integer options.
+
+The query functions take two arguments, a _pointer to the option cache_ in the driver's context record and the _name_ of the option to be queried as a string. If you need the option value very frequently then it is best to query the option once during context creation and store its value in the driver's context record.
+
+If you try to query an option that is not available or has a different type then an assertion fails. Therefore common code that is linked to different drivers should first check if an option is really available. This is done with `driCheckOption`. It takes three arguments, a _pointer to the option cache_, the _option name_ and the _type_. It returns a boolean indicating if an option with matching name and type is available.
+
+
+# How to translate option descriptions
+
+Option descriptions in the common option pool in common/xmlpool are managed by GNU gettext. This should make it easy to manage translations even for translators without programming experience. There is one _.po_-file for each language for which there is a translation. If there is a translation for your language and you just want to update it for new or changed options or fix a typo somewhere, you can skip the next section and continue with _Updating existing translations_. Otherwise read on here.
+
+
+## Adding new translations
+
+The Makefile common/xmlpool/Makefile is used to manage translations of option descriptions. Near the start of the file, below a longish comment with instructions, there is a variable definition looking like this:
+
+
+[[!format txt """
+POS=de.po
+"""]]
+... and hopefully many more languages soon. Add a new _.po_-file for your language here. For example, if you want to make a french translation, add `fr.po`:
+
+
+[[!format txt """
+POS=de.po fr.po
+"""]]
+
+## Updating existing translations
+
+Run `make po` in common/xmlpool. This will update existing _.po_-files from common/xmlpool/t_options.h or initialize new ones for added languages. Now you can edit the _.po_-file for your language, fixing fuzzy translations or translating new options. I'm assuming that you're familiar with GNU gettext and the _.po_-file syntax.
+
+When you're done, save the file and run `make` in common/xmlpool. This will update common/xmlpool/options.h with new translations. Finally you can recompile the DRI drivers. After that they will contain option descriptions with your updated translations. When you run `DriConf` in the right locale you should see your updated option descriptions.
+
+If you have CVS write access, you can commit your updated _.po_-file and common/xmlpool/options.h to CVS. Otherwise send the _.po_-file to [[dri-devel@lists.sourceforge.net|mailto:dri-devel@lists.sourceforge.net]] and someone will take care of updating it in CVS.
+
+-- [[FelixKuehling|FelixKuehling]]
diff --git a/ConfigurationForDevelopers.moin b/ConfigurationForDevelopers.moin
deleted file mode 100644
index 9dd3f68..0000000
--- a/ConfigurationForDevelopers.moin
+++ /dev/null
@@ -1,90 +0,0 @@
-= How to make a driver configurable =
-
-ToDo
-
-= How to add a new configuration option =
-
-Steps:
-
- 1. Define the new option
- 2. Add the option to the common option pool (optional)
- 1. Add the new option to common/xmlpool/t_options.h
- 2. Update common/xmlpool/options.h
- 3. Add the new option to {{{__driConfigOptions}}}
- 4. Query the option in a convenient place
-
-== 1. Define the new option ==
-
-Configuration options are described to the driver and external configuration tools in XML. A set of macros in src/mesa/drivers/dri/common/xmlpool.h helps building such descriptions.
-
-An option description always starts with {{{DRI_CONF_OPT_BEGIN}}} or {{{DRI_CONF_OPT_BEGIN_V}}} depending on whether you intend to limit the valid range of option values. These macros have 3 or 4 parameters respecitively: ''name'', ''type'', ''default value'' and optionally ''valid range''.
-
-An option description ends with {{{DRI_CONF_OPT_END}}}. Inbetween you can place verbal descriptions of your options in any number of languages. In the simplest case a description looks like this: {{{DRI_CONF_DESC(lang,"text")}}}.
-
-'''Note:''' Descriptions must be UTF-8 encoded.
-
-If you are describing enum type options then you start a description with {{{DRI_CONF_DESC_BEGIN(lang,"text")}}} and end it with {{{DRI_CONF_DESC_END}}}. Inbetween you can place descriptions of different values of the enum option like {{{DRI_CONF_ENUM(value,"text")}}}.
-
-For enum options it is recommended that you also define macros to give option values symbolic names to be used in the driver.
-
-== 2. Add the option to the common option pool (optional) ==
-
-It is recommended that new options that are likely to be used by more than one driver are added to the common pool of configuration options. This makes maintainance easier and increases the chances of the option description being translated to more languages.
-
-=== 2.1. Add the new option to common/xmlpool/t_options.h ===
-
-Common options are defined in common/xmlpool/t_options.h. This file is not directly used by drivers, it is only a template containing macros with option definitions and their English descriptions. There is a Python script that generates common/xmlpool/options.h by filling in all available translations.
-
-You add an option by defining a macro that expands to the entire option description as outlined in the previous section. In order to get your option description translated to other languages, translatable strings must be wrapped in {{{gettext(...)}}}. You may choose to make the default value a parameter of this macro so that the driver can choose an appropriate default value. For some options it may also make sense to make the valid range of values a parameter.
-
-=== 2.2. Update common/xmlpool/options.h ===
-
-Option definitions in t_options.h are not directly available to drivers. You need to update common/xmlpool/options.h. This is done automatically by running {{{make}}} in common/xmlpool. The actual work is done by a Python script, so you need Python installed on your system.
-
-Now the option will have only an English description. It's the translators job to update the translations. If your native language is not English then you may want to add a translation for your native language yourself. See Section ''How to translate option descriptions'' below for details.
-
-Finally you should commit the new common/xmlpool/t_options.h and common/xmlpool/options.h to CVS.
-
-== 3. Add the new option to __driConfigOptions ==
-
-In order to inform the driver and external configuration tools about the new option it has to be added to the XML document that advertises the driver's configuration options. It is stored in the global variable {{{__driConfigOptions}}} which is usually found in ''driver''_screen.c or ''driver''_xmesa.c.
-
-If you added the option to the common pool of options then you just use the macro defined there. Otherwise you fill in the entire option description here. Related options are grouped in sections in {{{__driConfigOptions}}}. Either choose an appropriate section or add a new one if the new options doesn't fit in an existing one.
-
-Finally, don't forget to increment the value of {{{__driNConfigOptions}}} after adding a new option. If you do, the driver will output an error message that reminds you.
-
-== 4. Query the option in a convenient place ==
-
-Now you can query the option value. This must happen after {{{driParseOptionInfo}}} and {{{driParseConfigFiles}}} have been called. This means that you can't query an option before context creation. There are three functions {{{driQueryOption[bif]}}} for querying options for boolean, integer and floating point options respectively. Enum options are queried like integer options.
-
-The query functions take two arguments, a ''pointer to the option cache'' in the driver's context record and the ''name'' of the option to be queried as a string. If you need the option value very frequently then it is best to query the option once during context creation and store its value in the driver's context record.
-
-If you try to query an option that is not available or has a different type then an assertion fails. Therefore common code that is linked to different drivers should first check if an option is really available. This is done with {{{driCheckOption}}}. It takes three arguments, a ''pointer to the option cache'', the ''option name'' and the ''type''. It returns a boolean indicating if an option with matching name and type is available.
-
-= How to translate option descriptions =
-
-Option descriptions in the common option pool in common/xmlpool are managed by GNU gettext. This should make it easy to manage translations even for translators without programming experience. There is one ''.po''-file for each language for which there is a translation. If there is a translation for your language and you just want to update it for new or changed options or fix a typo somewhere, you can skip the next section and continue with ''Updating existing translations''. Otherwise read on here.
-
-== Adding new translations ==
-
-The Makefile common/xmlpool/Makefile is used to manage translations of option descriptions. Near the start of the file, below a longish comment with instructions, there is a variable definition looking like this:
-
-{{{
-POS=de.po
-}}}
-
-... and hopefully many more languages soon. Add a new ''.po''-file for your language here. For example, if you want to make a french translation, add {{{fr.po}}}:
-
-{{{
-POS=de.po fr.po
-}}}
-
-== Updating existing translations ==
-
-Run {{{make po}}} in common/xmlpool. This will update existing ''.po''-files from common/xmlpool/t_options.h or initialize new ones for added languages. Now you can edit the ''.po''-file for your language, fixing fuzzy translations or translating new options. I'm assuming that you're familiar with GNU gettext and the ''.po''-file syntax.
-
-When you're done, save the file and run {{{make}}} in common/xmlpool. This will update common/xmlpool/options.h with new translations. Finally you can recompile the DRI drivers. After that they will contain option descriptions with your updated translations. When you run {{{DriConf}}} in the right locale you should see your updated option descriptions.
-
-If you have CVS write access, you can commit your updated ''.po''-file and common/xmlpool/options.h to CVS. Otherwise send the ''.po''-file to [[mailto:dri-devel@lists.sourceforge.net|dri-devel@lists.sourceforge.net]] and someone will take care of updating it in CVS.
-
--- FelixKuehling
diff --git a/ConfigurationInfrastructure.moin b/ConfigurationInfrastructure.mdwn
index 69bbccb..32762a7 100644
--- a/ConfigurationInfrastructure.moin
+++ b/ConfigurationInfrastructure.mdwn
@@ -1,65 +1,72 @@
-= Configuration Infrastructure =
-
-== Introduction ==
-
-Since 9th October 2003 the new configuration infrastructure is part of the main trunk of the DRI CVS repository. It introduces a consistent mechanism for configuring all DRI drivers using an XML-based configuration file. It further provides an interface for configuration GUIs to find out about the ConfigurationOptions of installed drivers. Option descriptions are available in multiple languages. The first GUI configuration tool that uses the new infrastructure is DriConf.
-
-DriConf is by far the easiest and most user-friendly way to edit the configuration. On the page ConfigurationOptions you find more detailed descriptions of common configuration options. If instead you prefer to edit the configuration file with a text editor, then read on. ConfigurationForDevelopers describes how to make drivers configurable and how to add new options to drivers. For those interested in the technical details there is a [[http://dri.freedesktop.org/~fxkuehl/driconf/dri_config_design_rev4.html|design document]].
-
-== System-wide and per-user configuration files ==
-
-There is a system-wide configuration file /etc/drirc that applies to all users. Those settings can be overridden by a user's configuration file $HOME/.drirc. Both files have exactly the same format.
-
-== Example for a single-headed setup ==
-
-Let's start with an example of a configuration file for a single-headed setup, where you have only one graphics card and one monitor installed.
-
-{{{
-<driconf>
- <device screen="0" driver="radeon">
- <application name="all">
- <!-- Always synchronize with vertical refresh to avoid tearing -->
- <option name="vblank_mode" value="3"/>
- </application>
- <application name="glxgears" executable="glxgears">
- <!-- glxgears should not synchronize with vertical refresh, show full fps -->
- <option name="vblank_mode" value="0"/>
- </application>
- <application name="tuxracer" executable="tuxracer">
- <!-- Tuxrace has some artifacts with hardware TCL -->
- <option name="tcl_mode" value="0"/>
- </application>
- </device>
-</driconf>
-}}}
-
-Comments start with <!-- and end with -->. Indentation is optional but makes the configuration file more readable. Each configuration file starts with <driconf> and ends with </driconf>.
-
-== Devices ==
-
-Between the <driconf> and </driconf> tags there can be a device section for each graphics device you have installed in your system. In the example there is only one device section. The opening tag contains two attributes "screen" and "driver". They are used to identify the device that this section applies to. In most cases only one of them should be necessary but specifying both doesn't hurt. "screen" gives the X screen number. On a single-headed display this is always 0. "driver" specifies the name of the 3D driver. At the time of this writing the following drivers support the configuration infrastructure:
-
- * mga (Matrox cards)
- * r128 (ATI Rage 128 and some Mobility chips)
- * radeon (ATI Radeon 7000, 7200, 7500 and some Mobility chips)
- * r200 (ATI Radeon 8500, 9000, 9200)
-
-If you are not sure which driver is the correct one for you, then you can find out with xdriinfo. If you type xdriinfo in the shell, you will get a list of all direct rendering capable screens with their drivers.
-
-== Applications ==
-
-In each device section there can be any number of application sections that contain the configuration of different applications. The opening tag can contain the attributes "name" and "executable". The name is merely a descriptive string. If no executable attribute is present then the section applies to all applications. Otherwise the section only applies to the specified application.
-
-'''Caution:''' The executable that you specify in the executable attribute may differ from what you type in the shell. For instance the command q3demo is a shell script. The actual executable that runs the game is called q3demo.x86.
-
-== Options ==
-
-Options are specified as empty element tags. This is indicated by the slash before the closing bracket. They have two attributes, "name" and "value". Their meaning should be obvious. The set of available options, their types and ranges of valid values depend on the driver and are subject to changes. Hopefully the most common change will be the addition of new options. But sometimes options may be removed or replaced by different options with different semantics.
-
-An up-to-date description of available options can be obtained with the program xdriinfo, which is included in the DRI CVS repository and in recent binary snapshots. In the shell type
-
-{{{
-xdriinfo options <screen number or driver name>
-}}}
-
-You will see a rather long XML document that formally describes all available options and also includes verbal descriptions in multiple languages. This format is not exactly easily readable. Its main purpose is to be automatically processed by configuration GUIs. But it may also serve as a reference to the "power user".
+
+
+# Configuration Infrastructure
+
+
+## Introduction
+
+Since 9th October 2003 the new configuration infrastructure is part of the main trunk of the DRI CVS repository. It introduces a consistent mechanism for configuring all DRI drivers using an XML-based configuration file. It further provides an interface for configuration GUIs to find out about the [[ConfigurationOptions|ConfigurationOptions]] of installed drivers. Option descriptions are available in multiple languages. The first GUI configuration tool that uses the new infrastructure is [[DriConf|DriConf]].
+
+[[DriConf|DriConf]] is by far the easiest and most user-friendly way to edit the configuration. On the page [[ConfigurationOptions|ConfigurationOptions]] you find more detailed descriptions of common configuration options. If instead you prefer to edit the configuration file with a text editor, then read on. [[ConfigurationForDevelopers|ConfigurationForDevelopers]] describes how to make drivers configurable and how to add new options to drivers. For those interested in the technical details there is a [[design document|http://dri.freedesktop.org/~fxkuehl/driconf/dri_config_design_rev4.html]].
+
+
+## System-wide and per-user configuration files
+
+There is a system-wide configuration file /etc/drirc that applies to all users. Those settings can be overridden by a user's configuration file $HOME/.drirc. Both files have exactly the same format.
+
+
+## Example for a single-headed setup
+
+Let's start with an example of a configuration file for a single-headed setup, where you have only one graphics card and one monitor installed.
+
+
+[[!format txt """
+<driconf>
+ <device screen="0" driver="radeon">
+ <application name="all">
+ <!-- Always synchronize with vertical refresh to avoid tearing -->
+ <option name="vblank_mode" value="3"/>
+ </application>
+ <application name="glxgears" executable="glxgears">
+ <!-- glxgears should not synchronize with vertical refresh, show full fps -->
+ <option name="vblank_mode" value="0"/>
+ </application>
+ <application name="tuxracer" executable="tuxracer">
+ <!-- Tuxrace has some artifacts with hardware TCL -->
+ <option name="tcl_mode" value="0"/>
+ </application>
+ </device>
+</driconf>
+"""]]
+Comments start with <!-- and end with -->. Indentation is optional but makes the configuration file more readable. Each configuration file starts with <driconf> and ends with </driconf>.
+
+
+## Devices
+
+Between the <driconf> and </driconf> tags there can be a device section for each graphics device you have installed in your system. In the example there is only one device section. The opening tag contains two attributes "screen" and "driver". They are used to identify the device that this section applies to. In most cases only one of them should be necessary but specifying both doesn't hurt. "screen" gives the X screen number. On a single-headed display this is always 0. "driver" specifies the name of the 3D driver. At the time of this writing the following drivers support the configuration infrastructure:
+
+* mga (Matrox cards)
+* r128 (ATI Rage 128 and some Mobility chips)
+* radeon (ATI Radeon 7000, 7200, 7500 and some Mobility chips)
+* r200 (ATI Radeon 8500, 9000, 9200)
+If you are not sure which driver is the correct one for you, then you can find out with xdriinfo. If you type xdriinfo in the shell, you will get a list of all direct rendering capable screens with their drivers.
+
+
+## Applications
+
+In each device section there can be any number of application sections that contain the configuration of different applications. The opening tag can contain the attributes "name" and "executable". The name is merely a descriptive string. If no executable attribute is present then the section applies to all applications. Otherwise the section only applies to the specified application.
+
+**Caution:** The executable that you specify in the executable attribute may differ from what you type in the shell. For instance the command q3demo is a shell script. The actual executable that runs the game is called q3demo.x86.
+
+
+## Options
+
+Options are specified as empty element tags. This is indicated by the slash before the closing bracket. They have two attributes, "name" and "value". Their meaning should be obvious. The set of available options, their types and ranges of valid values depend on the driver and are subject to changes. Hopefully the most common change will be the addition of new options. But sometimes options may be removed or replaced by different options with different semantics.
+
+An up-to-date description of available options can be obtained with the program xdriinfo, which is included in the DRI CVS repository and in recent binary snapshots. In the shell type
+
+
+[[!format txt """
+xdriinfo options <screen number or driver name>
+"""]]
+You will see a rather long XML document that formally describes all available options and also includes verbal descriptions in multiple languages. This format is not exactly easily readable. Its main purpose is to be automatically processed by configuration GUIs. But it may also serve as a reference to the "power user".
diff --git a/ConfigurationOptions.moin b/ConfigurationOptions.mdwn
index b18a71d..5ea9c99 100644
--- a/ConfigurationOptions.moin
+++ b/ConfigurationOptions.mdwn
@@ -1,101 +1,98 @@
-= Common Configuration Options =
-
-Below you find detailed descriptions of common configuration options. Along with the documentation of each option you find the name and the numeric option values to be used if you edit the configuration file in a text editor.
-
-== Performance Options ==
-
-=== TCL mode (Transformation, Clipping, Lighting) ===
-
- * Name: tcl_mode
- * Drivers: r200, radeon
-
-This option defines whether a hardware TCL-unit is used and how the implementation uses it. Four settings are supported:
-
- 0 = Software<<BR>>
- 1 = TCL stage in MESA pipeline<<BR>>
- 2 = Bypass MESA's pipeline<<BR>>
- 3 = Bypass MESA's pipeline with state-based code generation
-
-The default setting is 3 which results in best performance. If you experience rendering errors try a lower setting and report a bug, stating which setting results in what kind of rendering problems.
-
-'''Note:''' One well known problem is "depth fighting" observed in e.g. Tux Racer. We believe that the application is broken in this case. Set tcl_mode to 0 (Software) as a workaround.
-
-'''Note 2:''' As usual before reporting a bug please make sure that it is not a known problem.
-
-=== Frame Throttling ===
-
- * Name: fthrottle_mode
- * Drivers: r200, radeon
-
-This option defines what happens, if the application submits rendering commands faster than the graphics engine can execute them. Without limitations the graphics engine could be several seconds behind the application's command stream. In an interactive application this is not acceptable. Imagine a simulation in which you turn the steering wheel and it takes one second before your car reacts. Therefore the application is forced to wait if it gets more than one frame ahead of the graphics engine. This waiting can be done in three different ways:
-
- 0 = Busy waiting<<BR>>
- 1 = Usleeps<<BR>>
- 2 = Software IRQs
-
-The default setting (Software IRQs) should be fine for most users. Usleeps can reduce the frame rate. Busy waiting doesn't reduce the frame rate but wastes CPU cycles in busy waiting loops (as the name indicates).
-
-=== Synchronization with vertical refresh (swap intervals) ===
-
- * Name: vblank_mode
- * Drivers: mga, r128, r200, radeon
-
-Synchronization with the vertical refresh can avoid visual "tearing" with fast motion. At the same time it limits the frame rate to (a fraction of) the vertical refresh rate. Applications can set a "swap interval" which means that buffer swaps occur no earlier than n vertical blanks after the previous swap. With this option you can disable swap intervals, choose a default swap interval of 0 or 1 or you can force the application to always wait for a vertical blank on every buffer swap:
-
- 0 = Never, FPS rulez!<<BR>>
- 1 = Application preference, default interval 0<<BR>>
- 2 = Application preference, default interval 1<<BR>>
- 3 = Application preference, always synchronize with refresh
-
-== Image Quality Options ==
-
-=== Texture color depth ===
-
- * Name: texture_depth
- * Drivers: mga, r128, r200, radeon
-
-This option influences the choice of the internal texture format based on the application-supplied texture data and the application's preference for the interal texture format.
-
- 0 = Prefer frame buffer color depth<<BR>>
- 1 = Prefer 32 bits<<BR>>
- 2 = Prefer 16 bits<<BR>>
- 3 = Force 16 bits
-
-The first three settings affect the choice only if the application doesn't specify an internal texture color depth. The default setting 0 will prefer the same color depth as the frame buffer. The last setting forces 16 bit internal color depth even if the application requests a higher color depth.
-
-There is a trade-off between image quality and performance here. A higher color depth means higher demands for memory size and bandwidth. Low texture color depth is most noticable if your application has textures with smooth gradients on them.
-
-=== Default color reduction method ===
-
- * Name: color_reduction
- * Drivers: mga, r128, r200, radeon
-
-On a 16 bit frame buffer color reduction can take place in different ways. Colors can be rounded or truncated which means that if there is no perfect match for the desired color you will see a color that comes more or less close to it. This leads to visible edges in smooth gradients. The alternative color dithering can lead to large improvements of the visual quality. However, it may also introduce noise or a visible dithering pattern. The best choice may depend on the application.
-
- 0 = Round or truncate<<BR>>
- 1 = Dither
-
-=== Round or truncate colors ===
-
- * Name: round_mode
- * Drivers: r128, r200, radeon
-
-If colors are rounded then this option decides how the displayed color is chosen if there is no perfect match for the desired color.
-
- 0 = Truncate<<BR>>
- 1 = Round
-
-Truncate will round each color component to the closest value that is still lower than the desired value. Round will choose the closest available value.
-
-=== Color dithering ===
-
- * Name: dither_mode
- * Drivers: r128, r200, radeon
-
-If colors are dithered then this option chooses the dithering algorithm.
-
- 0 = Horizontal error diffusion<<BR>>
- 1 = Horizontal error diffusion, reset error at line start<<BR>>
- 2 = Ordered 2D dithering
-
-The default setting 0 tries to compensate the rounding error of one pixel by biasing the rounding of the next pixel in the row. This may lead to a slightly noisy image and may introduce visible vertical patterns. Setting 1 is a variation that resets the error at the beginning of each new row. However, this setting looks broken on my Radeon 7500. Setting 2 uses a static pattern of rounding biases. This avoids the noise observed with setting 0 but the static pattern can be annoying espcially with low resolutions.
+
+
+# Common Configuration Options
+
+Below you find detailed descriptions of common configuration options. Along with the documentation of each option you find the name and the numeric option values to be used if you edit the configuration file in a text editor.
+
+
+## Performance Options
+
+
+### TCL mode (Transformation, Clipping, Lighting)
+
+* Name: tcl_mode
+* Drivers: r200, radeon
+This option defines whether a hardware TCL-unit is used and how the implementation uses it. Four settings are supported:
+
+* 0 = Software
+ 1 = TCL stage in MESA pipeline
+ 2 = Bypass MESA's pipeline
+ 3 = Bypass MESA's pipeline with state-based code generation
+The default setting is 3 which results in best performance. If you experience rendering errors try a lower setting and report a bug, stating which setting results in what kind of rendering problems.
+
+**Note:** One well known problem is "depth fighting" observed in e.g. Tux Racer. We believe that the application is broken in this case. Set tcl_mode to 0 (Software) as a workaround.
+
+**Note 2:** As usual before reporting a bug please make sure that it is not a known problem.
+
+
+### Frame Throttling
+
+* Name: fthrottle_mode
+* Drivers: r200, radeon
+This option defines what happens, if the application submits rendering commands faster than the graphics engine can execute them. Without limitations the graphics engine could be several seconds behind the application's command stream. In an interactive application this is not acceptable. Imagine a simulation in which you turn the steering wheel and it takes one second before your car reacts. Therefore the application is forced to wait if it gets more than one frame ahead of the graphics engine. This waiting can be done in three different ways:
+
+* 0 = Busy waiting
+ 1 = Usleeps
+ 2 = Software IRQs
+The default setting (Software IRQs) should be fine for most users. Usleeps can reduce the frame rate. Busy waiting doesn't reduce the frame rate but wastes CPU cycles in busy waiting loops (as the name indicates).
+
+
+### Synchronization with vertical refresh (swap intervals)
+
+* Name: vblank_mode
+* Drivers: mga, r128, r200, radeon
+Synchronization with the vertical refresh can avoid visual "tearing" with fast motion. At the same time it limits the frame rate to (a fraction of) the vertical refresh rate. Applications can set a "swap interval" which means that buffer swaps occur no earlier than n vertical blanks after the previous swap. With this option you can disable swap intervals, choose a default swap interval of 0 or 1 or you can force the application to always wait for a vertical blank on every buffer swap:
+
+* 0 = Never, FPS rulez!
+ 1 = Application preference, default interval 0
+ 2 = Application preference, default interval 1
+ 3 = Application preference, always synchronize with refresh
+
+## Image Quality Options
+
+
+### Texture color depth
+
+* Name: texture_depth
+* Drivers: mga, r128, r200, radeon
+This option influences the choice of the internal texture format based on the application-supplied texture data and the application's preference for the interal texture format.
+
+* 0 = Prefer frame buffer color depth
+ 1 = Prefer 32 bits
+ 2 = Prefer 16 bits
+ 3 = Force 16 bits
+The first three settings affect the choice only if the application doesn't specify an internal texture color depth. The default setting 0 will prefer the same color depth as the frame buffer. The last setting forces 16 bit internal color depth even if the application requests a higher color depth.
+
+There is a trade-off between image quality and performance here. A higher color depth means higher demands for memory size and bandwidth. Low texture color depth is most noticable if your application has textures with smooth gradients on them.
+
+
+### Default color reduction method
+
+* Name: color_reduction
+* Drivers: mga, r128, r200, radeon
+On a 16 bit frame buffer color reduction can take place in different ways. Colors can be rounded or truncated which means that if there is no perfect match for the desired color you will see a color that comes more or less close to it. This leads to visible edges in smooth gradients. The alternative color dithering can lead to large improvements of the visual quality. However, it may also introduce noise or a visible dithering pattern. The best choice may depend on the application.
+
+* 0 = Round or truncate
+ 1 = Dither
+
+### Round or truncate colors
+
+* Name: round_mode
+* Drivers: r128, r200, radeon
+If colors are rounded then this option decides how the displayed color is chosen if there is no perfect match for the desired color.
+
+* 0 = Truncate
+ 1 = Round
+Truncate will round each color component to the closest value that is still lower than the desired value. Round will choose the closest available value.
+
+
+### Color dithering
+
+* Name: dither_mode
+* Drivers: r128, r200, radeon
+If colors are dithered then this option chooses the dithering algorithm.
+
+* 0 = Horizontal error diffusion
+ 1 = Horizontal error diffusion, reset error at line start
+ 2 = Ordered 2D dithering
+The default setting 0 tries to compensate the rounding error of one pixel by biasing the rounding of the next pixel in the row. This may lead to a slightly noisy image and may introduce visible vertical patterns. Setting 1 is a variation that resets the error at the beginning of each new row. However, this setting looks broken on my Radeon 7500. Setting 2 uses a static pattern of rounding biases. This avoids the noise observed with setting 0 but the static pattern can be annoying espcially with low resolutions.
diff --git a/Contributing.mdwn b/Contributing.mdwn
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Contributing.mdwn
diff --git a/Contributing.moin b/Contributing.moin
deleted file mode 100644
index d9db1ab..0000000
--- a/Contributing.moin
+++ /dev/null
@@ -1 +0,0 @@
-#REDIRECT Development
diff --git a/CurrentDevelopers.mdwn b/CurrentDevelopers.mdwn
new file mode 100644
index 0000000..08c9ef9
--- /dev/null
+++ b/CurrentDevelopers.mdwn
@@ -0,0 +1,48 @@
+
+
+### Current DRI developers
+
+* [[AlanHourihane|AlanHourihane]]
+* [[AlexDeucher|AlexDeucher]]
+* [[AllenAkin|AllenAkin]]
+* [[BrianPaul|BrianPaul]]
+* [[DaveAirlie|DaveAirlie]]
+* [[EricAnholt|EricAnholt]]
+* [[FelixKuehling|FelixKuehling]]
+* [[IanRomanick|IanRomanick]]
+* [[JonSmirl|JonSmirl]]
+* [[JoseFonseca|JoseFonseca]]
+* [[KeithWhitwell|KeithWhitwell]]
+* [[LeifDelgass|LeifDelgass]]
+* [[MichelDaenzer|MichelDaenzer]]
+* [[VilleSyrjala|VilleSyrjala]]
+
+### Former DRI developers
+
+(Listed as developers at sourceforge.net but haven't requested freedesktop.org accounts)
+
+* [[AndreasKarrenbauer|AndreasKarrenbauer]]
+* [[DaryllStrauss|DaryllStrauss]]
+* [[FrankEarl|FrankEarl]]
+* [[GarethHughes|GarethHughes]]
+* [[JeffHartmann|JeffHartmann]]
+* [[JensOwen|JensOwen]]
+* [[KevinMartin|KevinMartin]]
+* [[MaxLingua|MaxLingua]]
+* [[RikFaith|RikFaith]]
+* [[SuzyDeffeyes|SuzyDeffeyes]]
+* [[TimSmith|TimSmith]]
+
+### Contributors
+
+* [[FrankWorsley|FrankWorsley]]
+* [[LiamSmit|LiamSmit]]
+
+### Framework Developers and Contributors
+
+* [[SourceForge|SourceForge]].net
+* [[OpenDesktop|OpenDesktop]].org
+* [[LiamSmit|LiamSmit]] (web design)
+* [[AlexanderStohr|AlexanderStohr]] (mailing list admin)
+* [[MikeHarris|MikeHarris]] (mailing list admin)
+* [[MichelDaenzer|MichelDaenzer]] (mailing list admin) \ No newline at end of file
diff --git a/CurrentDevelopers.moin b/CurrentDevelopers.moin
deleted file mode 100644
index cd3d510..0000000
--- a/CurrentDevelopers.moin
+++ /dev/null
@@ -1,41 +0,0 @@
-=== Current DRI developers ===
- * AlanHourihane
- * AlexDeucher
- * AllenAkin
- * BrianPaul
- * DaveAirlie
- * EricAnholt
- * FelixKuehling
- * IanRomanick
- * JonSmirl
- * JoseFonseca
- * KeithWhitwell
- * LeifDelgass
- * MichelDaenzer
- * VilleSyrjala
-
-=== Former DRI developers ===
-(Listed as developers at sourceforge.net but haven't requested freedesktop.org accounts)
- * AndreasKarrenbauer
- * DaryllStrauss
- * FrankEarl
- * GarethHughes
- * JeffHartmann
- * JensOwen
- * KevinMartin
- * MaxLingua
- * RikFaith
- * SuzyDeffeyes
- * TimSmith
-
-=== Contributors ===
- * FrankWorsley
- * LiamSmit
-
-=== Framework Developers and Contributors ===
- * SourceForge.net
- * OpenDesktop.org
- * LiamSmit (web design)
- * AlexanderStohr (mailing list admin)
- * MikeHarris (mailing list admin)
- * MichelDaenzer (mailing list admin)
diff --git a/CvsBranches.mdwn b/CvsBranches.mdwn
new file mode 100644
index 0000000..a9f9dcd
--- /dev/null
+++ b/CvsBranches.mdwn
@@ -0,0 +1,146 @@
+
+
+# DRI CVS Branches
+
+We're using CVS quite heavily and have a fairly structured layout of the repository. This document should explain how we're using CVS and what material is stored where.
+
+When you do a normal checkout of a CVS tree, you get a default set of files. This set of files is called the trunk. CVS also supports a concept called branches. Branches are named sections of the CVS tree that diverge from the trunk code.
+
+In our repository, the trunk will always be the latest code that is believed to be stable and work. Changes made in any of the branches will be merged into the trunk when they are deemed ready. As a developer who isn't writing code you should normally be doing your checkouts from the trunk. Each developer who is writing new code in the tree will be working in a branch. They will be doing frequent checkins to their branch. Because of this it is likely that the code they check in may not work at any given point in time. They do frequent checkins to have saved copies of their work and so that other developers who might want to examine the code can do so. It should be a rare case that any developer looks at another developers branch.
+
+Since there are several projects underway in the same source tree, there are a number of branches under development. Most of them are documented here.
+
+
+## Current Branches
+
+These are branches under active development.
+trunk
+: This is the main branch of working code. Generally, only bug fixes get checked into this branch. Major development is done on other branches. As of February 2003, the trunk is based on Mesa 5.0.x.
+
+cle266-0-0-1-branch
+: This is the branch for integration of the VIA CLE266 driver.
+
+i865-agp-0-1-branch
+: This is the branch for i865 driver development.
+
+
+
+## Sleeping Branches
+
+These are branches that were active at one time but that haven't seen action in a while. They probably need work to get them working again.
+gamma-2-0-0-branch
+: This is the current branch for the 3DLabs Oxygen GMX2000 development.
+
+s3virge-0-0-1-branch
+: This is the development branch for a from-scratch S3 Virge driver.
+
+tdlabs-0-0-1-branch
+: This is the development branch for 3Dlabs Permedia/2/3 chips.
+
+
+As of right now, these branches need to account for at least the following changes before they can work in the trunk:
+
+* [[DRM reorganization|http://marc.theaimsgroup.com/?l=dri-devel&m=107949788914600&w=2]] [[driinterface branch merge|http://marc.theaimsgroup.com/?l=dri-devel&m=107646323812972&w=2]] [[newmesa branch merge|http://marc.theaimsgroup.com/?l=dri-devel&m=107098273417272&w=2]]
+
+## Merged Branches
+
+These branches have been merged to the trunk. They are no longer interesting. All development relevant to these is now taking place on the trunk.
+ati-4-0-0-branch, ati-4-0-1-branch, ati-4-1-0-branch
+: The initial ATI Rage 128 driver development was carried out on these branches.
+
+ati-4-1-1-branch
+: This was the branch for the enhanced ATI Rage 128/Rage 128 Pro driver development.
+
+ati-5-0-0-branch
+: This was the branch for the latest ATI Radeon and Rage 128/128 Pro development.
+
+bsd-4-0-0-branch
+: BSD support, follow-on to bsd-3-0-0-branch.
+
+bsd-3-0-0-branch
+: This branch contains changes to support FreeBSD 4.0 and to port the Linux mga driver.
+
+bsd-1-0-0-branch
+: This branch contained a variety of changes for FreeBSD support.
+
+config-0-0-1-branch
+: This was a branch for creation of a general DRI configuration mechanism to replace card-specific environment variables.
+
+dispatch-0-0-1-branch
+: This is the branch for the Mesa dynamic dispatching work.
+
+glxmisc-1-0-0-branch
+: This branch fixed a variety of GLX-related issues such as visual configuration.
+
+glxmisc-2-0-0-branch
+: This branch overhauled the XMesa/DRI client-side code; XMesa is no longer used.
+
+glxmisc-3-0-0-branch
+: This branch fixed several DRI, DRM and GLX bugs, added version checking to the DRI components, fixed potential memory leaks in DRI drivers, and updated to Mesa 3.3.
+
+m3-0-0-1-branch
+: This branch contained changes to support the ATI Rage 128 Mobility (M3/M4).
+
+mach64-0-0-7-branch
+: This was the branch for the ATI Rage Pro driver development.
+
+mga-0-0-1-branch, mga-0-0-2-branch, mga-0-0-3-branch
+: These branches housed the development of the Matrox G200/G400 and the Intel i810 drivers.
+
+r200-0-1-branch
+: This was the development branch for the Radeon R200 driver.
+
+radeon-1-0-0-branch
+: This branch contained support the ATI Radeon development.
+
+savage-1_0_0-branch, savage-2-0-0-branch
+: This is the branch for integration of the VIA/S3 Savage driver.
+
+sse-1-0-0-branch
+: This was an experimental branch, looking at optimizations of both core Mesa and the hardware drivers for the Pentium III processor.
+
+tcl-0-0-branch
+: This branch hosted the Radeon Transform/Clip/Lighting works.
+
+tdfx-1-1
+: This was the experimental branch for the 3dfx Voodoo Banshee/Voodoo3 development.
+
+tdfx-2-0-branch
+: This was the experimental branch for the 3dfx Voodoo4/Voodoo5 development.
+
+tdfx-2-1-branch
+: tdfx development for SLI and T-buffers was being done on this branch.
+
+tdfx-3-0-0-branch
+: This branch implemented the tdfx driver overhaul, initiated by Gareth.
+
+texmem-0-0-1
+: Texture memory management improvements.
+
+
+
+## Abandoned Branches
+
+These branches have been abandoned for one reason or another. No development is taking place on these.
+dmx-0-1-branch
+:
+This is the Distributed Xinerama branch. The DMX project has its own [[SourceForge|SourceForge]] CVS tree now. See [[the DMX homepage|http://dmx.sourceforge.net/]] .
+
+
+mesa-3-5-branch
+: This branch was for Mesa 3.5 development, including porting of the DRI drivers to Mesa 3.5.
+
+mesa-4-0-4-branch
+: DRI based on Mesa 4.0.4, used during the XFree86 4.2.99.x series so Mesa 5.0 work could continue on trunk and stable fixes get merged.
+
+ppc-1-0-0-branch
+: This branch was dedicated to porting the DRI to Linux (and maybe other OSs) on PowerPC processors. PPC support for ATI Rage128 chips has finally hit the trunk with the merge of the ati-pcigart-1-0-0-branch.
+
+smt-0-0-1-branch, smt-0-0-2-branch
+:
+This was the branch for the shared memory transport work. SMT was completed in 1 March 2000, and was not found to provide more than a 10% performance increase using modern graphics cards on modern machines. This level of performance improvement does not justify inclusion of the SMT patches into the main XFree86 distribution, so this branch has been abandoned. A complete discussion is available on the [[SharedMemoryTransport|SharedMemoryTransport]] page; [[Patches|http://www.precisioninsight.com/smt/smt-3.9.18.diff.gz]] (against XFree86 3.9.18) used to exist...
+
+
+video-1-0-0-branch
+: This branch was for experimental video work that is no longer in progress. There's nothing interesting on this branch.
+
diff --git a/CvsBranches.moin b/CvsBranches.moin
deleted file mode 100644
index b38c62b..0000000
--- a/CvsBranches.moin
+++ /dev/null
@@ -1,106 +0,0 @@
-= DRI CVS Branches =
-
-We're using CVS quite heavily and have a fairly structured layout of the repository. This document should explain how we're using CVS and what material is stored where.
-
-When you do a normal checkout of a CVS tree, you get a default set of files. This set of files is called the trunk. CVS also supports a concept called branches. Branches are named sections of the CVS tree that diverge from the trunk code.
-
-In our repository, the trunk will always be the latest code that is believed to be stable and work. Changes made in any of the branches will be merged into the trunk when they are deemed ready. As a developer who isn't writing code you should normally be doing your checkouts from the trunk. Each developer who is writing new code in the tree will be working in a branch. They will be doing frequent checkins to their branch. Because of this it is likely that the code they check in may not work at any given point in time. They do frequent checkins to have saved copies of their work and so that other developers who might want to examine the code can do so. It should be a rare case that any developer looks at another developers branch.
-
-Since there are several projects underway in the same source tree, there are a number of branches under development. Most of them are documented here.
-
-== Current Branches ==
-
-These are branches under active development.
-
- trunk:: This is the main branch of working code. Generally, only bug fixes get checked into this branch. Major development is done on other branches. As of February 2003, the trunk is based on Mesa 5.0.x.
-
- cle266-0-0-1-branch:: This is the branch for integration of the VIA CLE266 driver.
-
- i865-agp-0-1-branch:: This is the branch for i865 driver development.
-
-== Sleeping Branches ==
-
-These are branches that were active at one time but that haven't seen action in a while. They probably need work to get them working again.
-
- gamma-2-0-0-branch:: This is the current branch for the 3DLabs Oxygen GMX2000 development.
-
- s3virge-0-0-1-branch:: This is the development branch for a from-scratch S3 Virge driver.
-
- tdlabs-0-0-1-branch:: This is the development branch for 3Dlabs Permedia/2/3 chips.
-
-As of right now, these branches need to account for at least the following changes before they can work in the trunk:
-
- [[http://marc.theaimsgroup.com/?l=dri-devel&m=107949788914600&w=2|DRM reorganization]]
-
- [[http://marc.theaimsgroup.com/?l=dri-devel&m=107646323812972&w=2|driinterface branch merge]]
-
- [[http://marc.theaimsgroup.com/?l=dri-devel&m=107098273417272&w=2|newmesa branch merge]]
-
-== Merged Branches ==
-
-These branches have been merged to the trunk. They are no longer interesting. All development relevant to these is now taking place on the trunk.
-
- ati-4-0-0-branch, ati-4-0-1-branch, ati-4-1-0-branch:: The initial ATI Rage 128 driver development was carried out on these branches.
-
- ati-4-1-1-branch:: This was the branch for the enhanced ATI Rage 128/Rage 128 Pro driver development.
-
- ati-5-0-0-branch:: This was the branch for the latest ATI Radeon and Rage 128/128 Pro development.
-
- bsd-4-0-0-branch:: BSD support, follow-on to bsd-3-0-0-branch.
-
- bsd-3-0-0-branch:: This branch contains changes to support FreeBSD 4.0 and to port the Linux mga driver.
-
- bsd-1-0-0-branch:: This branch contained a variety of changes for FreeBSD support.
-
- config-0-0-1-branch:: This was a branch for creation of a general DRI configuration mechanism to replace card-specific environment variables.
-
- dispatch-0-0-1-branch:: This is the branch for the Mesa dynamic dispatching work.
-
- glxmisc-1-0-0-branch:: This branch fixed a variety of GLX-related issues such as visual configuration.
-
- glxmisc-2-0-0-branch:: This branch overhauled the XMesa/DRI client-side code; XMesa is no longer used.
-
- glxmisc-3-0-0-branch:: This branch fixed several DRI, DRM and GLX bugs, added version checking to the DRI components, fixed potential memory leaks in DRI drivers, and updated to Mesa 3.3.
-
- m3-0-0-1-branch:: This branch contained changes to support the ATI Rage 128 Mobility (M3/M4).
-
- mach64-0-0-7-branch:: This was the branch for the ATI Rage Pro driver development.
-
- mga-0-0-1-branch, mga-0-0-2-branch, mga-0-0-3-branch:: These branches housed the development of the Matrox G200/G400 and the Intel i810 drivers.
-
- r200-0-1-branch:: This was the development branch for the Radeon R200 driver.
-
- radeon-1-0-0-branch:: This branch contained support the ATI Radeon development.
-
- savage-1_0_0-branch, savage-2-0-0-branch:: This is the branch for integration of the VIA/S3 Savage driver.
-
- sse-1-0-0-branch:: This was an experimental branch, looking at optimizations of both core Mesa and the hardware drivers for the Pentium III processor.
-
- tcl-0-0-branch:: This branch hosted the Radeon Transform/Clip/Lighting works.
-
- tdfx-1-1:: This was the experimental branch for the 3dfx Voodoo Banshee/Voodoo3 development.
-
- tdfx-2-0-branch:: This was the experimental branch for the 3dfx Voodoo4/Voodoo5 development.
-
- tdfx-2-1-branch:: tdfx development for SLI and T-buffers was being done on this branch.
-
- tdfx-3-0-0-branch:: This branch implemented the tdfx driver overhaul, initiated by Gareth.
-
- texmem-0-0-1:: Texture memory management improvements.
-
-
-== Abandoned Branches ==
-
-These branches have been abandoned for one reason or another. No development is taking place on these.
-
- dmx-0-1-branch:: This is the Distributed Xinerama branch. The DMX project has its own SourceForge CVS tree now. See [[http://dmx.sourceforge.net/|the DMX homepage]] .
-
- mesa-3-5-branch:: This branch was for Mesa 3.5 development, including porting of the DRI drivers to Mesa 3.5.
-
- mesa-4-0-4-branch:: DRI based on Mesa 4.0.4, used during the XFree86 4.2.99.x series so Mesa 5.0 work could continue on trunk and stable fixes get merged.
-
- ppc-1-0-0-branch:: This branch was dedicated to porting the DRI to Linux (and maybe other OSs) on PowerPC processors. PPC support for ATI Rage128 chips has finally hit the trunk with the merge of the ati-pcigart-1-0-0-branch.
-
- smt-0-0-1-branch, smt-0-0-2-branch:: This was the branch for the shared memory transport work. SMT was completed in 1 March 2000, and was not found to provide more than a 10% performance increase using modern graphics cards on modern machines. This level of performance improvement does not justify inclusion of the SMT patches into the main XFree86 distribution, so this branch has been abandoned. A complete discussion is available on the SharedMemoryTransport page; [[http://www.precisioninsight.com/smt/smt-3.9.18.diff.gz|Patches]] (against XFree86 3.9.18) used to exist...
-
- video-1-0-0-branch:: This branch was for experimental video work that is no longer in progress. There's nothing interesting on this branch.
diff --git a/CvsPolicy.mdwn b/CvsPolicy.mdwn
new file mode 100644
index 0000000..461c480
--- /dev/null
+++ b/CvsPolicy.mdwn
@@ -0,0 +1,192 @@
+
+**Contents** [[!toc ]]
+
+**OUT OF DATE: CURRENTLY GIT IS USED:
+ [[http://gitweb.freedesktop.org/?p=mesa/mesa.git;a=summary|http://gitweb.freedesktop.org/?p=mesa/mesa.git;a=summary]] - mesa includes the DRI drivers
+ [[http://gitweb.freedesktop.org/?p=mesa/drm.git;a=summary|http://gitweb.freedesktop.org/?p=mesa/drm.git;a=summary]] - own repository for DRM (Direct Rendering Manager) kernel drivers **
+
+
+## Overview
+
+The DRI project has several development policies which all developers are required to observe:
+
+ 1. All code development is to be done on CVS branches, not the trunk.
+ 1. Branches are not merged into the trunk until the code as been well tested.
+ 1. CVS tags follow a consistant naming convention.
+ 1. Merges to the trunk must be timed so that they do not upset scheduled releases.
+Potential developers must accept these policies before joining the project. Anyone who does not follow these policies and causes problems will lose their CVS write privileges immediately, and probably forever.
+
+
+## Introduction
+
+The DRI CVS tree is a subset of the XFree86 development tree. The DRI tree omits documentation and font directories which are outside the scope of the DRI project.
+
+When XFree86 releases a new public snapshot we will update the DRI tree to match the snapshot.
+
+Prior to XFree86 releases we generate a patch file in order to submit our latest DRI code back to XFree86.
+
+Since the DRI developers each have specific development projects, it's imperative that the check-ins which one developer commits does not interfere with the work of the others. Also, it's very important that the main DRI trunk be a stable code base so that users can download and use it successfully at any time.
+
+For these reasons, all code development is to be done on branches. The rest of this document explains in detail how branches are to be managed.
+
+We do make exceptions to this rule, however, when making one or two-line bug fixes. It seems overkill to make a branch in order to commit a trivial bug fix.
+
+Finally, the DRI project is tied to the schedules and deadlines of the XFree86 project and corporate contracts. For that reason, merges into the trunk must be timed so that schedules aren't upset. We will try to keep the DRI developers informed of these schedules.
+
+
+## Branch tag naming scheme
+
+Branches are symbolic tags that are used to anchor a branch as a specific tree revision. We'll use the following format for branch tags:
+
+ * `<keyword>-<revision>-branch`
+where:
+
+ * `<keyword> ::= { tdfx, ati, i740, dri, smt, glxmisc, ... }`
+ * `<revision> ::= <major>-<minor>-<patch>` (e.g., `0-0-1`)
+Note that hyphens (`-`) are used, not underscores. Periods (`.`) are never used because they upset CVS's branch naming.
+
+
+## Non-branch tag naming scheme
+
+We use non-branch tags for three things:
+
+ 1. syncing with XFree86, Mesa, etc.
+ 1. merging branches
+ 1. miscellaneous tags (e.g., to remember a specific stopping point)
+
+### Format for syncing
+
+ * [[!format txt """
+<keyword>-<revision>-<date>
+
+<keyword> ::= { xfree, mesa, ... }
+
+<revision> ::= project-specific revision (e.g., 3-9-16e)
+
+<date> ::= <year><month><day> (e.g., 19991206)
+"""]]
+
+### Format for merges
+
+On the branch, **before the merge**, use the following tag:
+
+ * `<keyword>-<revision>-<date>`
+On the main trunk, **after the merge**, use the following tag:
+
+ * `<keyword>-<revision>-<date>-merge`
+
+### Format for miscellaneous tags
+
+ * `<keyword>-<revision>-<date>-<comment>`
+
+## How to check out the main trunk
+
+ * [[!format txt """
+export CVS_RSH=ssh
+
+cvs -z3 -dDEVELOPERNAME@cvs.dri.sourceforge.net:/cvsroot/dri co xc
+"""]]
+
+## How to check out a branch
+
+ * [[!format txt """
+cvs co -r <keyword>-<revision>-branch xc
+"""]]
+
+## How to make a branch
+
+
+### You have no checked out trees
+
+If you want to use the main trunk as the anchor for your branch:
+
+ * [[!format txt """
+cvs rtag -b <keyword>-<revision>-branch
+cvs co -b <keyword>-<revision>-branch
+"""]]
+If you want to use some other tag as the anchor for your branch:
+
+ * [[!format txt """
+cvs rtag -b -r <tag> <keyword>-<revision>-branch
+cvs co -b <keyword>-<revision>-branch
+"""]]
+
+### You have a checked out trunk, and you want to tag it and start using it as a branch
+
+* [[!format txt """
+cd <root-of-your-checked-out-tree>
+cvs tag -b <keyword>-<revision>-branch
+cvs update -r <keyword>-<revision>-branch
+"""]]
+This makes the `<keyword>-<revision>-branch` tag sticky. You can verify this by using `cvs status`, for example in `XFree39/xc`, do this:
+
+ * [[!format txt """
+cvs status Makefile
+"""]]
+or
+
+ * [[!format txt """
+cvs status -v Makefile
+"""]]
+
+## How to merge the trunk into your branch
+
+Before you merge your code into the trunk you should first merge the latest trunk code into your branch. After merged code has been tested on your branch, merging into the trunk should be simple.
+
+ 1. Be sure all the changes on your branch are checked in.
+ 1. Tag your branch with a 'freeze' tag:
+ * [[!format txt """
+cvs tag <keyword>-<revision>-<date>-freeze
+"""]]
+ 1. Merge from the trunk:
+ * [[!format txt """
+cvs update -d -j HEAD
+"""]]
+ 1. Resolve any conflicts from the merge.
+ 1. Recompile and build your branch. Test it.
+ 1. Check in your changes from the merge.
+ 1. Tag your branch with a merge tag:
+ * [[!format txt """
+cvs tag <keyword>-<revision>-<date>
+"""]]
+
+## How to merge your branch to the main trunk
+
+ 1. Be sure your <keyword>-<revision>-<date>-merge tag (on the branch) is up to date (i.e., in case you changed some files from between the time you merged the trunk onto the branch until you merged the branch onto the trunk). You can make the tag with:
+ * [[!format txt """
+cvs tag <keyword>-<revision>-<date>
+"""]]
+ 1. Revert your working tree to the main trunk:
+ * [[!format txt """
+cvs update -A
+"""]](Alternatively, you can just check out a new copy of the main trunk.)
+ 1. Merge in the changes from your branch:
+ * [[!format txt """
+cvs update -j <keyword>-<revision>-branch
+"""]]
+ 1. Test your merged tree
+ 1. Check in your merged tree to the main branch;
+ * [[!format txt """
+cvs commit -m 'Merged <keyword>-<revision>'
+"""]]
+ 1. Tag your merge so we can find it again:
+ * [[!format txt """
+cvs tag <keyword>-<revision>-<date>-merge
+"""]]
+ 1. Now you can make diffs to send to XFree86
+Say you keep hacking on your branch after the merge to test a few extra things and you want to merge again. You get the main trunk checked out, as in step 1, then you merge only those changes between your last merge and the most recent revision in your branch:
+
+ * [[!format txt """
+cvs update -j <keyword>-<revision>-<date> \
+ -j <keyword>-<revision>-branch
+"""]]
+
+### How to turn off logging of large check-ins to the mailing list
+
+ * [[!format txt """
+cvs co CVSROOT
+"""]]
+ * edit loginfo to comment out the mail notification line
+ * check in loginfo
+ * do your merge
+ * undo the change to loginfo \ No newline at end of file
diff --git a/CvsPolicy.moin b/CvsPolicy.moin
deleted file mode 100644
index 0c4a3e4..0000000
--- a/CvsPolicy.moin
+++ /dev/null
@@ -1,263 +0,0 @@
-'''Contents'''
-<<TableOfContents>>
-
-'''OUT OF DATE: CURRENTLY GIT IS USED: <<BR>>
-http://gitweb.freedesktop.org/?p=mesa/mesa.git;a=summary - mesa includes the DRI drivers<<BR>>
-http://gitweb.freedesktop.org/?p=mesa/drm.git;a=summary - own repository for DRM (Direct Rendering Manager) kernel drivers
-'''
-
-== Overview ==
-
-The DRI project has several development policies which all developers are
-required to observe:
-
- 1. All code development is to be done on CVS branches, not the trunk.
-
- 2. Branches are not merged into the trunk until the code as been well
- tested.
-
- 3. CVS tags follow a consistant naming convention.
-
- 4. Merges to the trunk must be timed so that they do not upset scheduled
- releases.
-
-Potential developers must accept these policies before joining the project.
-Anyone who does not follow these policies and causes problems will lose their
-CVS write privileges immediately, and probably forever.
-
-== Introduction ==
-
-The DRI CVS tree is a subset of the XFree86 development tree. The DRI tree
-omits documentation and font directories which are outside the scope of the DRI
-project.
-
-When XFree86 releases a new public snapshot we will update the DRI tree to
-match the snapshot.
-
-Prior to XFree86 releases we generate a patch file in order to submit our
-latest DRI code back to XFree86.
-
-Since the DRI developers each have specific development projects, it's
-imperative that the check-ins which one developer commits does not interfere
-with the work of the others. Also, it's very important that the main DRI trunk
-be a stable code base so that users can download and use it successfully at any
-time.
-
-For these reasons, all code development is to be done on branches. The rest of
-this document explains in detail how branches are to be managed.
-
-We do make exceptions to this rule, however, when making one or two-line bug
-fixes. It seems overkill to make a branch in order to commit a trivial bug
-fix.
-
-Finally, the DRI project is tied to the schedules and deadlines of the XFree86
-project and corporate contracts. For that reason, merges into the trunk must
-be timed so that schedules aren't upset. We will try to keep the DRI
-developers informed of these schedules.
-
-== Branch tag naming scheme ==
-
-Branches are symbolic tags that are used to anchor a branch as a specific tree
-revision. We'll use the following format for branch tags:
-
- `<keyword>-<revision>-branch`
-
-where:
-
- * `<keyword> ::= { tdfx, ati, i740, dri, smt, glxmisc, ... }`
-
- * `<revision> ::= <major>-<minor>-<patch>` (e.g., `0-0-1`)
-
-Note that hyphens (`-`) are used, not underscores. Periods (`.`) are never
-used because they upset CVS's branch naming.
-
-== Non-branch tag naming scheme ==
-
-We use non-branch tags for three things:
-
- 1. syncing with XFree86, Mesa, etc.
-
- 2. merging branches
-
- 3. miscellaneous tags (e.g., to remember a specific stopping point)
-
-
-=== Format for syncing ===
-
- {{{
-<keyword>-<revision>-<date>
-
-<keyword> ::= { xfree, mesa, ... }
-
-<revision> ::= project-specific revision (e.g., 3-9-16e)
-
-<date> ::= <year><month><day> (e.g., 19991206)
-}}}
-
-=== Format for merges ===
-
-On the branch, '''before the merge''', use the following tag:
-
- {{{<keyword>-<revision>-<date>}}}
-
-On the main trunk, '''after the merge''', use the following tag:
-
- {{{<keyword>-<revision>-<date>-merge}}}
-
-
-=== Format for miscellaneous tags ===
-
- {{{<keyword>-<revision>-<date>-<comment>}}}
-
-== How to check out the main trunk ==
-
- {{{
-export CVS_RSH=ssh
-
-cvs -z3 -dDEVELOPERNAME@cvs.dri.sourceforge.net:/cvsroot/dri co xc
-}}}
-
-== How to check out a branch ==
-
- {{{
-cvs co -r <keyword>-<revision>-branch xc
-}}}
-
-== How to make a branch ==
-
-=== You have no checked out trees ===
-
-If you want to use the main trunk as the anchor for your branch:
-
- {{{
-cvs rtag -b <keyword>-<revision>-branch
-cvs co -b <keyword>-<revision>-branch
-}}}
-
-If you want to use some other tag as the anchor for your branch:
-
- {{{
-cvs rtag -b -r <tag> <keyword>-<revision>-branch
-cvs co -b <keyword>-<revision>-branch
-}}}
-
-=== You have a checked out trunk, and you want to tag it and start using it as a branch ===
-
- {{{
-cd <root-of-your-checked-out-tree>
-cvs tag -b <keyword>-<revision>-branch
-cvs update -r <keyword>-<revision>-branch
-}}}
-
-This makes the {{{<keyword>-<revision>-branch}}} tag sticky. You can verify this by
-using {{{cvs status}}}, for example in `XFree39/xc`, do this:
-
- {{{
-cvs status Makefile
-}}}
-
-or
-
- {{{
-cvs status -v Makefile
-}}}
-
-== How to merge the trunk into your branch ==
-
-Before you merge your code into the trunk you should first merge
-the latest trunk code into your branch. After merged code has been
-tested on your branch, merging into the trunk should be simple.
-
- 1. Be sure all the changes on your branch are checked in.
-
- 1. Tag your branch with a 'freeze' tag:
-
- {{{
-cvs tag <keyword>-<revision>-<date>-freeze
-}}}
-
- 1. Merge from the trunk:
-
- {{{
-cvs update -d -j HEAD
-}}}
-
- 1. Resolve any conflicts from the merge.
-
- 1. Recompile and build your branch. Test it.
-
- 1. Check in your changes from the merge.
-
- 1. Tag your branch with a merge tag:
-
- {{{
-cvs tag <keyword>-<revision>-<date>
-}}}
-
-== How to merge your branch to the main trunk ==
-
- 1. Be sure your <keyword>-<revision>-<date>-merge tag (on the branch) is up
- to date (i.e., in case you changed some files from between the time you
- merged the trunk onto the branch until you merged the branch onto the
- trunk).
-
- You can make the tag with:
-
- {{{
-cvs tag <keyword>-<revision>-<date>
-}}}
-
- 1. Revert your working tree to the main trunk:
-
- {{{
-cvs update -A
-}}}
-
- (Alternatively, you can just check out a new copy of the main
- trunk.)
-
- 1. Merge in the changes from your branch:
-
- {{{
-cvs update -j <keyword>-<revision>-branch
-}}}
-
- 1. Test your merged tree
-
- 1. Check in your merged tree to the main branch;
-
- {{{
-cvs commit -m 'Merged <keyword>-<revision>'
-}}}
-
- 1. Tag your merge so we can find it again:
-
- {{{
-cvs tag <keyword>-<revision>-<date>-merge
-}}}
-
- 1. Now you can make diffs to send to XFree86
-
-Say you keep hacking on your branch after the merge to test a few extra
-things and you want to merge again. You get the main trunk checked
-out, as in step 1, then you merge only those changes between your
-last merge and the most recent revision in your branch:
-
- {{{
-cvs update -j <keyword>-<revision>-<date> \
- -j <keyword>-<revision>-branch
-}}}
-
-=== How to turn off logging of large check-ins to the mailing list ===
-
- * {{{
-cvs co CVSROOT
-}}}
-
- * edit loginfo to comment out the mail notification line
-
- * check in loginfo
-
- * do your merge
-
- * undo the change to loginfo
diff --git a/CvsRepository.mdwn b/CvsRepository.mdwn
new file mode 100644
index 0000000..5dcec32
--- /dev/null
+++ b/CvsRepository.mdwn
@@ -0,0 +1,83 @@
+
+The DRI project has moved its CVS services to [[http://dri.freedesktop.org/|http://dri.freedesktop.org/]] , to reduce the pains related to [[SourceForge|SourceForge]]'s overloaded CVS services. The DRI project's CVS tree remains the upstream provider of the DRM (and is thus what is referred to as "DRM CVS"), but the xc tree is now obsolete and X.Org is the canonical source of DRI-enabled DDX drivers and GLX support.
+
+To check out DRM CVS from freedesktop.org anonymously, first you must login:
+
+ * [[!format txt """
+cvs -z3 -d:pserver:anonymous@dri.freedesktop.org:/cvs/dri login
+"""]]
+Hit `Enter` for the password.
+
+Then, check out the `drm` module:
+
+ * [[!format txt """
+cvs -z3 -d:pserver:anonymous@dri.freedesktop.org:/cvs/dri co drm
+"""]]
+If you wish to check out a [[branch|CvsBranches]] of the old `xc` DRI CVS, use the `-r tag`, e.g.:
+
+ * [[!format txt """
+cvs -z3 -d:pserver:anonymous@dri.freedesktop.org:/cvs/dri co -rmach64-0-0-6-branch xc
+"""]]
+You'll also need a copy of the Mesa CVS tree:
+
+ * [[!format txt """
+cvs -z3 -d:pserver:anonymous@dri.freedesktop.org:/cvs/mesa login
+
+cvs -z3 -d:pserver:anonymous@dri.freedesktop.org:/cvs/mesa co Mesa
+"""]]
+If you are a developer, CVS access is through ssh. Set `CVS_RSH=ssh` in your environment. Then, you can check out using
+
+ * [[!format txt """
+cvs -z3 -d:ext:username@dri.freedesktop.org:/cvs/dri co xc
+cvs -z3 -d:ext:username@dri.freedesktop.org:/cvs/dri co drm
+cvs -z3 -d:ext:username@dri.freedesktop.org:/cvs/mesa co Mesa
+"""]]
+
+
+---
+
+
+
+Parameter Overview:
+
+ * [[!format txt """
+SERVER=dri.freedesktop.org
+USER=anonymous
+PASSWORD=
+
+PROJECT_HOME=cvs
+PROJECT=dri
+
+MODULE=xc
+# other modules: something
+
+BRANCH=
+#BRANCH="-r something"
+"""]]
+
+
+---
+
+
+
+Generic Usage:
+
+ * [[!format txt """
+CVSROOT=:pserver:$USER@$SERVER:/$PROJECT_HOME/$PROJECT
+export CVSROOT
+cvs login
+if [ ! -e $MODULE ]
+then
+ cvs checkout $BRANCH $MODULE
+else
+ cvs update -d -A -P $BRANCH $MODULE
+fi
+cvs logout
+"""]]
+
+
+---
+
+
+
+See CVSup, [[CvsPolicy|CvsPolicy]], and [[CvsBranches|CvsBranches]] for more information on using the DRI CVS repository.
diff --git a/CvsRepository.moin b/CvsRepository.moin
deleted file mode 100644
index 5300add..0000000
--- a/CvsRepository.moin
+++ /dev/null
@@ -1,72 +0,0 @@
-The DRI project has moved its CVS services to http://dri.freedesktop.org/ , to reduce the pains related to SourceForge's overloaded CVS services. The DRI project's CVS tree remains the upstream provider of the DRM (and is thus what is referred to as "DRM CVS"), but the xc tree is now obsolete and X.Org is the canonical source of DRI-enabled DDX drivers and GLX support.
-
-To check out DRM CVS from freedesktop.org anonymously, first you must login:
-
- {{{
-cvs -z3 -d:pserver:anonymous@dri.freedesktop.org:/cvs/dri login
-}}}
-
-Hit `Enter` for the password.
-
-Then, check out the `drm` module:
-
- {{{
-cvs -z3 -d:pserver:anonymous@dri.freedesktop.org:/cvs/dri co drm
-}}}
-
-If you wish to check out a [[CvsBranches|branch]] of the old `xc` DRI CVS, use the `-r tag`, e.g.:
-
- {{{
-cvs -z3 -d:pserver:anonymous@dri.freedesktop.org:/cvs/dri co -rmach64-0-0-6-branch xc
-}}}
-
-You'll also need a copy of the Mesa CVS tree:
-
- {{{
-cvs -z3 -d:pserver:anonymous@dri.freedesktop.org:/cvs/mesa login
-
-cvs -z3 -d:pserver:anonymous@dri.freedesktop.org:/cvs/mesa co Mesa }}}
-
-If you are a developer, CVS access is through ssh. Set `CVS_RSH=ssh` in your environment. Then, you can check out using
-
- {{{
-cvs -z3 -d:ext:username@dri.freedesktop.org:/cvs/dri co xc
-cvs -z3 -d:ext:username@dri.freedesktop.org:/cvs/dri co drm
-cvs -z3 -d:ext:username@dri.freedesktop.org:/cvs/mesa co Mesa
-}}}
-
-----
-
-Parameter Overview:
- {{{
-SERVER=dri.freedesktop.org
-USER=anonymous
-PASSWORD=
-
-PROJECT_HOME=cvs
-PROJECT=dri
-
-MODULE=xc
-# other modules: something
-
-BRANCH=
-#BRANCH="-r something"
-}}}
-----
-
-Generic Usage:
- {{{
-CVSROOT=:pserver:$USER@$SERVER:/$PROJECT_HOME/$PROJECT
-export CVSROOT
-cvs login
-if [ ! -e $MODULE ]
-then
- cvs checkout $BRANCH $MODULE
-else
- cvs update -d -A -P $BRANCH $MODULE
-fi
-cvs logout
-}}}
-----
-
-See CVSup, CvsPolicy, and CvsBranches for more information on using the DRI CVS repository.
diff --git a/DDX.mdwn b/DDX.mdwn
new file mode 100644
index 0000000..0a89cb9
--- /dev/null
+++ b/DDX.mdwn
@@ -0,0 +1,23 @@
+
+
+## DDX
+
+For each type of graphics card there is a Device Dependent X (DDX) driver which does initialization, manages the display and performs 2D rendering. XFree86 4.0 introduced a new device driver interface called XAA which should allow XFree86 drivers to be backward compatible with future versions of the X server.
+
+Each 2D driver has a bit of code to bootstrap the 3D / DRI features.
+
+
+### Where does the DDX driver resides?
+
+The DDX drivers reside in a package called `xf86-video-foo`, where `foo` is usually the company that produces the hardware, or the hardware brand name, or something related (e.g. xf86-video-intel, xf86-video-ati, xf86-video-nouveau). The open source drivers are developed using [[Git|Git]] and hosted on `git.freedesktop.org`, which is accessible via a web interface at [[http://cgit.freedesktop.org/|http://cgit.freedesktop.org/]].
+
+The source code to the part of the DDX which is relevant to DRI and thus 3D acceleration is typically in files called `*_dri.[ch]`.
+
+
+### Possible future developments
+
+With the introduction of [[Kernel Mode Setting|Kernel Mode Setting]], it has become possible to write a generic DDX, called `xf86-video-modesetting`. This is only an experiment as of this writing (October 2008). The generic DDX would use a Gallium3D backend for hardware acceleration purposes.
+
+At XDC 2009, it was suggested to move many of the "main" DDX back into the X server Git repository.
+
+**Todo**: Merge/Link this page to something in the main X.org Wiki to avoid redundancy?
diff --git a/DDX.moin b/DDX.moin
deleted file mode 100644
index b7d5066..0000000
--- a/DDX.moin
+++ /dev/null
@@ -1,22 +0,0 @@
-== DDX ==
-
-For each type of graphics card there is a Device Dependent X (DDX) driver which
-does initialization, manages the display and performs 2D rendering. XFree86 4.0
-introduced a new device driver interface called XAA which should allow XFree86
-drivers to be backward compatible with future versions of the X server.
-
-Each 2D driver has a bit of code to bootstrap the 3D / DRI features.
-
-=== Where does the DDX driver resides? ===
-
-The DDX drivers reside in a package called `xf86-video-foo`, where `foo` is usually the company that produces the hardware, or the hardware brand name, or something related (e.g. xf86-video-intel, xf86-video-ati, xf86-video-nouveau). The open source drivers are developed using [[Git]] and hosted on `git.freedesktop.org`, which is accessible via a web interface at [[http://cgit.freedesktop.org/|http://cgit.freedesktop.org/]].
-
-The source code to the part of the DDX which is relevant to DRI and thus 3D acceleration is typically in files called `*_dri.[ch]`.
-
-=== Possible future developments ===
-
-With the introduction of [[Kernel Mode Setting]], it has become possible to write a generic DDX, called `xf86-video-modesetting`. This is only an experiment as of this writing (October 2008). The generic DDX would use a Gallium3D backend for hardware acceleration purposes.
-
-At XDC 2009, it was suggested to move many of the "main" DDX back into the X server Git repository.
-
-'''Todo''': Merge/Link this page to something in the main X.org Wiki to avoid redundancy?
diff --git a/DMA.mdwn b/DMA.mdwn
new file mode 100644
index 0000000..8dc0250
--- /dev/null
+++ b/DMA.mdwn
@@ -0,0 +1,11 @@
+
+
+## Direct Memory Access (DMA)
+
+This is the most complex of the data-transfer systems as both the host and the slave can access each others memory in any way they chose. As most !CS or !CprE people can quickly see, that only leads to more problems. So, DMA programming is the most complex of the three normal types of memory access. With DMA, an external chip/processor (let's be honest, a 3D processor counts as an external processor in its own right) can see anything in out memory space and we can see anything in its memory space -- barring limitations from things like the GART. With DMA, a typical interaction with an external chip/ processor is "here's an address at which you can find a complex data structure in my memory space in which you can find the commands and data to describe the operation which I wish you to perform. Have fun. Oh, tell me when you're done." DMA will normally allow the highest level of performance, but it does require some compromises that may sacrifice some latency for bandwidth.
+
+
+
+---
+
+ [[CategoryGlossary|CategoryGlossary]]
diff --git a/DMA.moin b/DMA.moin
deleted file mode 100644
index 4a946f4..0000000
--- a/DMA.moin
+++ /dev/null
@@ -1,18 +0,0 @@
-== Direct Memory Access (DMA) ==
-
-This is the most complex of the data-transfer systems as both the host and the
-slave can access each others memory in any way they chose. As most !CS or !CprE
-people can quickly see, that only leads to more problems. So, DMA programming
-is the most complex of the three normal types of memory access. With DMA, an
-external chip/processor (let's be honest, a 3D processor counts as an external
-processor in its own right) can see anything in out memory space and we can see
-anything in its memory space -- barring limitations from things like the GART.
-With DMA, a typical interaction with an external chip/ processor is "here's an
-address at which you can find a complex data structure in my memory space in
-which you can find the commands and data to describe the operation which I wish
-you to perform. Have fun. Oh, tell me when you're done." DMA will normally
-allow the highest level of performance, but it does require some compromises
-that may sacrifice some latency for bandwidth.
-
-----
-CategoryGlossary
diff --git a/DONETemplate.mdwn b/DONETemplate.mdwn
new file mode 100644
index 0000000..41ddc7f
--- /dev/null
+++ b/DONETemplate.mdwn
@@ -0,0 +1,3 @@
+[[!table header="no" class="mointable" data="""
+DONE
+"""]]
diff --git a/DONETemplate.moin b/DONETemplate.moin
deleted file mode 100644
index ede56ec..0000000
--- a/DONETemplate.moin
+++ /dev/null
@@ -1 +0,0 @@
-||<bgcolor="lightgreen">DONE||
diff --git a/DRI.mdwn b/DRI.mdwn
new file mode 100644
index 0000000..e3d75f3
--- /dev/null
+++ b/DRI.mdwn
@@ -0,0 +1,11 @@
+
+
+## Direct Rendering Infrastructure (DRI)
+
+One of the problems with Direct Rendering is that other applications (say the X11 server, or other OpenGL clients) might want to talk to the hardware at the same time. In addition there can be problems with security, multiple users, and several other things caused by the complexity of Unix. An intricate software design called the Direct Rendering Infrastructure coordinates everything and prevents problems. The DRI used on Linux was designed and implemented by Precision Insight (who were recently bought by VA Software, former VA Linux). The DRI was integrated into XFree86 4.0 and is available in that and all subsequent releases; current development is concentrating on Xorg instead of XFree86.
+
+
+
+---
+
+ [[CategoryGlossary|CategoryGlossary]]
diff --git a/DRI.moin b/DRI.moin
deleted file mode 100644
index ea91753..0000000
--- a/DRI.moin
+++ /dev/null
@@ -1,14 +0,0 @@
-== Direct Rendering Infrastructure (DRI) ==
-
-One of the problems with Direct Rendering
-is that other applications (say the X11 server, or other OpenGL clients) might
-want to talk to the hardware at the same time. In addition there can be
-problems with security, multiple users, and several other things caused by the
-complexity of Unix. An intricate software design called the Direct Rendering
-Infrastructure coordinates everything and prevents problems. The DRI used on
-Linux was designed and implemented by Precision Insight (who were recently
-bought by VA Software, former VA Linux). The DRI was integrated into XFree86 4.0 and is available
-in that and all subsequent releases; current development is concentrating on Xorg instead of XFree86.
-
-----
-CategoryGlossary
diff --git a/DRI2.mdwn b/DRI2.mdwn
new file mode 100644
index 0000000..72001e4
--- /dev/null
+++ b/DRI2.mdwn
@@ -0,0 +1,4 @@
+
+DRI2 information is available in the X.org wiki:
+
+[[http://wiki.x.org/wiki/DRI2|http://wiki.x.org/wiki/DRI2]]
diff --git a/DRI2.moin b/DRI2.moin
deleted file mode 100644
index add89c1..0000000
--- a/DRI2.moin
+++ /dev/null
@@ -1,3 +0,0 @@
-DRI2 information is available in the X.org wiki:
-
-http://wiki.x.org/wiki/DRI2
diff --git a/DRILocking.moin b/DRILocking.mdwn
index 78b8ae1..fc59d8e 100644
--- a/DRILocking.moin
+++ b/DRILocking.mdwn
@@ -1,68 +1,78 @@
-The DRI uses a fairly straightforward locking scheme to arbitrate access to the hardware. The old design docs are a bit out of date by now, so this page attempts to record how it works.
-
-NOTE: This page is a work in progress. If it looks like a mess, it is.
-
-== Context locking ==
-
-The primary arbitration mechanism is the DRM context lock. This guards access to a hardware context, allowing it to be shared among multiple rendering contexts. This is essential for single-context hardware, which includes most pre-DX9 cards.
-
-DRM clients - that is, any process using DRM services, including the X server - take the lock whenever they modify the state of that context. The lock is advisory; clients are not required to take it before touching the card, but if they don't, madness will follow. The unoptimized version of the lock is just an ioctl operation on the DRM device itself. While one client is holding the lock, other clients will block in the ioctl call until the holding client unlocks, at which point the kernel schedules in the next client.
-
-Most DRI drivers only take the lock right as they're about to submit commands to the card. The X server takes it every time it wakes up to process requests from X clients (during the so-called WakeupHandler) and releases it before executing any possibly-blocking select call (the BlockHandler).
-
-== Optimized context locking ==
-
-On most architectures, there is an optimization layer above this. The context lock itself is stored as a single dword in the SAREA, a shared mapping page owned by the kernel and mapped into the address space of every DRM client. Most of this word is devoted to the context ID, a small positive integer uniquely identifying a given context. The high bits are used to indicate two lock conditions: held, and contended. When a process goes to take the lock for the first time, it ioctls. The kernel then sets the context ID appropriately, and sets the HELD flag. At unlock, the client performs an atomic compare-and-swap on the lock: if the lock value is still the original context ID plus the HELD flag, it is atomically replaced with just the context ID, otherwise the client ioctls to the kernel to unlock. If the CAS succeeded, the next time the client attempts to take the lock, it does the same CAS operation in reverse: if the lock is just the context ID, set the held flag, else ioctl to acquire the lock. If the kernel receives a lock ioctl while the lock is already held, it sets the CONTENDED bit in the lock, thus ensuring that the holding client will ioctl to unlock and allow the next DRM client to schedule in.
-
-Okay, so that sounds pretty complex. What's the result for the client?
-
- * If the context is about to lock, and it was the last context to hold the lock, it can re-take it entirely in userspace, and can be assured that no card state has changed.
- * If the context is about to lock but was not the last context to hold the lock, it must ioctl to acquire the lock. This is potentially a blocking operation, and when the client continues it must re-emit state.
- * If the context is about to unlock, but no one is waiting for the lock, the lock is released with no kernel notification.
- * If the context is about to unlock and another context is waiting for the lock, the context must ioctl to the kernel to release it.
-
-== Drawable lock ==
-
-The above description is slightly simplified, because there's one other piece of 3D state that is involved.
-
-The window system maintains a clip list, which describes the overlaps among windows. In order for a direct rendering client to draw to the screen correctly, it must respect the server's ideas of window boundaries. To achieve this, the server maintains a small table in the SAREA of timestamps for each direct rendered drawable. Currently the limit is 256 direct rendered drawables.
-
-The SAREA also contains a drawable lock. This lock is logically after the context lock described above; it may only be taken by a context that already holds the context lock. The server takes this lock just before it modifies the clip list for any direct rendered drawable, and releases it during BlockHandler (that is, just before processing the next client request). After taking the drawable lock, the timestamp for that drawable is incremented.
-
-Once a GLX client has taken the DRM context lock, it needs to verify that its copy of the cliplist is current. It takes the drawable lock, and then verifies that the timestamp for the drawable it's about to draw to matches the last timestamp it saw. If the timestamp has changed, the cliplist has changed; the client then drops the drawable lock, then the context lock, and then sends DRI protocol to the X server to request the new cliplist for the drawable. Once it has received the reply, the sequence repeats, until the timestamp received in the DRI protocol reply matches the timestamp in the SAREA.
-
-== Context Switch Modes ==
-
-DRI_SERVER_SWAP, DRI_KERNEL_SWAP, DRI_HIDE_X_CONTEXT. TODO: remember what these are and write them down.
-
-== Multi-context hardware ==
-
-=== More than one, but finite, hardware contexts ===
-
-We don't currently have any drivers like this; glint may have worked this way, need to check. Would also be good to note here what hardware falls into this class.
-
-One way to handle this kind of hardware would be to use the base DRM context lock as the mechanism for creating new contexts and protecting the drawable lock (and for the server's context, I suppose), and to create auxiliary context locks in the SAREA for each hardware context. If you ever failed the CAS and had to ioctl for access to the context, you'd try to grab the master context and let the kernel assign you your next hardware context.
-
-=== Infinite hardware contexts but shared cliplist ===
-
-We don't currently have any finished drivers like this, but nouveau might behave this way. TODO: other hardware fitting this model?
-
-In this model you basically never need to hold the context lock except for cliplist validation.
-
-== Interaction with AIGLX ==
-
-The DRI driver is normally the component that takes the context lock. In the AIGLX server model, GLX rendering is handled in the server by the DRI driver, but the server also takes the lock. Clearly a handoff is needed.
-
-The X server takes the lock in WakeupHandler, and then attempts to dispatch into the GLX code. GLX notices that a DRI driver is loaded, and unlocks the DRM by calling '''just''' the BlockHandler for the DRI. If the DRI driver ever needs to take the lock it will now succeed (albeit with an ioctl, since the X server was the last DRM client to hold the lock). Once the request has finished dispatch, the GLX core calls the DRI's WakeupHandler so the server can reacquire the context lock.
-
-Note that since the ioctl is potentially a blocking operation, this does give greedy clients a chance to starve the X server of time. Thus far the consensus seems to be "don't do that then".
-
-== Interaction with multiple screens ==
-
-The X server takes one lock per X screen. Note that this means screen as in the protocol-visible object; :0.0 and :0.1 are different screens on the same display. MergedFB mode presents one screen per card. Zaphod mode presents one screen per output. As a result, for multiscreen systems, the X server can present some interesting scheduling challenges. This probably needs to be re-thought for the future.
-
-== Future optimization ideas ==
-
-The AIGLX handoff can be made slightly more robust in the face of greedy direct clients, by making the server set an additional property on the DRM lock when it first acquires it. This flag would instruct the kernel to block any other process from acquiring the DRM context until the server released it for good. This would have the pleasant side effect of fixing glucose correctness.
-
-If the DRM were significantly smarter, it could do away with the context lock for state emission altogether. DRM clients would simply submit all rendering commands to the DRM and let the kernel schedule their dispatch. Cliplist changes would simply be represented as reordering barriers in scheduling.
+
+The DRI uses a fairly straightforward locking scheme to arbitrate access to the hardware. The old design docs are a bit out of date by now, so this page attempts to record how it works.
+
+NOTE: This page is a work in progress. If it looks like a mess, it is.
+
+
+## Context locking
+
+The primary arbitration mechanism is the DRM context lock. This guards access to a hardware context, allowing it to be shared among multiple rendering contexts. This is essential for single-context hardware, which includes most pre-DX9 cards.
+
+DRM clients - that is, any process using DRM services, including the X server - take the lock whenever they modify the state of that context. The lock is advisory; clients are not required to take it before touching the card, but if they don't, madness will follow. The unoptimized version of the lock is just an ioctl operation on the DRM device itself. While one client is holding the lock, other clients will block in the ioctl call until the holding client unlocks, at which point the kernel schedules in the next client.
+
+Most DRI drivers only take the lock right as they're about to submit commands to the card. The X server takes it every time it wakes up to process requests from X clients (during the so-called [[WakeupHandler|WakeupHandler]]) and releases it before executing any possibly-blocking select call (the [[BlockHandler|BlockHandler]]).
+
+
+## Optimized context locking
+
+On most architectures, there is an optimization layer above this. The context lock itself is stored as a single dword in the SAREA, a shared mapping page owned by the kernel and mapped into the address space of every DRM client. Most of this word is devoted to the context ID, a small positive integer uniquely identifying a given context. The high bits are used to indicate two lock conditions: held, and contended. When a process goes to take the lock for the first time, it ioctls. The kernel then sets the context ID appropriately, and sets the HELD flag. At unlock, the client performs an atomic compare-and-swap on the lock: if the lock value is still the original context ID plus the HELD flag, it is atomically replaced with just the context ID, otherwise the client ioctls to the kernel to unlock. If the CAS succeeded, the next time the client attempts to take the lock, it does the same CAS operation in reverse: if the lock is just the context ID, set the held flag, else ioctl to acquire the lock. If the kernel receives a lock ioctl while the lock is already held, it sets the CONTENDED bit in the lock, thus ensuring that the holding client will ioctl to unlock and allow the next DRM client to schedule in.
+
+Okay, so that sounds pretty complex. What's the result for the client?
+
+* If the context is about to lock, and it was the last context to hold the lock, it can re-take it entirely in userspace, and can be assured that no card state has changed.
+* If the context is about to lock but was not the last context to hold the lock, it must ioctl to acquire the lock. This is potentially a blocking operation, and when the client continues it must re-emit state.
+* If the context is about to unlock, but no one is waiting for the lock, the lock is released with no kernel notification.
+* If the context is about to unlock and another context is waiting for the lock, the context must ioctl to the kernel to release it.
+
+## Drawable lock
+
+The above description is slightly simplified, because there's one other piece of 3D state that is involved.
+
+The window system maintains a clip list, which describes the overlaps among windows. In order for a direct rendering client to draw to the screen correctly, it must respect the server's ideas of window boundaries. To achieve this, the server maintains a small table in the SAREA of timestamps for each direct rendered drawable. Currently the limit is 256 direct rendered drawables.
+
+The SAREA also contains a drawable lock. This lock is logically after the context lock described above; it may only be taken by a context that already holds the context lock. The server takes this lock just before it modifies the clip list for any direct rendered drawable, and releases it during [[BlockHandler|BlockHandler]] (that is, just before processing the next client request). After taking the drawable lock, the timestamp for that drawable is incremented.
+
+Once a GLX client has taken the DRM context lock, it needs to verify that its copy of the cliplist is current. It takes the drawable lock, and then verifies that the timestamp for the drawable it's about to draw to matches the last timestamp it saw. If the timestamp has changed, the cliplist has changed; the client then drops the drawable lock, then the context lock, and then sends DRI protocol to the X server to request the new cliplist for the drawable. Once it has received the reply, the sequence repeats, until the timestamp received in the DRI protocol reply matches the timestamp in the SAREA.
+
+
+## Context Switch Modes
+
+DRI_SERVER_SWAP, DRI_KERNEL_SWAP, DRI_HIDE_X_CONTEXT. TODO: remember what these are and write them down.
+
+
+## Multi-context hardware
+
+
+### More than one, but finite, hardware contexts
+
+We don't currently have any drivers like this; glint may have worked this way, need to check. Would also be good to note here what hardware falls into this class.
+
+One way to handle this kind of hardware would be to use the base DRM context lock as the mechanism for creating new contexts and protecting the drawable lock (and for the server's context, I suppose), and to create auxiliary context locks in the SAREA for each hardware context. If you ever failed the CAS and had to ioctl for access to the context, you'd try to grab the master context and let the kernel assign you your next hardware context.
+
+
+### Infinite hardware contexts but shared cliplist
+
+We don't currently have any finished drivers like this, but nouveau might behave this way. TODO: other hardware fitting this model?
+
+In this model you basically never need to hold the context lock except for cliplist validation.
+
+
+## Interaction with AIGLX
+
+The DRI driver is normally the component that takes the context lock. In the AIGLX server model, GLX rendering is handled in the server by the DRI driver, but the server also takes the lock. Clearly a handoff is needed.
+
+The X server takes the lock in [[WakeupHandler|WakeupHandler]], and then attempts to dispatch into the GLX code. GLX notices that a DRI driver is loaded, and unlocks the DRM by calling **just** the [[BlockHandler|BlockHandler]] for the DRI. If the DRI driver ever needs to take the lock it will now succeed (albeit with an ioctl, since the X server was the last DRM client to hold the lock). Once the request has finished dispatch, the GLX core calls the DRI's [[WakeupHandler|WakeupHandler]] so the server can reacquire the context lock.
+
+Note that since the ioctl is potentially a blocking operation, this does give greedy clients a chance to starve the X server of time. Thus far the consensus seems to be "don't do that then".
+
+
+## Interaction with multiple screens
+
+The X server takes one lock per X screen. Note that this means screen as in the protocol-visible object; :0.0 and :0.1 are different screens on the same display. MergedFB mode presents one screen per card. Zaphod mode presents one screen per output. As a result, for multiscreen systems, the X server can present some interesting scheduling challenges. This probably needs to be re-thought for the future.
+
+
+## Future optimization ideas
+
+The AIGLX handoff can be made slightly more robust in the face of greedy direct clients, by making the server set an additional property on the DRM lock when it first acquires it. This flag would instruct the kernel to block any other process from acquiring the DRM context until the server released it for good. This would have the pleasant side effect of fixing glucose correctness.
+
+If the DRM were significantly smarter, it could do away with the context lock for state emission altogether. DRM clients would simply submit all rendering commands to the DRM and let the kernel schedule their dispatch. Cliplist changes would simply be represented as reordering barriers in scheduling.
diff --git a/DRM.mdwn b/DRM.mdwn
new file mode 100644
index 0000000..27fb9a7
--- /dev/null
+++ b/DRM.mdwn
@@ -0,0 +1,89 @@
+
+
+## Direct Rendering Manager (DRM)
+
+The DRM is a kernel module that gives direct hardware access to DRI clients.
+
+This module deals with DMA, AGP memory management, resource locking, and secure hardware access. In order to support multiple, simultaneous 3D applications the 3D graphics hardware must be treated as a shared resource. Locking is required to provide mutual exclusion. DMA transfers and the AGP interface are used to send buffers of graphics commands to the hardware. Finally, there must be security to prevent clients from escalating privilege using the graphics hardware.
+
+
+### Where does the DRM reside?
+
+Since internal Linux kernel interfaces and data structures may be changed at any time, DRI kernel modules must be specially compiled for a particular kernel version. The DRI kernel modules reside in the `/lib/modules/.../kernel/drivers/gpu/drm` directory. (The kernel modules were in the `/lib/modules/.../kernel/drivers/char/drm` directory before version 2.6.26.) Normally, the X server automatically loads whatever DRI kernel modules are needed.
+
+For each 3D hardware driver there is a kernel module, each of which requires the generic DRM support code.
+
+The source code is at git://anongit.freedesktop.org/git/mesa/drm
+
+
+### In what way does the DRM support the DRI?
+
+The DRM supports the DRI in three major ways:
+
+ 1. The DRM provides synchronized access to the graphics hardware. The direct rendering system has multiple entities (i.e., the X server, multiple direct-rendering clients, and the kernel) competing for direct access to the graphics hardware. Hardware that is currently available for PC-class machines will lock up if more than one entity is accessing the hardware (e.g., if two clients intermingle requests in the command FIFO or (on some hardware) if one client reads the framebuffer while another writes the command FIFO). The DRM provides a single per-device hardware lock to synchronize access to the hardware. The hardware lock may be required when the X server performs 2D rendering, when a direct-rendering client is performing a software fallback that must read or write the frame buffer, or when the kernel is dispatching DMA buffers. This hardware lock may not be required for all hardware (e.g., high-end hardware may be able to intermingle command requests from multiple clients) or for all implementations (e.g., one that uses a page fault mechanism instead of an explicit lock). In the later case, the DRM would be extended to provide support for this mechanism. For more details on the hardware lock requirements and a discussion of the performance implications and implementation details, please see [FOM99].
+ 1. The DRM enforces the DRI security policy for access to the graphics hardware. The X server, running as root, usually obtains access to the frame buffer and MMIO regions on the graphics hardware by mapping these regions using `/dev/mem`. The direct-rendering clients, however, do not run as root, but still require similar mappings. Like `/dev/mem`, the DRM device interface allows clients to create these mappings, but with the following restrictions:
+ * The client may only map regions if it has a current connection to the X server. This forces direct-rendering clients to obey the normal X server security policy (e.g., using `xauth`).
+ * The client may only map regions if it can open `/dev/drm?`, which is only accessible by root and by a group specified in the XF86Config file (a file that only root can edit). This allows the system administrator to restrict direct rendering access to a group of trusted users.
+ * The client may only map regions that the X server allows to be mapped. The X server may also restrict those mappings to be read-only. This allows regions with security implications (e.g., those containing registers that can start DMA) to be restricted.
+ 1. The DRM provides a generic DMA engine. Most modern PC-class graphics hardware provides for DMA access to the command FIFO. Often, DMA access has been optimized so that it provides significantly better throughput than does MMIO access. For these cards, the DRM provides a DMA engine with the following features:
+ * The X server can specify multiple pools of different sized buffers which are allocated and locked down.
+ * The direct-rendering client maps these buffers into its virtual address space, using the DRM API.
+ * The direct-rendering client reserves some of these buffers from the DRM, fills the buffers with commands, and requests that the DRM send the buffers to the graphics hardware. Small buffers are used to ensure that the X server can get the lock between buffer dispatches, thereby providing X server interactivity. Typical 40MB/s PCI transfer rates may require 10000 4kB buffer dispatches per second.
+ * The DRM manages a queue of DMA buffers for each OpenGL GLXContext, and detects when a GLXContext switch is necessary. Hooks are provided so that a device-specific driver can perform the GLXContext switch in kernel-space, and a callback to the X server is provided when a device-specific driver is not available (for the sample implementation, the callback mechanism is used because it provides an example of the most generic method for GLXContext switching). The DRM also performs simple scheduling of DMA buffer requests to prevent GLXContext thrashing. When a DMA is swapped a significant amount of data must be read from and/or written to the graphics device (between 4kB and 64kB for typical hardware).
+ * The DMA engine is generic in the sense that the X server provides information at run-time on how to perform DMA operations for the specific hardware installed on the machine. The X server does all of the hardware detection and setup. This allows easy bootstrapping for new graphics hardware under the DRI, while providing for later performance and capability enhancements through the use of a device-specific kernel driver.
+
+### Is it possible to make a DRI driver without a DRM driver in a piece of hardware whereby we do all accelerations in PIO mode?
+
+The kernel provides three main things:
+
+ 1. the ability to wait on a contended lock (the waiting process is put to sleep), and to free the lock of a dead process;
+ 1. the ability to mmap areas of memory that non-root processes can't usually map;
+ 1. the ability to handle hardware interruptions and a DMA queue.
+All of these are hard to do outside the kernel, but they aren't required components of a DRM driver. For example, the tdfx driver doesn't use hardware interrupts at all -- it is one of the simplest DRM drivers, and would be a good model for the hardware you are thinking about (in it's current form, it is quite generic).
+
+**Note:** DRI was designed with a very wide range of hardware in mind, ranging from very low-end PC graphics cards through very high-end SGI-like hardware (which may not even need the lock). The DRI is an infrastructure or framework that is very flexible -- most of the example drivers we have use hardware interrupts, but that isn't a requirement.
+
+
+### Has the DRM driver support for or loading sub-drivers?
+
+Although the [Faith99] states that the DRM driver has support for loading sub-drivers by calling drmCreateSub, Linus didn't like that approach. He wanted all drivers to be independent, so the top-level "DRM" module no longer exists and each DRM module is independent.
+
+
+### Is it possible to use floating point on the kernel?
+
+You _can_ use FP, but you have to jump through hoops to do so, especially if you're in an asynchronous context (i.e. interrupt or similar).
+
+In process context (i.e. ioctl code) you could just decide that part of the calling convention of the ioctl is that the FP register state is corrupted, and use FP fairly freely - but realizing that FP usage is basically the same as "access to user mode" and can cause traps.
+
+Oh, and getting an FP exception in the kernel is _definitely_ illegal, and can (and does) cause a hung box. The FP exception handling depends on a signal handler cleaning the thing up.
+
+In general, the rule would be: don't do it. It's possible, but there are a lot of cases you have to worry about, and it would be a _lot_ better to do the FP (including any coordinate snapping) in mesa in user mode, and maybe just verify the values in the kernel (which can be done with fairly simple integer arithmetic).
+
+ * -- [[LinusTorvalds|LinusTorvalds]]
+
+### When to use semaphores?
+
+ * _The problem appears to be that the DRM people are used to using semaphores to protect kernel data structures. That is **wrong**._
+Follow-up, just in case somebody asks "what are semaphores there for then?"
+
+There are reasons to use semaphores, but they are not about protecting data structures. They are mainly useful for protecting whole subsystems of code, notably in filesystems where we use semaphores extensively to protect things like concurrent access to a directory while doing lookups on it.
+
+Examples:
+
+* directory cache lookups (kernel "dcache" data structure): protected by "dcache_lock" spinlock
+* VFS callback into filesystem to do a lookup that wasn't cached protected by per-directory inode semaphore
+Basically, spinlocks protect data, while semaphores are more of a high-level "protect the concept" thing.
+
+I suspect that there is very little in the DRI code that would ever have a good reason to use a semaphore, they just shouldn't be used at that kind of low level (they might be useful for doing things like serializing device opening etc, so I'm not saying that DRI should never ever use one, but you get the idea).
+
+ * -- [[LinusTorvalds|LinusTorvalds]]
+
+### What future changes are going to be made to the DRM?
+
+There is a [[NextDRMVersion|NextDRMVersion]] page to put ideas for changes to be made to the DRM if we should ever decide to eliminate compatibility with previous versions.
+
+
+
+---
+
+ [[CategoryGlossary|CategoryGlossary]], [[CategoryFaq|CategoryFaq]]
diff --git a/DRM.moin b/DRM.moin
deleted file mode 100644
index 18f5d29..0000000
--- a/DRM.moin
+++ /dev/null
@@ -1,135 +0,0 @@
-== Direct Rendering Manager (DRM) ==
-
-The DRM is a kernel module that gives direct hardware access to DRI clients.
-
-This module deals with DMA, AGP memory management, resource locking, and secure
-hardware access. In order to support multiple, simultaneous 3D applications the
-3D graphics hardware must be treated as a shared resource. Locking is required
-to provide mutual exclusion. DMA transfers and the AGP interface are used to
-send buffers of graphics commands to the hardware. Finally, there must be
-security to prevent clients from escalating privilege using the graphics
-hardware.
-
-=== Where does the DRM reside? ===
-
-Since internal Linux kernel interfaces and data structures may be changed at any time, DRI kernel modules must be specially compiled for a particular kernel version. The DRI kernel modules reside in the `/lib/modules/.../kernel/drivers/gpu/drm` directory. (The kernel modules were in the `/lib/modules/.../kernel/drivers/char/drm` directory before version 2.6.26.) Normally, the X server automatically loads whatever DRI kernel modules are needed.
-
-For each 3D hardware driver there is a kernel module, each of which requires the generic DRM support code.
-
-The source code is at git://anongit.freedesktop.org/git/mesa/drm
-
-=== In what way does the DRM support the DRI? ===
-
-The DRM supports the DRI in three major ways:
-
- 1. The DRM provides synchronized access to the graphics hardware.
-
- The direct rendering system has multiple entities (i.e., the X server, multiple direct-rendering clients, and the kernel) competing for direct access to the graphics hardware. Hardware that is currently available for PC-class machines will lock up if more than one entity is accessing the hardware (e.g., if two clients intermingle requests in the command FIFO or (on some hardware) if one client reads the framebuffer while another writes the command FIFO).
-
- The DRM provides a single per-device hardware lock to synchronize access to the hardware. The hardware lock may be required when the X server performs 2D rendering, when a direct-rendering client is performing a software fallback that must read or write the frame buffer, or when the kernel is dispatching DMA buffers.
-
- This hardware lock may not be required for all hardware (e.g., high-end hardware may be able to intermingle command requests from multiple clients) or for all implementations (e.g., one that uses a page fault mechanism instead of an explicit lock). In the later case, the DRM would be extended to provide support for this mechanism.
-
- For more details on the hardware lock requirements and a discussion of the performance implications and implementation details, please see [FOM99].
-
- 1. The DRM enforces the DRI security policy for access to the graphics hardware.
-
- The X server, running as root, usually obtains access to the frame buffer and MMIO regions on the graphics hardware by mapping these regions using `/dev/mem`. The direct-rendering clients, however, do not run as root, but still require similar mappings. Like `/dev/mem`, the DRM device interface allows clients to create these mappings, but with the following restrictions:
- * The client may only map regions if it has a current connection to the X server. This forces direct-rendering clients to obey the normal X server security policy (e.g., using `xauth`).
- * The client may only map regions if it can open `/dev/drm?`, which is only accessible by root and by a group specified in the XF86Config file (a file that only root can edit). This allows the system administrator to restrict direct rendering access to a group of trusted users.
- * The client may only map regions that the X server allows to be mapped. The X server may also restrict those mappings to be read-only. This allows regions with security implications (e.g., those containing registers that can start DMA) to be restricted.
-
- 1. The DRM provides a generic DMA engine.
-
- Most modern PC-class graphics hardware provides for DMA access to the command FIFO. Often, DMA access has been optimized so that it provides significantly better throughput than does MMIO access. For these cards, the DRM provides a DMA engine with the following features:
-
- * The X server can specify multiple pools of different sized buffers which are allocated and locked down.
- * The direct-rendering client maps these buffers into its virtual address space, using the DRM API.
- * The direct-rendering client reserves some of these buffers from the DRM, fills the buffers with commands, and requests that the DRM send the buffers to the graphics hardware. Small buffers are used to ensure that the X server can get the lock between buffer dispatches, thereby providing X server interactivity. Typical 40MB/s PCI transfer rates may require 10000 4kB buffer dispatches per second.
- * The DRM manages a queue of DMA buffers for each OpenGL GLXContext, and detects when a GLXContext switch is necessary. Hooks are provided so that a device-specific driver can perform the GLXContext switch in kernel-space, and a callback to the X server is provided when a device-specific driver is not available (for the sample implementation, the callback mechanism is used because it provides an example of the most generic method for GLXContext switching). The DRM also performs simple scheduling of DMA buffer requests to prevent GLXContext thrashing. When a DMA is swapped a significant amount of data must be read from and/or written to the graphics device (between 4kB and 64kB for typical hardware).
- * The DMA engine is generic in the sense that the X server provides information at run-time on how to perform DMA operations for the specific hardware installed on the machine. The X server does all of the hardware detection and setup. This allows easy bootstrapping for new graphics hardware under the DRI, while providing for later performance and capability enhancements through the use of a device-specific kernel driver.
-
-
-=== Is it possible to make a DRI driver without a DRM driver in a piece of hardware whereby we do all accelerations in PIO mode? ===
-
-The kernel provides three main things:
-
- 1. the ability to wait on a contended lock (the waiting process is put to sleep), and to free the lock of a dead process;
-
- 1. the ability to mmap areas of memory that non-root processes can't usually map;
-
- 1. the ability to handle hardware interruptions and a DMA queue.
-
-
-All of these are hard to do outside the kernel, but they aren't required components of a DRM driver. For example, the tdfx driver doesn't use hardware interrupts at all -- it is one of the simplest DRM drivers, and would be a good model for the hardware you are thinking about (in it's current form, it is quite generic).
-
-'''Note:''' DRI was designed with a very wide range of hardware in mind, ranging from very low-end PC graphics cards through very high-end SGI-like hardware (which may not even need the lock). The DRI is an infrastructure or framework that is very flexible -- most of the example drivers we have use hardware interrupts, but that isn't a requirement.
-
-
-=== Has the DRM driver support for or loading sub-drivers? ===
-
-Although the [Faith99] states that the DRM driver has support for loading sub-drivers by calling drmCreateSub, Linus didn't like that approach. He wanted all drivers to be independent, so the top-level "DRM" module no longer exists and each DRM module is independent.
-
-=== Is it possible to use floating point on the kernel? ===
-
-You ''can'' use FP, but you have to jump through hoops to do so, especially
-if you're in an asynchronous context (i.e. interrupt or similar).
-
-In process context (i.e. ioctl code) you could just decide that part of
-the calling convention of the ioctl is that the FP register state is
-corrupted, and use FP fairly freely - but realizing that FP usage is
-basically the same as "access to user mode" and can cause traps.
-
-Oh, and getting an FP exception in the kernel is ''definitely'' illegal, and
-can (and does) cause a hung box. The FP exception handling depends on a
-signal handler cleaning the thing up.
-
-In general, the rule would be: don't do it. It's possible, but there are a
-lot of cases you have to worry about, and it would be a ''lot'' better to do
-the FP (including any coordinate snapping) in mesa in user mode, and maybe
-just verify the values in the kernel (which can be done with fairly simple
-integer arithmetic).
-
- -- LinusTorvalds
-
-=== When to use semaphores? ===
-
- ''The problem appears to be that the DRM people are used to using semaphores
- to protect kernel data structures. That is '''wrong'''.''
-
-Follow-up, just in case somebody asks "what are semaphores there for
-then?"
-
-There are reasons to use semaphores, but they are not about protecting
-data structures. They are mainly useful for protecting whole subsystems of
-code, notably in filesystems where we use semaphores extensively to
-protect things like concurrent access to a directory while doing lookups
-on it.
-
-Examples:
-
- * directory cache lookups (kernel "dcache" data structure):
-
- protected by "dcache_lock" spinlock
-
- * VFS callback into filesystem to do a lookup that wasn't cached
-
- protected by per-directory inode semaphore
-
-Basically, spinlocks protect data, while semaphores are more of a
-high-level "protect the concept" thing.
-
-I suspect that there is very little in the DRI code that would ever have a
-good reason to use a semaphore, they just shouldn't be used at that kind
-of low level (they might be useful for doing things like serializing
-device opening etc, so I'm not saying that DRI should never ever use one,
-but you get the idea).
-
- -- LinusTorvalds
-
-=== What future changes are going to be made to the DRM? ===
-There is a [[NextDRMVersion]] page to put ideas for changes to be made to the DRM
-if we should ever decide to eliminate compatibility with previous versions.
-
-----
-CategoryGlossary, CategoryFaq
diff --git a/DRMAccessControl.moin b/DRMAccessControl.mdwn
index a32961d..0681be2 100644
--- a/DRMAccessControl.moin
+++ b/DRMAccessControl.mdwn
@@ -1,13 +1,15 @@
-= DRM Access Control =
-
-''' What clients can access the DRM? '''
-
-Any client that can access the X server can access the DRM. This is not a security issue because a client can interfere with the display just as much with the X server as with the DRM.
-
-''' How does the client access the DRM? '''
-
-The client requests access to the X server. If this access is granted, the X server gives both the client and the DRM the same cookie. Next, the client opens the DRM device, passing the cookie to the DRM. The DRM compares the cookie it received from the client and the one it received from the X server. If they match, the DRM allows the client to access it in more useful ways.
-
-''' What prevents multiple clients of the DRM from interfering with one another? '''
-
-A well-behaved client would use the lock to regulate access. This ioctl-based lock blocks the client until the lock is released. However, this lock is cooperative, and a buggy or malicious client may ignore it.
+
+
+# DRM Access Control
+
+** What clients can access the DRM? **
+
+Any client that can access the X server can access the DRM. This is not a security issue because a client can interfere with the display just as much with the X server as with the DRM.
+
+** How does the client access the DRM? **
+
+The client requests access to the X server. If this access is granted, the X server gives both the client and the DRM the same cookie. Next, the client opens the DRM device, passing the cookie to the DRM. The DRM compares the cookie it received from the client and the one it received from the X server. If they match, the DRM allows the client to access it in more useful ways.
+
+** What prevents multiple clients of the DRM from interfering with one another? **
+
+A well-behaved client would use the lock to regulate access. This ioctl-based lock blocks the client until the lock is released. However, this lock is cooperative, and a buggy or malicious client may ignore it.
diff --git a/DRMProcess.moin b/DRMProcess.mdwn
index 9cfae0c..2341df2 100644
--- a/DRMProcess.moin
+++ b/DRMProcess.mdwn
@@ -1,51 +1,46 @@
-= DRM Development Process (Proposed) =
-
-1. Master branch in Linux tree style with links for BSD etc.
-
-2. Always compatible with current release Linux kernel + with backwards compat *where* practical for older kernels. We should probably limit the back compat
- to like 6 kernel revisions or something.
-
-3. Macros for BSD compat to wrap Linux APIs. So we minimise the nightmare of macros in driver code. no more DRM_ if they can be avoided.
-
-== Patches ==
-1. All patches to be sent to the mailing list with S-O-B, no patches to be committed to master branch. Nothing goes upstream or into master without Signed-off-by and maintainers Signed-off-by.
-2. Do not mix cleanup and developement ever. If you move a bunch of registers or code into a separate file, do just that in one patch.
-3. Backwards compat patches in separate patches. So first patch should be upstreamable, backwards compat patches should be in sequence.
-
-== Upstream first policy ==
-
-This policy places a restriction on users of the drm, i.e. Mesa, DDX, X server. No upstream release should include code that hasn't been included in a Linux kernel release cycle. Upstream can use a --enable-experimental-kernel-api type flag but default build should never require any unreleased kernel/drm API to build or run. Distros should not enable experimental APIs in releases, unless they are willing to version their kernel and other components against each other and deal with the fallout of API changes.
-
-All userspace APIs need to be submitted to dri-devel and to the Linux kernel list, also all patches which need exports or use new non-drm kernel functionality should be reviewed by both lists.
-
-Note: Do not expect because your code works that you won't have to re-write it all for upstream. So upstream ideas early esp when you interface to other kernel components.
-
-== Development ==
-
-1. For large features or new drivers create a new branch in drm tree. Stay in the branch, these branches will never ever get merged ever. ever. When the developers feel the branch is suitable for upstream, they need to create a clean set of patches following the rules above. All API additions need to be reviewed and feedback taken on board. If this involves another round of development, nuke the old branch and/or start a new one from the patchset. Repeat cycle.
-When patches are approved by anyone who cares they will get merged into the drm master and into the upstream drm-next queue. Backwards compat patches will be merged into drm master.
-
-2. For minor cleanups and fixes, patches should be sent to dri-devel.
-
-3. If a patch gets reverted from upstream kernel for a regression it will also be reverted from the drm master branch.
-
-4. If someone gets in the queue and you conflict you get to keep the mess.
-
-== DRM tree layout (plans) ==
-
-1. Create drivers/gpu/drm/ exactly a mirror of current upstream.
-2. Add backwards compat cleanly on top of this tree with some patches.
-3. Add BSD compat in places that need it.
-4. Migrate BSD to using the upstream src files instead of the shared-core ones.
-5. Evict all non-upstream patches to branches, currently
- - GEM
- - TTM
- - vblank-rework
- - i915 various bits, mmio oq interface.
-
-
-== Suggestions + help needed ==
-
-In the future we may find we need a transitory drm-testing branch that merges all the currently in development branches. This might
-help in resolving conflicts before they happen.
-It would be nice to tinderbox build the drm mainline and drm-testing against the last 6 released kernels.
+
+
+# DRM Development Process (Proposed)
+
+1. Master branch in Linux tree style with links for BSD etc.
+
+2. Always compatible with current release Linux kernel + with backwards compat *where* practical for older kernels. We should probably limit the back compat
+
+ * to like 6 kernel revisions or something.
+3. Macros for BSD compat to wrap Linux APIs. So we minimise the nightmare of macros in driver code. no more DRM_ if they can be avoided.
+
+
+## Patches
+
+1. All patches to be sent to the mailing list with S-O-B, no patches to be committed to master branch. Nothing goes upstream or into master without Signed-off-by and maintainers Signed-off-by. 2. Do not mix cleanup and developement ever. If you move a bunch of registers or code into a separate file, do just that in one patch. 3. Backwards compat patches in separate patches. So first patch should be upstreamable, backwards compat patches should be in sequence.
+
+
+## Upstream first policy
+
+This policy places a restriction on users of the drm, i.e. Mesa, DDX, X server. No upstream release should include code that hasn't been included in a Linux kernel release cycle. Upstream can use a --enable-experimental-kernel-api type flag but default build should never require any unreleased kernel/drm API to build or run. Distros should not enable experimental APIs in releases, unless they are willing to version their kernel and other components against each other and deal with the fallout of API changes.
+
+All userspace APIs need to be submitted to dri-devel and to the Linux kernel list, also all patches which need exports or use new non-drm kernel functionality should be reviewed by both lists.
+
+Note: Do not expect because your code works that you won't have to re-write it all for upstream. So upstream ideas early esp when you interface to other kernel components.
+
+
+## Development
+
+1. For large features or new drivers create a new branch in drm tree. Stay in the branch, these branches will never ever get merged ever. ever. When the developers feel the branch is suitable for upstream, they need to create a clean set of patches following the rules above. All API additions need to be reviewed and feedback taken on board. If this involves another round of development, nuke the old branch and/or start a new one from the patchset. Repeat cycle. When patches are approved by anyone who cares they will get merged into the drm master and into the upstream drm-next queue. Backwards compat patches will be merged into drm master.
+
+2. For minor cleanups and fixes, patches should be sent to dri-devel.
+
+3. If a patch gets reverted from upstream kernel for a regression it will also be reverted from the drm master branch.
+
+4. If someone gets in the queue and you conflict you get to keep the mess.
+
+
+## DRM tree layout (plans)
+
+1. Create drivers/gpu/drm/ exactly a mirror of current upstream. 2. Add backwards compat cleanly on top of this tree with some patches. 3. Add BSD compat in places that need it. 4. Migrate BSD to using the upstream src files instead of the shared-core ones. 5. Evict all non-upstream patches to branches, currently
+
+ * - GEM - TTM - vblank-rework - i915 various bits, mmio oq interface.
+
+## Suggestions + help needed
+
+In the future we may find we need a transitory drm-testing branch that merges all the currently in development branches. This might help in resolving conflicts before they happen. It would be nice to tinderbox build the drm mainline and drm-testing against the last 6 released kernels.
diff --git a/DRMRedesign.moin b/DRMRedesign.mdwn
index b6ebd1f..671d67e 100644
--- a/DRMRedesign.moin
+++ b/DRMRedesign.mdwn
@@ -1,20 +1,30 @@
-This is an explanation of where I think the DRM needs to go for modesetting + TTM to provide a flexible interface for users.
-
-{{http://people.freedesktop.org/~airlied/drm_new_design.png}}
-
-= DRM Device: =
-This is the central DRM device. There is one instance of this per GPU and consists of the GPU driver alog with drm core code. The DRM device exposes an interface to userspace via device minors. There will be 3 types of minors exposed.
-
-== Legacy Minor: ==
-Old style DRM interface for older drivers to use also if this is opened for a card it will block newer uses of the card until closed. Vice-versa if the control node has been used to setup other nodes then this node will not be openable. The X server by default will use this node to try and enable DRI for all devices.
-== Control Minor: ==
-The control node will act like a pts master. This node can be used by a system user manager to create a render node, that can be assigned modesetting resources such as a crtc/outputs. If no rendering resources are assigned to
-this node then it will be used for GPGPU type applications. The system user manager can then pass the render node to the render leader (i.e. the X server) via a command line option or env variable. The X server will then run as the user and open the correct render minor to gain access to the modesetting resources and rendering functionality. The control node can also be used to switch render nodes in and out of focus. Output resources can only be assigned to one render leader at a time. While the render leader isn't focused it can be suspended or can keep consuming resources in the background with no output displaying. This is under the control of the user manager.
-== Render Minor: ==
-The render node is what the user render leader connects to. The system can be configured with either a single render node with all crtcs/outputs available to a single user, or a render node per crtc with a set of configured outputs for multiple users to use. Also render nodes with no output resources can exist.
-
-= Locking and SAREA: =
-The current DRM design has one large single lock and a single sarea. With this new scheme the actual access to hw is locked within the kernel, clients must prepare buffers and submit them to the drm kernel driver for scheduling. Each render leader has its own private sarea based on DRI2 work, which is used to store cliprects and the lock protecting the cliprects.
-
-= Interrupt handling: =
-The main area under DRI2 is if we have in-kernel cliprect users we need to make sure the correct sarea is being accessed for the swap buffers. This could be two sareas as we may have a different render leader on each crtc.
+
+This is an explanation of where I think the DRM needs to go for modesetting + TTM to provide a flexible interface for users.
+
+[[!img http://people.freedesktop.org/~airlied/drm_new_design.png]
+
+
+# DRM Device:
+
+This is the central DRM device. There is one instance of this per GPU and consists of the GPU driver alog with drm core code. The DRM device exposes an interface to userspace via device minors. There will be 3 types of minors exposed.
+
+
+## Legacy Minor:
+
+Old style DRM interface for older drivers to use also if this is opened for a card it will block newer uses of the card until closed. Vice-versa if the control node has been used to setup other nodes then this node will not be openable. The X server by default will use this node to try and enable DRI for all devices.
+## Control Minor:
+
+The control node will act like a pts master. This node can be used by a system user manager to create a render node, that can be assigned modesetting resources such as a crtc/outputs. If no rendering resources are assigned to this node then it will be used for GPGPU type applications. The system user manager can then pass the render node to the render leader (i.e. the X server) via a command line option or env variable. The X server will then run as the user and open the correct render minor to gain access to the modesetting resources and rendering functionality. The control node can also be used to switch render nodes in and out of focus. Output resources can only be assigned to one render leader at a time. While the render leader isn't focused it can be suspended or can keep consuming resources in the background with no output displaying. This is under the control of the user manager.
+## Render Minor:
+
+The render node is what the user render leader connects to. The system can be configured with either a single render node with all crtcs/outputs available to a single user, or a render node per crtc with a set of configured outputs for multiple users to use. Also render nodes with no output resources can exist.
+
+
+# Locking and SAREA:
+
+The current DRM design has one large single lock and a single sarea. With this new scheme the actual access to hw is locked within the kernel, clients must prepare buffers and submit them to the drm kernel driver for scheduling. Each render leader has its own private sarea based on DRI2 work, which is used to store cliprects and the lock protecting the cliprects.
+
+
+# Interrupt handling:
+
+The main area under DRI2 is if we have in-kernel cliprect users we need to make sure the correct sarea is being accessed for the swap buffers. This could be two sareas as we may have a different render leader on each crtc.
diff --git a/DRMTemplates.mdwn b/DRMTemplates.mdwn
new file mode 100644
index 0000000..ca510f6
--- /dev/null
+++ b/DRMTemplates.mdwn
@@ -0,0 +1,121 @@
+
+
+## What is templated DRM code?
+
+It was first discussed in a email about what Gareth had done to bring up the mach64 kernel module.
+
+Not wanting to simply copy-and-paste another version of __drv.[ch]_, __context.c_, __bufs.s_ and so on, Gareth did some refactoring along the lines of what him and Rik Faith had discussed a long time ago.
+
+This is very much along the lines of a lot of Mesa code, where there exists a template header file that can be customized with a few defines. At the time, it was done __drv.c_ and __context.c_, creating _driver_tmp.h_ and _context_tmp.h_ that could be used to build up the core module.
+
+An inspection of _mach64_drv.c_ on the mach64-0-0-1-branch reveals the following code:
+
+ * [[!format txt """
+#define DRIVER_AUTHOR "Gareth Hughes"
+
+#define DRIVER_NAME "mach64"
+#define DRIVER_DESC "DRM module for the ATI Rage Pro"
+#define DRIVER_DATE "20001203"
+
+#define DRIVER_MAJOR 1
+#define DRIVER_MINOR 0
+#define DRIVER_PATCHLEVEL 0
+
+
+static drm_ioctl_desc_t mach64_ioctls[] = {
+ [DRM_IOCTL_NR(DRM_IOCTL_VERSION)] = { mach64_version, 0, 0 },
+ [DRM_IOCTL_NR(DRM_IOCTL_GET_UNIQUE)] = { drm_getunique, 0, 0 },
+ [DRM_IOCTL_NR(DRM_IOCTL_GET_MAGIC)] = { drm_getmagic, 0, 0 },
+ [DRM_IOCTL_NR(DRM_IOCTL_IRQ_BUSID)] = { drm_irq_busid, 0, 1 },
+
+ [DRM_IOCTL_NR(DRM_IOCTL_SET_UNIQUE)] = { drm_setunique, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_BLOCK)] = { drm_block, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_UNBLOCK)] = { drm_unblock, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_AUTH_MAGIC)] = { drm_authmagic, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_ADD_MAP)] = { drm_addmap, 1, 1 },
+
+ [DRM_IOCTL_NR(DRM_IOCTL_ADD_BUFS)] = { drm_addbufs, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_MARK_BUFS)] = { drm_markbufs, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_INFO_BUFS)] = { drm_infobufs, 1, 0 },
+ [DRM_IOCTL_NR(DRM_IOCTL_MAP_BUFS)] = { drm_mapbufs, 1, 0 },
+ [DRM_IOCTL_NR(DRM_IOCTL_FREE_BUFS)] = { drm_freebufs, 1, 0 },
+
+ [DRM_IOCTL_NR(DRM_IOCTL_ADD_CTX)] = { mach64_addctx, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_RM_CTX)] = { mach64_rmctx, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_MOD_CTX)] = { mach64_modctx, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_GET_CTX)] = { mach64_getctx, 1, 0 },
+ [DRM_IOCTL_NR(DRM_IOCTL_SWITCH_CTX)] = { mach64_switchctx, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_NEW_CTX)] = { mach64_newctx, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_RES_CTX)] = { mach64_resctx, 1, 0 },
+ [DRM_IOCTL_NR(DRM_IOCTL_ADD_DRAW)] = { drm_adddraw, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_RM_DRAW)] = { drm_rmdraw, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_LOCK)] = { mach64_lock, 1, 0 },
+ [DRM_IOCTL_NR(DRM_IOCTL_UNLOCK)] = { mach64_unlock, 1, 0 },
+ [DRM_IOCTL_NR(DRM_IOCTL_FINISH)] = { drm_finish, 1, 0 },
+
+#if defined(CONFIG_AGP) || defined(CONFIG_AGP_MODULE)
+ [DRM_IOCTL_NR(DRM_IOCTL_AGP_ACQUIRE)] = { drm_agp_acquire, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_AGP_RELEASE)] = { drm_agp_release, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_AGP_ENABLE)] = { drm_agp_enable, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_AGP_INFO)] = { drm_agp_info, 1, 0 },
+ [DRM_IOCTL_NR(DRM_IOCTL_AGP_ALLOC)] = { drm_agp_alloc, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_AGP_FREE)] = { drm_agp_free, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_AGP_BIND)] = { drm_agp_bind, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_AGP_UNBIND)] = { drm_agp_unbind, 1, 1 },
+#endif
+
+ [DRM_IOCTL_NR(DRM_IOCTL_MACH64_INIT)] = { mach64_dma_init, 1, 1 },
+ [DRM_IOCTL_NR(DRM_IOCTL_MACH64_CLEAR)] = { mach64_dma_clear, 1, 0 },
+ [DRM_IOCTL_NR(DRM_IOCTL_MACH64_SWAP)] = { mach64_dma_swap, 1, 0 },
+ [DRM_IOCTL_NR(DRM_IOCTL_MACH64_IDLE)] = { mach64_dma_idle, 1, 0 },
+};
+
+#define DRIVER_IOCTL_COUNT DRM_ARRAY_SIZE( mach64_ioctls )
+
+#define HAVE_CTX_BITMAP 1
+
+#define TAG(x) mach64_##x
+#include "driver_tmp.h"
+"""]]
+And that's all you need. A trivial amount of code is needed for the context handling:
+
+ * [[!format txt """
+#define __NO_VERSION__
+#include "drmP.h"
+#include "mach64_drv.h"
+
+#define TAG(x) mach64_##x
+#include "context_tmp.h"
+"""]]
+And as far as I can tell, the only thing that's keeping this out of _mach64_drv.c_ is the **<ins>NO_VERSION</ins>**, which is a 2.2 thing and is not used in 2.4 (right?).
+
+To enable all the context bitmap code, we see the
+
+ * [[!format txt """
+#define HAVE_CTX_BITMAP 1
+"""]]
+* To enable things like AGP, MTRR's and DMA management, the author simply needs to define the correct symbols. With less than five minutes of mach64-specific coding, I had a full kernel module that would do everything a basic driver requires -- enough to bring up a software-fallback driver. The above code is all that is needed for the tdfx driver, with appropriate name changes. Indeed, any card that doesn't do kernel-based DMA can have a fully functional DRM module with the above code. DMA-based drivers will need more, of course.
+The plan is to extend this to basic DMA setup and buffer management, so that the creation of PCI or AGP DMA buffers, installation of IRQs and so on is as trivial as this. What will then be left is the hardware-specific parts of the DRM module that deal with actually programming the card to do things, such as setting state for rendering or kicking off DMA buffers. That is, the interesting stuff.
+
+A couple of points:
+
+ * Why was it done like this, and not with C++ features like virtual functions (i.e. why don't I do it in C++)? Because it's the Linux kernel, dammit! No offense to any C++ fan who may be reading this :-) Besides, a lot of the initialization is order-dependent, so inserting or removing blocks of code with **#defines** is a nice way to achieve the desired result, at least in this situation.
+ * Much of the core DRM code (like _bufs.c_, _context.c_ and _dma.c_) will essentially move into these template headers. I feel that this is a better way to handle the common code. Take _context.c_ as a trivial example -- the i810, mga, tdfx, r128 and mach64 drivers have exactly the same code, with name changes. Take _bufs.c_ as a slightly more interesting example -- some drivers map only AGP buffers, some do both AGP and PCI, some map differently depending on their DMA queue management and so on. Again, rather than cutting and pasting the code from drm_addbufs into my driver, removing the sections I don't need and leaving it at that, I think keeping the core functionality in _bufs_tmp.h_ and allowing this to be customized at compile time is a cleaner and more maintainable solution.
+This it has the possibility to make keeping the other OS's code up to date a lot easier.
+
+The current mach64 branch is only using one template in the driver.
+
+Check out the r128 driver from the trunk, for a good example. Notice there are files in there such as _r128_tritmp.h_. This is a template that gets included in _r128_tris.c_. What it does basically is consolidate code that is largely reproduced over several functions, so that you set a few macros. For example:
+
+ * [[!format txt """
+#define IND (R128_TWOSIDE_BIT)
+#define TAG(x) x##_twoside
+"""]]
+followed by
+
+ * [[!format txt """
+#include "r128_tritmp.h"
+"""]]
+Notice the inline function's name defined in _r128_tritmp.h_ is the result of the TAG macro, as well the function's content is dependent on what IND value is defined. So essentially the inline function is a template for various functions that have a bit in common. That way you consolidate common code and keep things consistent.
+
+Look at e.g. [[xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/r128.h|http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/dri/xc/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/r128.h?rev=HEAD&content-type=text/vnd.viewcvs-markup]] though. That's the template architecture at its beauty. Most of the code is shared between the drivers, customized with a few defines. Compare that to the duplication and inconsistency before.
diff --git a/DRMTemplates.moin b/DRMTemplates.moin
deleted file mode 100644
index 87d765d..0000000
--- a/DRMTemplates.moin
+++ /dev/null
@@ -1,126 +0,0 @@
-== What is templated DRM code? ==
-
-It was first discussed in a email about what Gareth had done to bring up the mach64 kernel module.
-
-Not wanting to simply copy-and-paste another version of ''_drv.[ch]'', ''_context.c'', ''_bufs.s'' and so on, Gareth did some refactoring along the lines of what him and Rik Faith had discussed a long time ago.
-
-This is very much along the lines of a lot of Mesa code, where there exists a template header file that can be customized with a few defines. At the time, it was done ''_drv.c'' and ''_context.c'', creating ''driver_tmp.h'' and ''context_tmp.h'' that could be used to build up the core module.
-
-An inspection of ''mach64_drv.c'' on the mach64-0-0-1-branch reveals the following code:
-
- {{{
-#define DRIVER_AUTHOR "Gareth Hughes"
-
-#define DRIVER_NAME "mach64"
-#define DRIVER_DESC "DRM module for the ATI Rage Pro"
-#define DRIVER_DATE "20001203"
-
-#define DRIVER_MAJOR 1
-#define DRIVER_MINOR 0
-#define DRIVER_PATCHLEVEL 0
-
-
-static drm_ioctl_desc_t mach64_ioctls[] = {
- [DRM_IOCTL_NR(DRM_IOCTL_VERSION)] = { mach64_version, 0, 0 },
- [DRM_IOCTL_NR(DRM_IOCTL_GET_UNIQUE)] = { drm_getunique, 0, 0 },
- [DRM_IOCTL_NR(DRM_IOCTL_GET_MAGIC)] = { drm_getmagic, 0, 0 },
- [DRM_IOCTL_NR(DRM_IOCTL_IRQ_BUSID)] = { drm_irq_busid, 0, 1 },
-
- [DRM_IOCTL_NR(DRM_IOCTL_SET_UNIQUE)] = { drm_setunique, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_BLOCK)] = { drm_block, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_UNBLOCK)] = { drm_unblock, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_AUTH_MAGIC)] = { drm_authmagic, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_ADD_MAP)] = { drm_addmap, 1, 1 },
-
- [DRM_IOCTL_NR(DRM_IOCTL_ADD_BUFS)] = { drm_addbufs, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_MARK_BUFS)] = { drm_markbufs, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_INFO_BUFS)] = { drm_infobufs, 1, 0 },
- [DRM_IOCTL_NR(DRM_IOCTL_MAP_BUFS)] = { drm_mapbufs, 1, 0 },
- [DRM_IOCTL_NR(DRM_IOCTL_FREE_BUFS)] = { drm_freebufs, 1, 0 },
-
- [DRM_IOCTL_NR(DRM_IOCTL_ADD_CTX)] = { mach64_addctx, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_RM_CTX)] = { mach64_rmctx, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_MOD_CTX)] = { mach64_modctx, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_GET_CTX)] = { mach64_getctx, 1, 0 },
- [DRM_IOCTL_NR(DRM_IOCTL_SWITCH_CTX)] = { mach64_switchctx, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_NEW_CTX)] = { mach64_newctx, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_RES_CTX)] = { mach64_resctx, 1, 0 },
- [DRM_IOCTL_NR(DRM_IOCTL_ADD_DRAW)] = { drm_adddraw, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_RM_DRAW)] = { drm_rmdraw, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_LOCK)] = { mach64_lock, 1, 0 },
- [DRM_IOCTL_NR(DRM_IOCTL_UNLOCK)] = { mach64_unlock, 1, 0 },
- [DRM_IOCTL_NR(DRM_IOCTL_FINISH)] = { drm_finish, 1, 0 },
-
-#if defined(CONFIG_AGP) || defined(CONFIG_AGP_MODULE)
- [DRM_IOCTL_NR(DRM_IOCTL_AGP_ACQUIRE)] = { drm_agp_acquire, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_AGP_RELEASE)] = { drm_agp_release, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_AGP_ENABLE)] = { drm_agp_enable, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_AGP_INFO)] = { drm_agp_info, 1, 0 },
- [DRM_IOCTL_NR(DRM_IOCTL_AGP_ALLOC)] = { drm_agp_alloc, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_AGP_FREE)] = { drm_agp_free, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_AGP_BIND)] = { drm_agp_bind, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_AGP_UNBIND)] = { drm_agp_unbind, 1, 1 },
-#endif
-
- [DRM_IOCTL_NR(DRM_IOCTL_MACH64_INIT)] = { mach64_dma_init, 1, 1 },
- [DRM_IOCTL_NR(DRM_IOCTL_MACH64_CLEAR)] = { mach64_dma_clear, 1, 0 },
- [DRM_IOCTL_NR(DRM_IOCTL_MACH64_SWAP)] = { mach64_dma_swap, 1, 0 },
- [DRM_IOCTL_NR(DRM_IOCTL_MACH64_IDLE)] = { mach64_dma_idle, 1, 0 },
-};
-
-#define DRIVER_IOCTL_COUNT DRM_ARRAY_SIZE( mach64_ioctls )
-
-#define HAVE_CTX_BITMAP 1
-
-#define TAG(x) mach64_##x
-#include "driver_tmp.h"
-}}}
-
-And that's all you need. A trivial amount of code is needed for the context handling:
-
- {{{
-#define __NO_VERSION__
-#include "drmP.h"
-#include "mach64_drv.h"
-
-#define TAG(x) mach64_##x
-#include "context_tmp.h"
-}}}
-
-And as far as I can tell, the only thing that's keeping this out of ''mach64_drv.c'' is the '''__NO_VERSION__''', which is a 2.2 thing and is not used in 2.4 (right?).
-
-To enable all the context bitmap code, we see the
- {{{
-#define HAVE_CTX_BITMAP 1
-}}}
-
- To enable things like AGP, MTRR's and DMA management, the author simply needs to define the correct symbols. With less than five minutes of mach64-specific coding, I had a full kernel module that would do everything a basic driver requires -- enough to bring up a software-fallback driver. The above code is all that is needed for the tdfx driver, with appropriate name changes. Indeed, any card that doesn't do kernel-based DMA can have a fully functional DRM module with the above code. DMA-based drivers will need more, of course.
-
-The plan is to extend this to basic DMA setup and buffer management, so that the creation of PCI or AGP DMA buffers, installation of IRQs and so on is as trivial as this. What will then be left is the hardware-specific parts of the DRM module that deal with actually programming the card to do things, such as setting state for rendering or kicking off DMA buffers. That is, the interesting stuff.
-
-A couple of points:
-
- * Why was it done like this, and not with C++ features like virtual functions (i.e. why don't I do it in C++)? Because it's the Linux kernel, dammit! No offense to any C++ fan who may be reading this :-) Besides, a lot of the initialization is order-dependent, so inserting or removing blocks of code with '''#defines''' is a nice way to achieve the desired result, at least in this situation.
- * Much of the core DRM code (like ''bufs.c'', ''context.c'' and ''dma.c'') will essentially move into these template headers. I feel that this is a better way to handle the common code. Take ''context.c'' as a trivial example -- the i810, mga, tdfx, r128 and mach64 drivers have exactly the same code, with name changes. Take ''bufs.c'' as a slightly more interesting example -- some drivers map only AGP buffers, some do both AGP and PCI, some map differently depending on their DMA queue management and so on. Again, rather than cutting and pasting the code from drm_addbufs into my driver, removing the sections I don't need and leaving it at that, I think keeping the core functionality in ''bufs_tmp.h'' and allowing this to be customized at compile time is a cleaner and more maintainable solution.
-
-This it has the possibility to make keeping the other OS's code up to date a lot easier.
-
-The current mach64 branch is only using one template in the driver.
-
-Check out the r128 driver from the trunk, for a good example. Notice there are files in there such as ''r128_tritmp.h''. This is a template that gets included in ''r128_tris.c''. What it does basically is consolidate code that is largely reproduced over several functions, so that you set a few macros. For example:
-
- {{{
-#define IND (R128_TWOSIDE_BIT)
-#define TAG(x) x##_twoside
-}}}
-
-followed by
-
- {{{
-#include "r128_tritmp.h"
-}}}
-
-Notice the inline function's name defined in ''r128_tritmp.h'' is the result of the TAG macro, as well the function's content is dependent on what IND value is defined. So essentially the inline function is a template for various functions that have a bit in common. That way you consolidate common code and keep things consistent.
-
-Look at e.g. [[http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/dri/xc/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/r128.h?rev=HEAD&content-type=text/vnd.viewcvs-markup|xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/r128.h]] though. That's the template architecture at its beauty. Most of the code is shared between the drivers, customized with a few defines. Compare that to the duplication and inconsistency before.
-
diff --git a/DanMcCabe.mdwn b/DanMcCabe.mdwn
new file mode 100644
index 0000000..73630b7
--- /dev/null
+++ b/DanMcCabe.mdwn
@@ -0,0 +1,26 @@
+
+
+## Dan McCabe
+Email
+: zen3d.linux *AT* gmail *DOT* com
+
+Homepage
+: TBD
+
+Interests
+:
+ * 3D graphics hardware architectures
+ * 3D graphics system software
+ * 3D graphics applications
+ * Physics simulation
+ * Audio processing
+ * Playing electric guitar with LOTS of distortion
+
+
+I am OS agnostic and a contrarian, although most of my professional career has been spent within the sphere of influence of a certain small software company in Washington State. In all likelihood, you have probably used software that I have written. But take that with a grain of salt. I certainly do.
+
+
+
+---
+
+ [[CategoryHomepage|CategoryHomepage]]
diff --git a/DanMcCabe.moin b/DanMcCabe.moin
deleted file mode 100644
index b475c62..0000000
--- a/DanMcCabe.moin
+++ /dev/null
@@ -1,18 +0,0 @@
-== Dan McCabe ==
-
- Email:: zen3d.linux *AT* gmail *DOT* com
-
- Homepage:: TBD
-
- Interests::
- * 3D graphics hardware architectures
- * 3D graphics system software
- * 3D graphics applications
- * Physics simulation
- * Audio processing
- * Playing electric guitar with LOTS of distortion
-
-I am OS agnostic and a contrarian, although most of my professional career has been spent within the sphere of influence of a certain small software company in Washington State. In all likelihood, you have probably used software that I have written. But take that with a grain of salt. I certainly do.
-
-----
-CategoryHomepage
diff --git a/DanielStone.mdwn b/DanielStone.mdwn
new file mode 100644
index 0000000..cc568b1
--- /dev/null
+++ b/DanielStone.mdwn
@@ -0,0 +1,2 @@
+
+'hacker, iterant idiot'
diff --git a/DanielStone.moin b/DanielStone.moin
deleted file mode 100644
index 47efa29..0000000
--- a/DanielStone.moin
+++ /dev/null
@@ -1 +0,0 @@
-'hacker, iterant idiot'
diff --git a/DanilKutkevich.mdwn b/DanilKutkevich.mdwn
new file mode 100644
index 0000000..0015958
--- /dev/null
+++ b/DanilKutkevich.mdwn
@@ -0,0 +1,29 @@
+
+
+## Danil Kutkevich
+
+
+<div style="display:none">Email
+:
+
+</div>Homepage
+:
+[[http://www.kutkevich.org/|http://www.kutkevich.org/]]
+
+
+Interests
+:
+ * Free Software
+ * Sport
+
+
+
+### My Bookmarks
+
+* [[OpenGLFeatures|OpenGLFeatures]]
+* [[ATIRadeon|ATIRadeon]]
+
+
+---
+
+ [[CategoryHomepage|CategoryHomepage]]
diff --git a/DanilKutkevich.moin b/DanilKutkevich.moin
deleted file mode 100644
index bc2176b..0000000
--- a/DanilKutkevich.moin
+++ /dev/null
@@ -1,18 +0,0 @@
-== Danil Kutkevich ==
-
-{{{#!wiki comment/dotted
- Email::
-}}}
- Homepage:: http://www.kutkevich.org/
-
- Interests::
- * Free Software
- * Sport
-
-=== My Bookmarks ===
-
- * [[OpenGLFeatures]]
- * [[ATIRadeon]]
-
-----
-CategoryHomepage
diff --git a/DaveAirlie.mdwn b/DaveAirlie.mdwn
new file mode 100644
index 0000000..71c962a
--- /dev/null
+++ b/DaveAirlie.mdwn
@@ -0,0 +1,29 @@
+
+
+## Dave Airlie
+
+[[!img http://www.skynet.ie/~airlied/pics/airlied.gif]
+
+Maintaining i810/mach64 along with Linux 2.6 DRM maintainer.
+Email
+: airlied at linux dot ie
+
+Homepage
+:
+[[http://www.skynet.ie/~airlied/|http://www.skynet.ie/~airlied/]]
+
+
+Interests
+:
+ * Linux 2.6 DRM Maintainer
+ * I830 Driver
+ * Mach64 Driver
+ * I810 Driver
+ * Radeon Driver
+
+
+
+
+---
+
+ [[CategoryHomepage|CategoryHomepage]]
diff --git a/DaveAirlie.moin b/DaveAirlie.moin
deleted file mode 100644
index 561767d..0000000
--- a/DaveAirlie.moin
+++ /dev/null
@@ -1,22 +0,0 @@
-== Dave Airlie ==
-
-{{http://www.skynet.ie/~airlied/pics/airlied.gif}}
-
-Maintaining i810/mach64 along with Linux 2.6 DRM maintainer.
-
- Email:: airlied at linux dot ie
-
- Homepage:: http://www.skynet.ie/~airlied/
-
- Interests::
- * Linux 2.6 DRM Maintainer
- * I830 Driver
- * Mach64 Driver
- * I810 Driver
- * Radeon Driver
-
-----
-CategoryHomepage
-
-
-
diff --git a/DenisKrivosheev.mdwn b/DenisKrivosheev.mdwn
new file mode 100644
index 0000000..14e0476
--- /dev/null
+++ b/DenisKrivosheev.mdwn
@@ -0,0 +1,22 @@
+
+
+## xxx
+Email
+:
+[[xxx@xxx.com|mailto:xxx@xxx.com]]
+
+
+Homepage
+: ...
+
+Interests
+:
+ * ...
+ * ...
+
+
+
+
+---
+
+ [[CategoryHomepage|CategoryHomepage]]
diff --git a/DenisKrivosheev.moin b/DenisKrivosheev.moin
deleted file mode 100644
index 809d367..0000000
--- a/DenisKrivosheev.moin
+++ /dev/null
@@ -1,12 +0,0 @@
-== xxx ==
-
- Email:: xxx@xxx.com
-
- Homepage:: ...
-
- Interests::
- * ...
- * ...
-
-----
-CategoryHomepage
diff --git a/DevelopingForMesa.mdwn b/DevelopingForMesa.mdwn
new file mode 100644
index 0000000..f8d3d5b
--- /dev/null
+++ b/DevelopingForMesa.mdwn
@@ -0,0 +1,30 @@
+
+
+# Developing for Mesa
+
+Want to test your application on mesa? Please follow these instructions.
+
+
+## Testing
+
+* Install your distribution mesa packages
+* Make sure you're running mesa (glxinfo)
+* Test your app
+
+## Bug reporting
+
+If you app is broken in some way:
+
+* Try mesa from git either built from sources or using distro-provided packages
+* Tell us on IRC (#dri-devel on freenode), you may get a fast solution or a temporary work around.
+* If it is a bug, please report it on [[https://bugs.freedesktop.org|https://bugs.freedesktop.org]]:
+ * Product: Mesa
+ * Component: Choose the driver you are using (as reported by glxinfo)
+ * Version: Write the first to be known broken
+* Fill in your bug report. Include a description of the problem, Xorg logs, dmesg output, any mesa output and if it is applicable, please enclose a picture of the problem. Identify how to reproduce the problem. If possible, identify a small test-case (either in your application or a small demo).
+Now if you're brave enough to do so, write a piglit test (you can ask for help on IRC) to expose the situation or feature combinations that are problematic.
+
+
+## Conclusion
+
+Thanks for caring about Mesa and open source drivers.
diff --git a/DevelopingForMesa.moin b/DevelopingForMesa.moin
deleted file mode 100644
index c21127a..0000000
--- a/DevelopingForMesa.moin
+++ /dev/null
@@ -1,26 +0,0 @@
-= Developing for Mesa =
-
-Want to test your application on mesa? Please follow these instructions.
-
-== Testing ==
-
- * Install your distribution mesa packages
- * Make sure you're running mesa (glxinfo)
- * Test your app
-
-== Bug reporting ==
-
-If you app is broken in some way:
- * Try mesa from git either built from sources or using distro-provided packages
- * Tell us on IRC (#dri-devel on freenode), you may get a fast solution or a temporary work around.
- * If it is a bug, please report it on https://bugs.freedesktop.org:
- * Product: Mesa
- * Component: Choose the driver you are using (as reported by glxinfo)
- * Version: Write the first to be known broken
- * Fill in your bug report. Include a description of the problem, Xorg logs, dmesg output, any mesa output and if it is applicable, please enclose a picture of the problem. Identify how to reproduce the problem. If possible, identify a small test-case (either in your application or a small demo).
-
-Now if you're brave enough to do so, write a piglit test (you can ask for help on IRC) to expose the situation or feature combinations that are problematic.
-
-== Conclusion ==
-
-Thanks for caring about Mesa and open source drivers.
diff --git a/Development.mdwn b/Development.mdwn
new file mode 100644
index 0000000..274bd63
--- /dev/null
+++ b/Development.mdwn
@@ -0,0 +1,39 @@
+
+
+## Development
+
+General resources:
+
+ * [[GettingStarted|GettingStarted]]: getting started with DRI development
+ * [[DriArchitecture|DriArchitecture]]: the DRI architecture explained
+ * [[CategoryGlossary|CategoryGlossary]]: glossary
+ * [[References|References]]: links to other sites
+ * [[CategoryHardware|CategoryHardware]]: hardware specific information
+ * [[CommunicationSchemes|CommunicationSchemes]]
+Community/contact information:
+
+ * [[MailingLists|MailingLists]]
+ * [[BugZilla|BugZilla]] [[Bugzilla Bug Reporting System at freedesktop.org|http://bugs.freedesktop.org]]
+ * [[IRCMeetings|IRCMeetings]]
+ * [[CurrentDevelopers|CurrentDevelopers]]
+ * [[DRI Project Homepage at Sourceforge|http://sourceforge.net/projects/dri/]] (hosts mailing lists at the moment)
+Policy issues:
+
+ * [[BinaryCompatability|BinaryCompatability]]: binary compatibility policy
+ * [[CvsPolicy|CvsPolicy]]: CVS repository policy - note that GIT is nowadays used for [[Mesa & DRI drivers|http://cgit.freedesktop.org/mesa/mesa/]] (inside mesa code) and [[DRM kernel drivers|http://cgit.freedesktop.org/mesa/drm/]] (Direct Rendering Manager)
+ * [[NewDeveloperAccount|NewDeveloperAccount]]: how new accounts get added to the DRI project.
+ * [[NDA|NDA]]: non disclosure agreements
+Special topics:
+
+ * [[DRILocking|DRILocking]]
+ * [[DRI2|DRI2]] - information about DRI2
+ * [[DriWithoutX|DriWithoutX]]: DRI without an X server
+ * [[DrmModesetting|DrmModesetting]]: Enhancing DRM with modesetting and output configuration capabilities
+ * [[RadeonsiToDo|RadeonsiToDo]]: Radeonsi To Do list
+ * [[R600ToDo|R600ToDo]]: R600 To Do list
+ * [[R300ToDo|R300ToDo]]: R300 To Do list
+ * Benchmarks: [[R300Benchmark|R300Benchmark]], [[AGPBenchmarks|AGPBenchmarks]]
+ * [[PowerManagement|PowerManagement]]: power management support
+ * [[StereoSupport|StereoSupport]]: stereoscopic 3D support
+ * [[ConfigurationInfrastructure|ConfigurationInfrastructure]]: (GUI) configuration of the 3D drivers
+See also [[Documentation|Documentation]].
diff --git a/Development.moin b/Development.moin
deleted file mode 100644
index acbf502..0000000
--- a/Development.moin
+++ /dev/null
@@ -1,38 +0,0 @@
-== Development ==
-
-General resources:
- * GettingStarted: getting started with DRI development
- * DriArchitecture: the DRI architecture explained
- * CategoryGlossary: glossary
- * [[References]]: links to other sites
- * CategoryHardware: hardware specific information
- * CommunicationSchemes
-
-Community/contact information:
- * MailingLists
- * BugZilla [[http://bugs.freedesktop.org|Bugzilla Bug Reporting System at freedesktop.org]]
- * [[IRCMeetings]]
- * CurrentDevelopers
- * [[http://sourceforge.net/projects/dri/|DRI Project Homepage at Sourceforge]] (hosts mailing lists at the moment)
-
-Policy issues:
- * BinaryCompatability: binary compatibility policy
- * CvsPolicy: CVS repository policy - note that GIT is nowadays used for [[http://cgit.freedesktop.org/mesa/mesa/|Mesa & DRI drivers]] (inside mesa code) and [[http://cgit.freedesktop.org/mesa/drm/|DRM kernel drivers]] (Direct Rendering Manager)
- * NewDeveloperAccount: how new accounts get added to the DRI project.
- * [[NDA]]: non disclosure agreements
-
-Special topics:
-
- * [[DRILocking]]
- * [[DRI2]] - information about DRI2
- * [[DriWithoutX]]: DRI without an X server
- * [[DrmModesetting]]: Enhancing DRM with modesetting and output configuration capabilities
- * [[RadeonsiToDo]]: Radeonsi To Do list
- * [[R600ToDo]]: R600 To Do list
- * [[R300ToDo]]: R300 To Do list
- * Benchmarks: R300Benchmark, [[AGPBenchmarks]]
- * PowerManagement: power management support
- * StereoSupport: stereoscopic 3D support
- * ConfigurationInfrastructure: (GUI) configuration of the 3D drivers
-
-See also [[Documentation]].
diff --git a/Direct3D.mdwn b/Direct3D.mdwn
new file mode 100644
index 0000000..838cf83
--- /dev/null
+++ b/Direct3D.mdwn
@@ -0,0 +1,11 @@
+
+
+## Direct3D (D3D)
+
+Microsoft's proprietary 3D API. It was originally written by Render``Morphics and was acquired by Microsoft in 1995. Direct3D is available only on the Windows series of operating systems. Direct3D has captured the mindshare among most Windows developers, mostly due to the complete lack of any viable alternatives on the PC platform. Microsoft has been pushing Direct3D over OpenGL for many years, sometimes against the opposing wishes of Windows developers.
+
+
+
+---
+
+ [[CategoryGlossary|CategoryGlossary]]
diff --git a/Direct3D.moin b/Direct3D.moin
deleted file mode 100644
index 37d350b..0000000
--- a/Direct3D.moin
+++ /dev/null
@@ -1,12 +0,0 @@
-== Direct3D (D3D) ==
-
-Microsoft's proprietary 3D API. It was originally written by
-Render``Morphics and was acquired by Microsoft in 1995. Direct3D is available
-only on the Windows series of operating systems. Direct3D has captured the
-mindshare among most Windows developers, mostly due to the complete lack of any
-viable alternatives on the PC platform. Microsoft has been pushing Direct3D
-over OpenGL for many years, sometimes against the opposing wishes of Windows
-developers.
-
-----
-CategoryGlossary
diff --git a/DirectFB.mdwn b/DirectFB.mdwn
new file mode 100644
index 0000000..135685f
--- /dev/null
+++ b/DirectFB.mdwn
@@ -0,0 +1,20 @@
+
+
+## DirectFB
+
+DirectFB is a thin library that provides hardware graphics acceleration, input device handling and abstraction, integrated windowing system with support for translucent windows and multiple display layers on top of the Linux Framebuffer Device. It is a complete hardware abstraction layer with software fallbacks for every graphics operation that is not supported by the underlying hardware.
+
+
+### Resources
+
+ * [[DirectFB project homepage|http://www.directfb.org/]]
+ * [[DirectFB on DRI|http://www.directfb.org/directfbgl.xml]]
+
+### See also
+
+ * DriWithoutX
+
+
+---
+
+ [[CategoryGlossary|CategoryGlossary]]
diff --git a/DirectFB.moin b/DirectFB.moin
deleted file mode 100644
index 88714c6..0000000
--- a/DirectFB.moin
+++ /dev/null
@@ -1,19 +0,0 @@
-== DirectFB ==
-
-DirectFB is a thin library that provides hardware graphics acceleration, input
-device handling and abstraction, integrated windowing system with support for