1. Borderless Gaming
  2. News

Borderless Gaming News

v1.4.0 - Steam Deck

BGFX now works on Steam Deck.




[h2]How it works[/h2]
Install Borderless Gaming from Steam, open the app, pick a game, choose your effects. Borderless Gaming installs a Vulkan layer that hooks into your games automatically — you launch games the way you always do, from Steam, and the effects are just there. No desktop mode, no scripts, no extra software. Your presets are saved per game. Set it once and forget about it.

One thing I keep seeing asked: you do not need to launch games through Borderless Gaming. Just configure your effects and launch your game normally.



[h2]Built for Game Mode[/h2]
This is a new app written from scratch for SteamOS — not a port. I recreated Valve's Holo design language so it looks and feels like part of your Deck. Full gamepad nav, L1/R1 tab switching, the native on-screen keyboard, audio feedback on every action.

[previewyoutube][/previewyoutube]

[h2]Tweak effects while you play[/h2]
Press Left Stick + Right Stick + R1 and an overlay slides in from the right. Adjust any parameter in real time — sharpening strength, upscaler settings, swap entire presets — without leaving your game. The overlay blocks game input while it's open, so you won't accidentally move your character while tweaking a slider.

[previewyoutube][/previewyoutube]

[h2]Lightweight[/h2]
The entire effect pipeline runs on the GPU. Effects operate directly on frame data — no copies to system memory, no CPU involvement. Shaders compile in the background so your game is never interrupted.

[previewyoutube][/previewyoutube]

[h2]Scaling modes[/h2]
Five scaling modes per effect in the chain:
  • Fit — Scales to fit with letterboxing, keeps aspect ratio
  • Fill — Scales to fill the screen, may crop edges
  • Integer — Pixel-perfect 2x, 3x scaling, great for retro games
  • Stretch — Fills the screen exactly, may distort
  • Auto — Picks the best mode for you

The output scaler adapts automatically — sharp bicubic filtering when downscaling, smooth bilinear when upscaling.

[h2]Windows improvements[/h2]
Windows gets a big update too. There's a new Vulkan effects backend that runs the full effect chain through Vulkan alongside D3D11 capture — if your driver supports it, the handoff happens entirely on the GPU with no CPU wait.

The D3D11 renderer has been rewritten for lower GPU load, with fixes for frame safety during live scaling changes and better signal handler coexistence with Wine/Proton.

Open the overlay on Windows with Ctrl+Shift+F12. Also works with a gamepad.

[h2]Changelog[/h2]
[expand]
New
  • bg-holo: native Steam Deck application with Holo UI
  • Vulkan implicit layer backend for Linux/SteamOS
  • Vulkan effects backend for Windows (D3D11 capture + Vulkan effects via NT handle sharing)
  • In-game overlay with live effect editing
  • Gamescope input blocking for overlay
  • Five scaling modes: Auto, Integer, Fit, Stretch, Fill
  • Adaptive output scaler (bicubic downscale, bilinear upscale)
  • Hot-swap effect chains without restarting the game
  • Async shader compilation with progress HUD
  • Per-game preset system with Steam library auto-discovery
  • Neural network upscalers (NNEDI3, CuNNy, FSRCNNX, Anime4K) on GPU
  • Improved effect history textures and multi-pass feedback performance
Improved
  • D3D11 renderer performance and stability
  • In-flight frame safety for live scaling changes
  • Signal handler coexistence with Wine/Proton

[/expand]



If you run into any issues, report them on Discord.

[h2]What's next[/h2]
BGFG — frame generation — is coming in the next minor release.

-- Andrew

P.S. If there's interest, I can bring desktop mode support to Linux — custom resolutions, borderless windowing, and other features from the Windows version. Let me know.

v1.3.4

[p]All of the changes below are for BGProxy.[/p][p][/p][h2]Misc Fixes[/h2]
  • [p]Fixed input issues introduced in the previous update. The mouse cursor should now work in Dishonored and other Unreal games again.[/p]
  • [p]Fixed some minor render issues.[/p]
