Is RenoDX Cross-Platform? Platform Support and Compatibility Explained
RenoDX is not cross-platform. The library is built exclusively for Windows, relying on DirectX graphics APIs and the ReShade add-on system, both of which are Windows-only technologies.
RenoDX is a graphics modding toolkit developed by clshortfuse that enables advanced shader replacement, swap-chain upgrades, and buffer injection for PC games. While the term "cross-platform" often comes up for graphics tools, renoDX's architecture ties it directly to Microsoft's graphics stack. Understanding these limitations helps developers and modders set proper expectations for deployment and compatibility.
Why RenoDX Is Windows-Only
The core limitation stems from three architectural decisions visible throughout the source code:
- DirectX 12 dependency — All production add-ons in
src/games/*/addon.cppinclude<d3d12.h>and use Windows-specific graphics APIs - ReShade add-on system — The loadable
.addon64modules require ReShade's Windows-only loader - Win32 platform flags — Even Vulkan test code compiles with
VK_USE_PLATFORM_WIN32_KHR
These dependencies appear consistently across the codebase, from game-specific implementations to the minimal test add-ons.
Platform-Specific Code Evidence
DirectX 12 Headers in Production Add-ons
Every supported game add-on relies on DirectX 12 headers and Windows conditional compilation. In src/games/starfield/addon.cpp, the implementation includes standard Windows graphics headers:
// src/games/starfield/addon.cpp
// Example of a shader replacement addon for a DirectX 12 game.
#include <d3d12.h>
#include "renodx/shader_injector.h"
extern "C" __declspec(dllexport) void __stdcall OnCreateDevice(ID3D12Device* dev) {
// Replace the pixel shader of a specific draw call.
renodx::InjectPixelShader(dev, L"StarfieldPixelShader", L"my_custom_shader.hlsl");
}
The __declspec(dllexport) and __stdcall calling conventions are Windows-specific conventions that have no direct equivalent on Linux or macOS.
Win32-Specific Vulkan Test Code
The repository includes a Vulkan-based test in test/resource_upgrade_transfer/vulkan_app.cpp, but it explicitly targets the Windows platform:
// test/resource_upgrade_transfer/vulkan_app.cpp – line 1
#define VK_USE_PLATFORM_WIN32_KHR
This preprocessor definition limits the Vulkan surface creation to Win32 window handles, preventing compilation on other platforms without modification.
Resource Upgrade Handler Interface
The canonical minimal add-on demonstrates the Windows-centric interface:
// test/resource_upgrade_transfer/addon.cpp
// Minimal addon that upgrades a DX12 swap‑chain resource.
#include <d3d12.h>
#include "renodx/renodx.h"
extern "C" __declspec(dllexport) void __stdcall Initialize(ID3D12Device* device) {
// Register a resource upgrade handler provided by renodx.
renodx::RegisterResourceUpgrade(device);
}
Both the ID3D12Device* parameter type and the exported function decoration assume a Windows DLL environment.
What the Documentation States
The README.md acknowledges platform expectations while confirming Windows focus:
"uses ReShade's add-on system… compatibility is expected to be pretty wide"
However, "compatibility" here refers to game-to-game coverage within Windows, not cross-platform portability. The ReShade distribution and its add-on loader remain Windows-exclusive, as confirmed by the project's build system targeting MSVC and Ninja on Windows in CMakeLists.txt.
Linux and macOS Compatibility
Native builds on Linux or macOS are not supported. The project provides no CMake toolchains, conditional compilation paths, or alternative graphics backends for these platforms.
Wine compatibility represents the only viable path for non-Windows users. Since renoDX operates as a loaded add-on within a game's process, running the Windows game executable through Wine (with ReShade also loaded via Wine) may allow renoDX functionality. This remains Windows emulation rather than native cross-platform support.
Key Source Files Demonstrating Platform Limitations
| File | Platform Evidence |
|---|---|
src/games/starfield/addon.cpp |
DirectX 12 headers, Windows calling conventions |
test/resource_upgrade_transfer/vulkan_app.cpp |
VK_USE_PLATFORM_WIN32_KHR definition |
test/resource_upgrade_transfer/addon.cpp |
__declspec(dllexport) exports |
docs/DEVKIT_MCP.md |
Assumes Windows development environment |
Summary
- RenoDX is not cross-platform — it is built for Windows-only deployment
- DirectX 12 and ReShade dependencies lock the architecture to Microsoft's ecosystem
- Vulkan test code uses Win32 surfaces, not cross-platform abstractions
- Wine may enable functionality on Linux, but this is compatibility-layer emulation, not native support
Frequently Asked Questions
Can I build renoDX on Linux?
No. The build system targets Windows toolchains (MSVC, Ninja on Windows), and the source code relies on Windows-specific headers like <d3d12.h> and calling conventions such as __declspec(dllexport). No Linux-native graphics backend exists in the repository.
Does renoDX work with Vulkan games?
Only through Windows. While the repository contains Vulkan test files, they explicitly use VK_USE_PLATFORM_WIN32_KHR for surface creation. The production add-ons for games like Starfield target DirectX 12 exclusively.
Will renoDX run on macOS via CrossOver or similar tools?
Possibly, via Wine-based compatibility layers that can load Windows DLLs into game processes. However, this is untested territory. The renoDX project provides no support for macOS or Wine-specific troubleshooting.
Why doesn't renoDX support multiple graphics APIs?
The project prioritizes deep integration with ReShade's Windows add-on ecosystem and DirectX 12's resource manipulation capabilities. Cross-platform abstraction would require substantial architectural changes beyond the current scope, as evidenced by the Windows-centric implementation throughout src/games/ and test/ directories.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →