The Witcher 3 Best Performance

Discussion in 'Videocards - AMD Radeon Drivers Section' started by Raziael, May 19, 2015.

  1. PrMinisterGR

    PrMinisterGR Ancient Guru

    Likes Received:
    Inno3D RTX 3090
    Triple buffering is triple buffering as far as I know. The Windows desktop manager doesn't do anything different. The only reason to use borderless fullscreen for triple buffering is if the game doesn't support it, and you can't force it through RadeonPro.

    Furthermore, the Witcher 3 is using triple buffering which can be seen at all the moments when the framerate goes below 60, as it scales normal (eg going to 55, 45 whatever( instead of fluctuating between 60 and 30. That cannot happen unless the game is triple buffered.
  2. tibbtobb

    tibbtobb Member

    Likes Received:
    MSI 280x @ 1150
    This is a common misconception, the Windows triple buffering is actually different.
    The correct implementation allows for dropping of frames, whereas the adding-an-additional-buffer-to-the-Vsync-queue version does not. Unfortunately most people refer to the latter as triple buffering, and is the form used in most games.
    Here is a great thread I found on NeoGAF.
    This post is especially worth a read.
    Its unfortunate that this information is not widely known and understood.

    Its the frame times that are important. Any vsync on a 60hz monitor will only allow 16.7ms or 33.3ms frametimes which is 60 or 30 fps, triple buffering doesn't change this. You can measure fps between 30 and 60 because it takes an average over a period of time. With 55 fps it will be that you get 16.7ms for most of the frames and 33.3ms for a few, bringing the average down. That is not the same as a true 55 fps though that would be 18.2ms frametime consistently.

    The difference with triple buffering is that it means that if a frame is finished early the GPU can work on the next frame in a third buffer, this helps to increase average fps. In the common implementation of triple buffering (all direct X level implementations; openGL and Windows windowed works differently) frames cannot be discarded which increases input latency. True triple buffering often has less input lag than double buffered vsync.
    Last edited: Jul 24, 2015
  3. The Mac

    The Mac Ancient Guru

    Likes Received:
    Sapphire R9-290 Vapor-X
    I think you are confusing triple buffering and render ahead/flip queue.

    Windowed mode uses OS/DX functions for TB as does RP, and d3doverrider. The 3rd buffer in this case is in parallel with the back buffer and alternately fills each of these buffers, back and forth When the next frame is needed, it just hands the front buffer which ever of the 2 is completed and continues its work. This allows for frame dropping because if you are over the sync limit, it never really needs the extra frame it rendered, and just drops its because its old. This has the added benefit of reduced input lag because it always drops the older frame. The one downside is its always rendering, which means it will peg usage at 100%.

    Some DEVS add an additional back buffer in SERIES with the existing buffer and call it triple buffering in their games. Technically, there are 3 buffers so it is Triple buffering in name only. Its really render ahead or flip queue. It actually increases lag.

    most games that support it do have it implemented correctly, but there are a few that don't.

    Render ahead/flip queue will NEVER allow variable frame rates between sync/half sync. It cant by its nature.

    Real TB will as there is always another frame available in one of the 2 back buffers so the front buffer doesn't starve (which is what causes the half sync drop without TB)

    Thats how you can tell.
    Last edited: Jul 24, 2015
  4. tibbtobb

    tibbtobb Member

    Likes Received:
    MSI 280x @ 1150
    I'm not confusing them, the flip queue is how many frames the CPU can prepare ahead of the GPU.

    I'm pretty sure and everything I have read says that windowed mode uses OS functions but TB through RP, and d3overrider adds an additional back buffer in series.
    This is why measurements this this get much less input lag for windowed mode than double buffered vsync or triple buffered vsync through D3DOverrider.
    Durante creator of the downscaling utility Gesodato, said that:
    'It's basically impossible to force correct triple buffering for DirectX9 titles in full-screen mode externally'.

  5. oGow89

    oGow89 Maha Guru

    Likes Received:
    Gigabyte RX 5700xt
    Ok i got a problem related to the amd drivers with this game................NOT.

    Any of you figured away to open the chest from the side quest, The price of honor?

    The thing won't open. :bang:

    I want to give the young poor fella some coins.
  6. The Mac

    The Mac Ancient Guru

    Likes Received:
    Sapphire R9-290 Vapor-X
    no, they do not. They both implement it correctly (to the extent anyone can due to dx9 limitations)

    My explanation was over simplified, but i will further clarify. There are no real front/back buffers or Series/Paralel. Its just a paradigm to explain basic functionality. Its just 3 buffers that swap the index around to indicate the buffer currently being used to display on the screen. IN render ahead, and incorectly impleneted TB, the index is swaped in order 1, 2, 3 repeat. In correct TB, its 1, 2. or 1, 3. repeat.

    Windowed mode works better because the OS (ie Aero) is more closely tied to the render stack than an external program. Only when Aero is turned on however. Also there is sometimes a performance hit from the Aero overhead and some introduced microstutterng. If your game plays nice with windowed mode, its usually the better choice.

    What durante is saying is due to the nature of DX9, you cant implement pure TB correctly without introducing lag, which by its nature is incorrectly implemented..

    Lag theoretically should be less from double to triple buffering but due to dx9 limitations, it gets introduced.

    Its all relative to how sensitive you are to lag. Ive never noticed any using TB in dx9, but ive heard other complain there is. I dont play twitch games either, which is where most of the lag complaints come from.

    If you get variable frame rate between sync/halfsync (60/30 in most cases) and GPU usage is pegged over vsync, then its as correctly implemented as can be.

    For most people, variable frame rate with vsync activated is the PRIMARY reason to use it.
    Last edited: Jul 24, 2015
  7. 00Dan

    00Dan New Member

    Likes Received:
    AMD Radeon R9 295x2
    Well, I got Windows 10 and Catalyst 15.7.1 installed and went to try The Witcher again with crossfire. Unfortunately, it is still a stuttering mess, with flicking still existing on 2D elements.

    Seems I will be waiting a while for a decent crossfire profile for this game.
  8. RexOmnipotentus

    RexOmnipotentus Master Guru

    Likes Received:
    Vega 64
    What i noticed is that the game starts to stutter if you max out both of your GPU's (by that i mean the maximum GPU load both cards can have with the current CrossFire profile). The stutter feels more like frames are skipping. It's very annoying and i only have this with CrossFire enabled.

    Luckily both of my cards aren't maxed out most of the time. It only happens in the swamp area for example.
  9. Agent-A01

    Agent-A01 Ancient Guru

    Likes Received:
    1080Ti H20
    Driver issue
  10. Rambo

    Rambo Master Guru

    Likes Received:
    RX 560 w8 4 Vega 56
    I guess something is wrong on your side. Checked on R9 380X nad R7 260X and everything is OK. GOG version with all DLCs.

  11. Garwinski

    Garwinski Member Guru

    Likes Received:
    XFX Fury X
    My XP bar has always flickered with crossfire, still the case now. Dont mind it though, as it is far less essential than the healthbar. Glad they at least fixed that issue.
  12. nichenstein

    nichenstein Member

    Likes Received:
    Sapphire R9 295x2
    So guys if you want Crosfire to work a litle better in W3 I m the guy to ask :D

    First download RadeonMod and change FlipQueeSize to 0 or 1 and Main3dDeF/Main3d to 0 or 1 from the UMD tab

    Second go to Steam\steamapps\common\The Witcher 3\bin\config (you get it right?) and change the performance.xml with this

    <?xml version="1.0" encoding="US-ASCII"?>
    <!--Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X]-->
    <device vid="1002" did="6798" preset="3" />
    <!--Curacao XT [Radeon R9 270X]-->
    <device vid="1002" did="6810" preset="2" />
    <!--Tonga PRO [Radeon R9 285]-->
    <device vid="1002" did="6939" preset="2" />
    <!--Hawaii [Radeon R9 290X]-->
    <device vid="1002" did="67B0" preset="3" />
    <!--Hawaii [Radeon R9 290X CrossfireX]-->
    <device vid="1002" did="67B0" preset="3" Crossfire="2" />
    <!--Pitcairn [Radeon R9 370]-->
    <device vid="1002" did="6810" preset="3" />
    <!--Tonga [Radeon R9 380]-->
    <device vid="1002" did="6939" preset="3" />
    <!--Tonga [Radeon R9 380X]-->
    <device vid="1002" did="6938" preset="3" />
    <!--Hawaii [Radeon R9 390]-->
    <device vid="1002" did="67B0" preset="3" />
    <!--Hawaii [Radeon R9 390X]-->
    <device vid="1002" did="67B0" preset="3" />
    <!--GF110 [GeForce GTX 560 Ti]-->
    <device vid="0x10DE" did="0x1082" preset="0" fpslimit="30" />
    <!--GF110 [GeForce GTX 560 Ti]-->
    <device vid="0x10DE" did="0x1087" preset="0" fpslimit="30" />
    <!--GF110 [GeForce GTX 560]-->
    <device vid="0x10DE" did="0x1084" preset="0" fpslimit="30" />
    <!--GF110 [GeForce GTX 570]-->
    <device vid="0x10DE" did="0x1081" preset="0" fpslimit="30" />
    <!--GF110 [GeForce GTX 570]-->
    <device vid="0x10DE" did="0x1086" preset="0" fpslimit="30" />
    <!--GF110 [GeForce GTX 580]-->
    <device vid="0x10DE" did="0x1080" preset="0" fpslimit="30" />
    <!--GF110 [GeForce GTX 580]-->
    <device vid="0x10DE" did="0x1089" preset="0" fpslimit="30" />
    <!--GF110 [GeForce GTX 580]-->
    <device vid="0x10DE" did="0x108b" preset="0" fpslimit="30" />
    <!--GF110 [GeForce GTX 590]-->
    <device vid="0x10DE" did="0x1088" preset="0" fpslimit="30" />
    <!--GK104 [GeForce GTX 660]-->
    <device vid="0x10DE" did="0x1185" preset="0" fpslimit="30" />
    <!--GK104 [GeForce GTX 670]-->
    <device vid="0x10DE" did="0x1189" preset="1" fpslimit="30" />
    <!--GK104 [GeForce GTX 760]-->
    <device vid="0x10DE" did="0x1187" preset="1" fpslimit="30" />
    <!--GK110 [GeForce GTX 780]-->
    <device vid="0x10DE" did="0x1004" preset="2" fpslimit="30" />
    <!--GK110 [GeForce GTX Titan LE]-->
    <device vid="0x10DE" did="0x1003" preset="3" />
    <!--GK110 [GeForce GTX Titan]-->
    <device vid="0x10DE" did="0x1005" preset="3" />
    <!--Geforce GTX 780 Ti-->
    <device vid="0x10DE" did="0x100a" preset="2" />
    <!--GeForce GTX 980-->
    <device vid="0x10DE" did="0x13c0" preset="3" />
    <!--GeForce GTX 980 Ti-->
    <device vid="0x10DE" did="0x17c8" preset="3" />
    <!--GeForce GTX 970-->
    <device vid="0x10DE" did="0x13c2" preset="3" />
    <!--GeForce GTX 960-->
    <device vid="0x10DE" did="0x1401" preset="3" />
    <!--GeForce GTX 950-->
    <device vid="0x10DE" did="0x1402" preset="3" />
    <!--GeForce GTX 1080-->
    <device vid="0x10DE" did="0x1B80" preset="3" />


    if ur GPU is not listed add it same as 290x Crosfire

    Third in Radeon Settings/ Gaming tab/ Witcher 3: Wild Hunt profile : Use only Shader Cahe on/Amd optimize Overide application stettings max 16x Amd CrossFire Mode : default/ witcher3relese.exe (for radeon software version 16.6.1) most important Frame pacing must be ON

    Last in W3 root folder (were Witcher3.exe is found)
    delete/move/rename APEX_ClothingGPU_x64.dll
    Also make sure in ur windows drive Users\Niche\Documents\The Witcher 3 user.settings find AllowClothSimulationOnGpu=false and change it to false if its set to true

    Optional visit try tweeking some settings, I found that shadows and HQ trees are the fps killers...

    NOTE: enabling Temporal AA might help with some Flickering, you can enable it via this mod or search it in user.settings

    If your GPU can handle it changing:
    TerrainErrorMetricMultiplier=0.1(near/far) via UGOM mod gives more tessellation to ground textures, looks better.

    Changeing TextureMipBias=-1.5 for 3200x1800 or -1.1==>-1.3 for 2560x1600 looks much more crispy

    This is the Ultimate Graphics Options Mod (UGOM)

    Installation clean UGOM:

    1. head to your YourWitcher3Directory\bin\ and make a Backup of the config folder
    2. Open UGOM.rar, inside you will find a bin folder and a mods folder
    3. paste these folders into you Witcher3 YourWitcher3Directory\ (overwrite the folders and files requested)
    4. open the game and have fun with the new graphics menu

    its an overhaul of graphics options menu for accessing advanced graphical settings without changing user.settings or restarting the game.

    You should also Disable any Overlay like steam/GOG/ fraps/ riva tuner etc.

    Sweet Fx SMA/Guassian Blur/Bloom/HDR eat to much fps, i recomand this sweet fx if you guys feel w3 is to gray

    or just use more saturation radeon settings/Preferences/radeon additional settings/Display color
    PS: i dont have an IPS monitor
    Taste may differ :D

    Novigrad Shuttering fix:

    Steam\steamapps\common\The Witcher 3\bin\config\base
    gc edit

    ; Lower limit for amount of free memory in the default pool that will automatically trigger the GC
    DefaultPoolMemoryTrigger = 2258

    ; Minimum number of frames between automatic GC
    ; NOTE: making this number to small with degrate gameplay quality
    ; Making this number to big may cause OOM
    IdleFrameCount = 900

    ; Maximum number of object that can be discarded at any given single time
    ; NOTE: making this number to small will cause memory to be leaked
    MaxDiscardListCount = 2000000

    ; After how many objects the automatic discard will be triggered
    AutoDiscardCount = 1000

    ; Report objects freed by GC as leaks

    rendering edit

    resources edit

    ; Master flag - enable the resource runtime unloading system
    ; This system is using refcounting instead of the Garbage Collector
    EnableUnloading = 0

    ; How many cleanup iterations we should do in one purge
    ; To few - we may risk delaying destruction of resources to much
    ; To much - stalls. Should not be bigger than the biggest dependency chain any way (which is around 10)
    MaxCleanupIterations = 10

    ; Minimal amount of frames between each resource purge
    AutoPurgeDelay = 30

    ; Resource grace period - resource will not be released even if it has no references for this amount of frames
    GracePeriod = 30

    ; Validation that the resources we thing we can free we can really free
    ; This is done by dependency scannig (kind of like in the GC) - VERY SLOW
    EnableValidation = 0

    ; Report potential memory leaks - objects that were referenced from the resources that we freed but did not get deleted
    EnableLeakCheck = 0

    ; Size of the file queue during game (when loading screen is not there)
    ; The bigger, the better
    FileQueueSizeGame = 250

    ; Size of the file queue during loading perios (when loading screen is there)
    ; The bigger, the better
    FileQueueSizeLoading = 700

    ; Number of files to load for which we do not bother with starting fully async process
    ; Basicaly - if we only have to load few file it does not matter if we use prefetching or not
    AsyncLoadingFileCountTreshold = 1

    ; Do we allow async loading to be used
    UseAsyncLoading = true

    ; Should we use dependency cache
    UseDependencyCache = true

    ; Streaming offset distance in meters (stream in Xm before autohide distance kicks in to allow dissolve to work)
    StreamingOffset = 2;

    ; Maximum number of AsyncIO requests that can be in flight from the resource loading system
    ; Note that anything more than 50 has a HIGH CHANCE of crashing/freezing the game
    ; The internal maximum number of pending async requests is 64 and we need to leave some slots avaiable for other systems (caches)
    MaxRequests = 45

    ; Reserved number of AsyncIO requests per priority
    ; Non zero value guarantees that there'll always be some free slots to service high priority trafic
    RequestsPriorityReserve = 4

    ; Maximum memory budget for compressed data
    ; The bigger, the faster the loading
    ; Note: the memory is not pre allocated, it's just tracked and limited
    MaxCompressedBudget = 10

    ; Maximum number of compressed blocks that are in-flight
    ; In general does not matter that much, do not make it to small
    MaxCompressedBlocks = 4096

    ; Maximum memory budget for uncompressed data
    ; The bigger, the faster the loading
    ; Note: the memory is not pre allocated, it's just tracked and limited
    ; Note2: this should always be bigger than MaxCompressedBudget value, usually x2.5 times (average compression ratio)
    MaxUncmpressedBudget = 240

    ; Maximum number of uncompressed blocks that are in-flight
    ; In general does not matter that much, do not make it to small
    MaxUncompressedBlocks = 4096

    PS: if this coses infinite loading edit back to original

    GPU/CPU OC gives litle fps boost (2-3) at least for me, but OC ram or upgrading it can give + 7-12 fps :D (from 1600MHZ to Vengeance® Pro Series DDR3 DRAM 2400MHz C10)
    Adding + Power limit via Radeon Settings could help maintain Smooth FPS

    Try launching Witcher 3 via Radeon Settings rather then steam/gog/exe

    I made this post in a haste, there might be some mistakes, sorry :nerd::
    Hope it helps :D
    Last edited: Jun 30, 2016

Share This Page