[p][/p][h2]GPU spoofing[/h2][p]You can now make games think you have a different graphics card. Some games won't launch or will disable features if they don't recognize your GPU; this gets around that. Add a \[Spoof] section to your bgproxy.ini (details below). [/p][hr][/hr][h2]OpenGL on DX12[/h2]
  • [p]OpenGL games now present through a DirectX 12 pipeline. Best case is zero-copy via a shared texture, otherwise it falls back to async or synchronous readback depending on driver support.[/p]
  • [p]OpenGL contexts are automatically upgraded to the highest compatibility profile your driver supports, which lets the driver apply more optimizations while keeping legacy rendering working.[/p]
  • [p]Frame latency waitable is now waited on before rendering instead of after, which fixes cases where the game could start drawing before a back buffer was available. [/p]
[hr][/hr][h2]Timer and sleep fixes[/h2][p]All on by default, no config needed. [/p]
  • [p]Games using Windows wait timers get ~0.1ms precision instead of the default 1–16ms. Needs Windows 10 1803+.[/p]
  • [p]Old multimedia timer calls are also upgraded to Windows 10 high precision timers.[/p]
  • [p]Some games sleep their render thread between frames, which causes micro-stutter. BGProxy now intercepts these fix them.[/p]
[hr][/hr][h2]Other[/h2]
  • [p]Device loss now logs the specific HRESULT from GetDeviceRemovedReason.[/p]
  • [p]Proxy DLLs set a window property identifying which proxy type is loaded, so external tools can check without inspecting the file. [/p]
[hr][/hr]
bgproxy.ini configuration
[p]
Place a file called bgproxy.ini in the same folder as the proxy DLL. If you don't create one, defaults are used. [/p][p][/p][h2]\[Graphics][/h2]
[p]Setting[/p]
[p]Default[/p]
[p]Description[/p]
[p]ForceWindowed[/p]
[p]true[/p]
[p]Forces the game into windowed mode. The game still thinks it's fullscreen.[/p]
[p]UseFlipModel[/p]
[p]true[/p]
[p]Uses a newer Windows presentation method that reduces latency. Turn it off if you get visual issues like black cursors or flickering.[/p]
[p]MinBackBuffers[/p]
[p]3[/p]
[p]Minimum back buffer count when flip model is on. Higher values can help frame pacing but add a bit of latency. Only matters when UseFlipModel is on.[/p]
[p]Width[/p]
[p]0[/p]
[p]Override the render width. 0 means the game decides. Set to a pixel value like 1920 to force a resolution.[/p]
[p]Height[/p]
[p]0[/p]
[p]Override the render height. 0 means the game decides. Set to a pixel value like 1080 to force a resolution.[/p]
[p][/p][h2]\[Spoof][/h2][p] Makes the game see a different GPU. Only fill in what you need to change. [/p]
[p]Setting[/p]
[p]Default[/p]
[p]Description[/p]
[p]VendorId[/p]
[p]0 (no spoof)[/p]
[p]GPU manufacturer ID. Common values: 10DE (NVIDIA), 1002 (AMD), 8086 (Intel).[/p]
[p]DeviceId[/p]
[p]0 (no spoof)[/p]
[p]GPU model ID. Look these up on pcilookup.com.[/p]
[p]SubSysId[/p]
[p]0 (no spoof)[/p]
[p]Subsystem ID. Most people won't need this.[/p]
[p]Revision[/p]
[p]0 (no spoof)[/p]
[p]Revision number. Most people won't need this.[/p]
[p]Description[/p]
[p]empty (no spoof)[/p]
[p]The GPU name string the game sees, e.g. "NVIDIA GeForce GTX 1080".[/p]
[p]DriverVersion[/p]
[p]empty (no spoof)[/p]
[p]Driver version in A.B.C.D format (e.g. 31.0.15.5000). All four numbers required.[/p]

v1.3.3

[h2]BGProxy Fixes[/h2][hr][/hr][h3]Background Behavior[/h3]
  • [p] All games now continue rendering and playing audio when alt-tabbed.[/p]
  • [p] Keyboard and mouse input is blocked while the game is in the background, so you can type in other apps without affecting the game. Gamepad input still passes through.[/p]
