{"id":28205864,"url":"https://github.com/aetopia/dx12-games-low-res","last_synced_at":"2026-01-24T11:37:57.029Z","repository":{"id":50735157,"uuid":"519997904","full_name":"Aetopia/DX12-Games-Low-Res","owner":"Aetopia","description":"A repository that explains and guides on how to use any desktop resolution with DX12 Games.","archived":false,"fork":false,"pushed_at":"2022-08-01T06:55:46.000Z","size":5,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-17T10:08:38.133Z","etag":null,"topics":["dx12","fps","games","performance","resolution"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Aetopia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-01T06:53:41.000Z","updated_at":"2022-11-28T18:06:45.000Z","dependencies_parsed_at":"2022-09-14T11:13:20.569Z","dependency_job_id":null,"html_url":"https://github.com/Aetopia/DX12-Games-Low-Res","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aetopia%2FDX12-Games-Low-Res","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aetopia%2FDX12-Games-Low-Res/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aetopia%2FDX12-Games-Low-Res/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aetopia%2FDX12-Games-Low-Res/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Aetopia","download_url":"https://codeload.github.com/Aetopia/DX12-Games-Low-Res/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aetopia%2FDX12-Games-Low-Res/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259280658,"owners_count":22833432,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dx12","fps","games","performance","resolution"],"created_at":"2025-05-17T10:08:37.965Z","updated_at":"2026-01-24T11:37:52.009Z","avatar_url":"https://github.com/Aetopia.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# How to use any resolution in DX12 Games.\nA repository that explains and guides on how to use any desktop resolution with DX12 Games.\n\n## What is the problem with DX12?\nWith DX12, Microsoft was able to basically make performance between FSB/Windowed and FSE the same.            \nBut additionally they fully removed the ability to use FSE from their API.         \n\nFSE has its pros and cons but one of its most useful features was the ability to render a game at any supported display resolution for better performance. But since DX12 doesn't have the ability to this, modern games perform terribly on low end hardware.\n\nSome games offer a ingame render resolution slider to change the resolution ingame 3D models are rendered.\nIn 90% this silder is enough to increase performance but the rest 10% can get better performance by rendering their entire screen at a lower display resolution.\n\n## How can one reintroduce the ability to render a game at a low display resolution?\n\nLets first understand, what's different between FSE and FSB/Windowed Mode.\n\nFSE: Essentially the game can fully bypass DWM and has full access to the GPU itself.           \nFSB: Mimicks FSE but the game doesn't bypass DWM and doesn't have full access to the GPU.              \n\nWith FSE, the game can tell your GPU to \"Hey! Set the resolution to 1280x720!\" and according your GPU responds to those changes.                              \nWith FSB, the game cannot tell your GPU to use a resolution of 1280x720 since its still fundamentally rendering as a window and cannot bypass DWM.                     \n\nHere is the thing, FSB games will take on the resolution of what DWM returns so fundamentally if one changes their desktop resolution, we can force a game to scale down and use that resolution.           \n\nOf course, doing this manually would be a hassle and automation is a must.          \n\n### How can this process be automated?\n\n[Resolution Enforcer](https://github.com/aetopia/resolution-enforcer) is a simple tool which allows you to enforce specfic resolutions on specific applications. Works with UWP and Win32 apps with ease.    \n\nLet's see how this process can be automated.       \n\n1. First, we constantly look for the current active/foreground window.\n2. Once, we find a XYZ window then we call for `ChangeDisplaySettings` from the `win32api` to enforce a resolution.\n3. Incase the window, we found becomes inactive or the user switches windows then we revert back to the native resolution.\n4. We run this process in a loop.    \n\nThe Resolution Enforcer exactly does this.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faetopia%2Fdx12-games-low-res","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faetopia%2Fdx12-games-low-res","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faetopia%2Fdx12-games-low-res/lists"}