forum

Playing osu! on Old PC's with the help of dxvk (Vulkan)

posted
Total Posts
4
Topic Starter
Nadeoki
This post will demonstrate the utility of DXVK for playing on older Hardware, specifically older CPU's.

Ever since I started playing this game back in 2015, back when I only had an awful laptop to play on, I noticed that this game, for as simple it would seem to be, is very demanding graphics wise. This is primarily due to Shaders and frame rates but I digress. Older CPU's seem to have trouble keeping up, even with a 10xx Nvidia Card. Rendering 144 frames per second while keeping a low input delay or interp.

The friend in question has
- i5-2500k
- 1060 3GBVRM
- 8GB DDR3
- OS Win10

One thing I had thought could help was DXVK, a GitHub project I had found a few months prior while testing the new Intel Arc GPU. It helped especially on older games using the DirectX9 iteration like Source Games such as TF2.

Here's how to use DXVK in osu!

1. First, download the DXVK zip from the /releases page on github.
2. Go to your Osu! Install Directory. If you don't know how to find a Program's Directory watch this.
3. Create a Folder there called "bin". Now look inside the "dxvk-2.1.tar". Navigate to "dxvk-2.1.tar\dxvk-2.1\x64\".
4. Put both "d3d10core.dll" and "dxgi.dll" inside of the bin folder you created.
5. Launch osu! while holding the SHIFT key, select "Compatibility Mode" under Renderer.

Done!
Osu! should now be running on DX Vulkan, in Composite over DX10.

From my friend, I've seen his Performance Increase from having 2.5-3.0 ms input prior, to 0.6-1.0 ms after.
with less lag spikes as well.
aquamacho
Wait, is this legal?
I saw this thread on reddit a while ago: https://www.reddit.com/r/osugame/comments/v6rr98/osu_performance_lagfix_patch_for_dx12vulkan/

"it's been reported that peppy views this as equivalent to cheats so I definitely wouldn't attempt this"

Also, if you put any d3d9.dll in the same directory as osu!.exe, updater just deletes the file.
Also_2: you need x32 folder, not x64, osu is 32bit? and osu! is directx9 i think... (when in compatibility mode)