[p] Tabbing back into a game no longer leaves keys in a pressed state. [/p][hr][/hr][h3]Stability[/h3]
  • [p] Fixed crashes on startup for Yakuza 0, Metro 2033, Fallout: New Vegas, and others.[/p]
[hr][/hr][h3]Rendering[/h3]
  • [p] Fixed the "wavy" / shimmering motion artifact at native resolution in Dishonored.[/p]
  • [p] Anti-aliasing and color accuracy are now preserved in games that use MSAA or sRGB when using flip model presentation.[/p]
[p] Major performance improvement for OpenGL games (KOTOR, StarStable Online, etc.) — rendering no longer goes through the CPU.[/p][hr][/hr][h2]Improved Proxy Detection for Unity & Custom Engines[/h2][hr][/hr][p]Previously, the installer only checked for graphics DLLs through static PE import analysis. Engines like Unity and Unreal load D3D and OpenGL dynamically rather than through static imports, so the analyzer would find no available proxies for these games. The installer now properly supports these engines. This means the correct proxy is detected and offered automatically, even for engines that load their graphics APIs at runtime.[/p][p][/p][p][/p]

v1.3.2 - BGProxy

[p]For years, Borderless Gaming has helped thousands of you wrangle stubborn games into borderless windowed mode. But there have always been two classes of games we've struggled with.

The first: games with no windowed mode at all. Classic OpenGL games, older DirectX 8/9 titles, and even some modern DX11 games that change your desktop resolution and take over your entire screen. Without a window, Borderless Gaming had nothing to work with.

The second: games that technically have a window, but fight you every step of the way. Older OpenGL and DirectX games that break, flash, or refuse to render properly when their window is moved or resized. This is why Borderless Gaming has accumulated dozens of profile options — delay timers, style overrides, resize workarounds — all to deal with games that don't cooperate. Even with all those options, some games just won't behave.

Today, that changes.

[/p]
Introducing BGProxy
[p]
BGProxy is a new feature that intercepts a game's graphics pipeline and converts fullscreen-only games into normal, resizable windows. It supports OpenGL, DirectX 8, DirectX 9, and DirectX 10/11/12 (via DXGI) — covering everything from early 2000s classics to modern titles.

Star Wars: Knights of the Old Republic (OpenGL) — no native windowed mode, now running in a resizable window via BGProxy. [/p][hr][/hr]
What's Different From Classic Mode?
[p]
Previously, Borderless Gaming could reposition and resize a game's existing window, but the game still rendered at its original fixed resolution. BGProxy patches the rendering pipeline directly — and what that means depends on the graphics API:

DirectX 8, 9, 10, 11, and 12 games get their presentation parameters rewritten on the fly. BGProxy forces the game into windowed mode and upgrades the swap chain to use modern FLIP model presentation, which reduces latency and improves frame pacing. The game actually renders to fit your window — drag the border, maximize, span ultra-wide across all your monitors, and the game re-renders at that resolution in real-time.

OpenGL games work differently — the GL backbuffer can't be resized after creation. Instead, BGProxy captures the rendered frame and scales it to your window using high-quality interpolation. The result is a clean, smooth image at any window size, even when stretching a 640x480 game across a 4K display.

For older games running at low native resolutions, this scaling makes a visible difference. Instead of blocky nearest-neighbor upscaling, BGProxy uses halftone filtering that smooths the image and produces a noticeably better picture on modern high-resolution displays. For even higher quality, pair it with BGFX and apply real-time upscaling effects like FSR, CAS, and more.

Borderlands — drag the border to any size and the game renders to match.[/p][p][/p][p]BGProxy also makes games behave like proper desktop applications: [/p]
  • [p]Alt-tab without pausing — The game always thinks it has focus, so it won't pause, mute, or drop to a menu when you switch windows[/p]
  • [p]Full window controls — Minimize, maximize, resize, move between monitors[/p]
  • [p]Input isolation — Keyboard, mouse, and controller input is suppressed when the game is in the background[/p]
  • [p]Mouse coordinate scaling — Input stays accurate at any window size
    [/p]
[p]
Once BGProxy gives you a window, Borderless Gaming does the rest — borderless fullscreen, custom positioning, ultra-wide spanning, automatic profiles. You can also combine BGProxy with BGFX to apply real-time upscaling and post-processing effects on top of the windowed game. They're all designed to work together.

Star Stable Online (OpenGL) — forced into windowed mode with BGProxy. [/p][hr][/hr]
Under the Hood
[p]BGProxy analyzes your game's executable to determine its graphics API, then places a small proxy DLL in the game directory. When the game launches, it loads the proxy instead of the system graphics library. The proxy forwards normal calls through to the real DLL, but intercepts key operations: [/p]
  • [p]Fullscreen display mode changes are caught and redirected into a window[/p]
  • [p]DirectX swap chains are upgraded to FLIP model presentation for lower latency and smoother frame pacing[/p]
  • [p]OpenGL framebuffers are captured and scaled with high-quality filtering to any window size[/p]
  • [p]Game-originated window management calls (resize, move, style changes) are blocked to prevent the game from fighting windowed mode[/p]
  • [p]Focus and activation messages are spoofed so the game never detects it lost foreground[/p]
  • [p]DirectInput and XInput are filtered when the window is in the background[/p]
[p]
Borderless Gaming automatically detects the correct architecture (x86, x64, or ARM64) and graphics API from the executable — you don't need to figure out which proxy to use.

Constructor — running in a proper window via BGProxy. [/p][hr][/hr]
How to Use BGProxy
  1. [p]Launch the game once so it appears in Borderless Gaming's window list[/p]
  2. [p]Right-click the game and select "Install BGProxy"[/p]
  3. [p]Restart the game — it will now start in windowed mode[/p]
  4. [p]Make it borderless using Borderless Gaming as normal, or set up a profile[/p]
[p]
To remove it, right-click the game and select "Uninstall BGProxy". Borderless Gaming will close the game and cleanly delete the proxy.

LEGO City Undercover — forced into windowed mode, ready to go borderless. [/p][hr][/hr]
Important Notes
  • [p]Anti-cheat — BGProxy places a DLL in the game directory. Some anti-cheat systems may flag this. We recommend using BGProxy with single-player and offline games only.[/p]
  • [p]Compatibility — While we've tested extensively, some games may behave unexpectedly. You can always uninstall with one click to return to normal - but let us know if in the Discord if you run into problems with a specific game.[/p]
  • [p]Restart required — The game must be restarted after installing or uninstalling BGProxy.[/p]
[hr][/hr][p] BGProxy has been a long time coming and we think it's going to make a real difference for the games that needed it most. If you run into issues, let us know in the discussions. Happy gaming![/p]

v1.3.0

[h2]New Features[/h2]
  • [p]Slang-based BGFX - Effects now use Slang as the shader foundation, enabling cross-platform support for the upcoming SteamDeck and Linux release. [/p]
  • [p]DX12 Renderer - DirectX 12 is now available and being A/B tested. If you experience issues, launch with [/p]
--no-dx12
[p] to use the DX11 pipeline. [/p]
  1. [p]Profile-Guided Optimization - Effect compilation now uses PGO for your GPU rather than trying to be one-size-fits-all, so system resource usage at runtime has dramatically reduced and should resolve hammering of weaker GPUs.[/p]
  2. [p]The cross-GPU resource sharing was fixed for Intel GPUs[/p]
[p]You can now also set LUTs borders, and other custom textures in BGFX. Transparency can also be enabled so when combined you can do things like this: [/p][p][/p][h2]Coming Soon[/h2]
  • [p] Vulkan renderer (with Linux release) [/p]
  • [p] Native SteamDeck/Linux support [/p]
[h2]Resources[/h2][p] The new BGFX effect format documentation and all effects are available at: github.com/andrewmd5/bgfx-slang - Contributions welcome! [/p][p][/p][h2]A Personal Note[/h2][p]I'm currently dealing with some personal tragedy, so updates will slow down while I grieve. I've brought someone on to handle bug fixes and maintenance during this time. I apologize in advance for any slow communication on my part; if something is critical, please ping in the Discord. [/p][p][/p][p]Thank you for your understanding and continued support.[/p]