Seems like I can`t get this to work, for me osu is still running in d3d9 (i can tell because i still have alt-tab bug), and there is no d3d9.log nor dxgi.log, and osu!.dxvk-cache is missing. I did all the steps you specified btw.

Nadeoki, How did you verify that osu! is actually running in Vulkan mode?

I`m sad now :(

To the development team:
Is there like a chance to officially ship dxvk with the game?, or allow it on Windows same as on Linux, but just i don`t know, like checking the hashes of the d3d9.dll and dxgi.dll while game starts up or smtn? this is big improvement from OpenGL renderer, OpenGL sucks on AMD right now... (on Windows atleast)

Like, i love how using a tool like KeyASIO is totally fine, but using dxvk to literally make the game enjoyable to play is a big no no.

Ryu Sei wrote:

I think there is a discussion about implementing Vulkan, but not on stable. It's on lazer, you should check it out.
Yes, i will do for sure, when Lazer releases and does replace stable. For now im playing on stable.
Ryu Sei

Why_Sky_IS_Blue wrote:

Is there like a chance to officially ship dxvk with the game?, or allow it on Windows same as on Linux, but just i don`t know, like checking the hashes of the d3d9.dll and dxgi.dll or smtn? this is big improvement from OpenGL renderer, OpenGL sucks on AMD right now... (on Windows atleast)
I think there is a discussion about implementing Vulkan, but not on stable. It's on lazer, you should check it out.
aquamacho

Ryu Sei wrote:

I think there is a discussion about implementing Vulkan, but not on stable. It's on lazer, you should check it out.
May i ask *for scientific reasons*, is this still considered cheating or no?, if i copy two .dlls (d3d9.dll and dxgi.dll) 1 second after osu updater deletes old ones, will i get banned doing so?

Btw. @Nadeoki, this is what you'll see if you did it properly, you did it wrong in your guide:
osu!_d3d9.log

info: Game: osu!.exe
info: DXVK: v2.3
info: Vulkan: Found vkGetInstanceProcAddr in vulkan-1.dll @ 0x677a16e0
info: Built-in extension providers:
info: Win32 WSI
info: OpenVR
info: OpenXR
info: OpenVR: could not open registry key, status 2
info: OpenVR: Failed to locate module
info: Enabled instance extensions:
info: VK_KHR_get_surface_capabilities2
info: VK_KHR_surface
info: VK_KHR_win32_surface
info: D3D9: VK_FORMAT_D24_UNORM_S8_UINT -> VK_FORMAT_D32_SFLOAT_S8_UINT
info: AMD Radeon RX 6700 XT:
info: Driver : AMD proprietary driver 2.0.299
info: Memory Heap[0]:
info: Size: 16081 MiB
info: Flags: 0x0
info: Memory Type[1]: Property Flags = 0x6
info: Memory Type[3]: Property Flags = 0xe
info: Memory Type[5]: Property Flags = 0xc6
info: Memory Type[7]: Property Flags = 0xce
info: Memory Type[9]: Property Flags = 0x6
info: Memory Type[11]: Property Flags = 0xe
info: Memory Type[13]: Property Flags = 0xc6
info: Memory Type[15]: Property Flags = 0xce
info: Memory Heap[1]:
info: Size: 12272 MiB
info: Flags: 0x3
info: Memory Type[0]: Property Flags = 0x1
info: Memory Type[2]: Property Flags = 0x7
info: Memory Type[4]: Property Flags = 0xc1
info: Memory Type[6]: Property Flags = 0xc7
info: Memory Type[8]: Property Flags = 0x1
info: Memory Type[10]: Property Flags = 0x7
info: Memory Type[12]: Property Flags = 0xc1
info: Memory Type[14]: Property Flags = 0xc7
info: D3D9: VK_FORMAT_D24_UNORM_S8_UINT -> VK_FORMAT_D32_SFLOAT_S8_UINT
info: AMD Radeon RX 6700 XT:
info: Driver : AMD proprietary driver 2.0.299
info: Memory Heap[0]:
info: Size: 16081 MiB
info: Flags: 0x0
info: Memory Type[1]: Property Flags = 0x6
info: Memory Type[3]: Property Flags = 0xe
info: Memory Type[5]: Property Flags = 0xc6
info: Memory Type[7]: Property Flags = 0xce
info: Memory Type[9]: Property Flags = 0x6
info: Memory Type[11]: Property Flags = 0xe
info: Memory Type[13]: Property Flags = 0xc6
info: Memory Type[15]: Property Flags = 0xce
info: Memory Heap[1]:
info: Size: 12272 MiB
info: Flags: 0x3
info: Memory Type[0]: Property Flags = 0x1
info: Memory Type[2]: Property Flags = 0x7
info: Memory Type[4]: Property Flags = 0xc1
info: Memory Type[6]: Property Flags = 0xc7
info: Memory Type[8]: Property Flags = 0x1
info: Memory Type[10]: Property Flags = 0x7
info: Memory Type[12]: Property Flags = 0xc1
info: Memory Type[14]: Property Flags = 0xc7
info: Process set as DPI aware
info: Device properties:
info: Device : AMD Radeon RX 6700 XT
info: Driver : AMD proprietary driver 2.0.299
info: Enabled device extensions:
info: VK_AMD_memory_overallocation_behavior
info: VK_AMD_shader_fragment_mask
info: VK_EXT_attachment_feedback_loop_layout
info: VK_EXT_conservative_rasterization
info: VK_EXT_custom_border_color
info: VK_EXT_depth_clip_enable
info: VK_EXT_extended_dynamic_state3
info: VK_EXT_full_screen_exclusive
info: VK_EXT_hdr_metadata
info: VK_EXT_memory_priority
info: VK_EXT_non_seamless_cube_map
info: VK_EXT_robustness2
info: VK_EXT_shader_module_identifier
info: VK_EXT_shader_stencil_export
info: VK_EXT_transform_feedback
info: VK_EXT_vertex_attribute_divisor
info: VK_KHR_external_memory_win32
info: VK_KHR_external_semaphore_win32
info: VK_KHR_maintenance5
info: VK_KHR_pipeline_library
info: VK_KHR_swapchain
info: VK_KHR_win32_keyed_mutex
info: Device features:
info: robustBufferAccess : 1
info: fullDrawIndexUint32 : 1
info: imageCubeArray : 1
info: independentBlend : 1
info: geometryShader : 1
info: tessellationShader : 0
info: sampleRateShading : 1
info: dualSrcBlend : 0
info: logicOp : 0
info: multiDrawIndirect : 0
info: drawIndirectFirstInstance : 0
info: depthClamp : 1
info: depthBiasClamp : 1
info: fillModeNonSolid : 1
info: depthBounds : 1
info: wideLines : 0
info: multiViewport : 1
info: samplerAnisotropy : 1
info: textureCompressionBC : 1
info: occlusionQueryPrecise : 1
info: pipelineStatisticsQuery : 1
info: vertexPipelineStoresAndAtomics : 1
info: fragmentStoresAndAtomics : 0
info: shaderImageGatherExtended : 0
info: shaderClipDistance : 1
info: shaderCullDistance : 1
info: shaderFloat64 : 0
info: shaderInt64 : 0
info: variableMultisampleRate : 1
info: shaderResourceResidency : 0
info: shaderResourceMinLod : 0
info: sparseBinding : 0
info: sparseResidencyBuffer : 0
info: sparseResidencyImage2D : 0
info: sparseResidencyImage3D : 0
info: sparseResidency2Samples : 0
info: sparseResidency4Samples : 0
info: sparseResidency8Samples : 0
info: sparseResidency16Samples : 0
info: sparseResidencyAliased : 0
info: Vulkan 1.1
info: shaderDrawParameters : 0
info: Vulkan 1.2
info: samplerMirrorClampToEdge : 1
info: drawIndirectCount : 1
info: samplerFilterMinmax : 0
info: hostQueryReset : 1
info: timelineSemaphore : 1
info: bufferDeviceAddress : 0
info: shaderOutputViewportIndex : 1
info: shaderOutputLayer : 1
info: vulkanMemoryModel : 1
info: Vulkan 1.3
info: robustImageAccess : 0
info: pipelineCreationCacheControl : 1
info: shaderDemoteToHelperInvocation : 1
info: shaderZeroInitializeWorkgroupMemory : 0
info: synchronization2 : 1
info: dynamicRendering : 1
info: VK_AMD_shader_fragment_mask
info: extension supported : 1
info: VK_EXT_attachment_feedback_loop_layout
info: attachmentFeedbackLoopLayout : 1
info: VK_EXT_conservative_rasterization
info: extension supported : 1
info: VK_EXT_custom_border_color
info: customBorderColors : 1
info: customBorderColorWithoutFormat : 1
info: VK_EXT_depth_clip_enable
info: depthClipEnable : 1
info: VK_EXT_depth_bias_control
info: depthBiasControl : 0
info: leastRepresentableValueForceUnormRepresentation : 0
info: floatRepresentation : 0
info: depthBiasExact : 0
info: VK_EXT_extended_dynamic_state3
info: extDynamicState3AlphaToCoverageEnable : 1
info: extDynamicState3DepthClipEnable : 1
info: extDynamicState3RasterizationSamples : 1
info: extDynamicState3SampleMask : 1
info: extDynamicState3LineRasterizationMode : 1
info: VK_EXT_fragment_shader_interlock
info: fragmentShaderSampleInterlock : 0
info: fragmentShaderPixelInterlock : 0
info: VK_EXT_full_screen_exclusive
info: extension supported : 1
info: VK_EXT_graphics_pipeline_library
info: graphicsPipelineLibrary : 0
info: VK_EXT_line_rasterization
info: rectangularLines : 0
info: smoothLines : 0
info: VK_EXT_memory_budget
info: extension supported : 1
info: VK_EXT_memory_priority
info: memoryPriority : 1
info: VK_EXT_non_seamless_cube_map
info: nonSeamlessCubeMap : 1
info: VK_EXT_robustness2
info: robustBufferAccess2 : 1
info: robustImageAccess2 : 1
info: nullDescriptor : 1
info: VK_EXT_shader_module_identifier
info: shaderModuleIdentifier : 1
info: VK_EXT_shader_stencil_export
info: extension supported : 1
info: VK_EXT_swapchain_colorspace
info: extension supported : 0
info: VK_EXT_swapchain_maintenance1
info: swapchainMaintenance1 : 0
info: VK_EXT_hdr_metadata
info: extension supported : 1
info: VK_EXT_transform_feedback
info: transformFeedback : 0
info: geometryStreams : 0
info: VK_EXT_vertex_attribute_divisor
info: vertexAttributeInstanceRateDivisor : 1
info: vertexAttributeInstanceRateZeroDivisor : 1
info: VK_KHR_external_memory_win32
info: extension supported : 1
info: VK_KHR_external_semaphore_win32
info: extension supported : 1
info: VK_KHR_maintenance5
info: maintenance5 : 1
info: VK_KHR_present_id
info: presentId : 0
info: VK_KHR_present_wait
info: presentWait : 0
info: VK_NVX_binary_import
info: extension supported : 0
info: VK_NVX_image_view_handle
info: extension supported : 0
info: VK_KHR_win32_keyed_mutex
info: extension supported : 1
info: Queue families:
info: Graphics : 0
info: Transfer : 2
info: Sparse : 0
info: DXVK: Read 42 valid state cache entries
info: DXVK: Graphics pipeline libraries not supported
info: D3D9DeviceEx::ResetSwapChain:
info: Requested Presentation Parameters
info: - Width: 1
info: - Height: 1
info: - Format: D3D9Format::Unknown
info: - Auto Depth Stencil: false
info: ^ Format: D3D9Format::Unknown
info: - Windowed: true
info: - Swap effect: 1
info: Presenter: Actual swap chain properties:
info: Format: VK_FORMAT_R8G8B8A8_UNORM
info: Color space: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
info: Present mode: VK_PRESENT_MODE_IMMEDIATE_KHR (dynamic: no)
info: Buffer size: 1x1
info: Image count: 3
info: Exclusive FS: 0

Nadeoki wrote:

3. Navigate to "dxvk-2.1.tar\dxvk-2.1\x64\".
this is wrong, you need 32

Nadeoki wrote:

4. Put both "d3d10core.dll" and "dxgi.dll" inside of the bin folder you created.
same here, d3d9.dll

Nadeoki wrote:

Create a Folder there called "bin".
Also this😆, what for?

Nadeoki wrote:

his Performance Increase from having 2.5-3.0 ms input prior, to 0.6-1.0 ms after.
with less lag spikes as well
- this is just from launching Compatibility Mode :D, please edit your guide, do not spread false information without knowing what you actually doing.
Please sign in to reply.

New reply