Skip to content

fix(graphics): size the texture budget from the host instead of the g… - #76

Open
LightZirconite wants to merge 1 commit into
komaruworld:mainfrom
LightZirconite:fix/host-texture-memory-budget
Open

fix(graphics): size the texture budget from the host instead of the g…#76
LightZirconite wants to merge 1 commit into
komaruworld:mainfrom
LightZirconite:fix/host-texture-memory-budget

Conversation

@LightZirconite

Copy link
Copy Markdown
Contributor

…uest

Roblox sizes its resident texture budget for the Android guest. On a PC host the Vulkan backend still lands on

VULKAN unifiedMemory = false, device memory = 5894524928,
host memory = 2947260416, setting caps.videoMemory = 67108864

so the engine works with a 64 MiB texture budget even though the device advertises 5.5 GiB. TextureManager2 then keeps only the smallest mip levels resident: surfaces render blurred, and the SurfaceAppearance and material texture packs fail outright with

Failed to load ...SurfaceAppearance. PBR textures may not be visible.
Asset (Image) "" load failed in fetchTexturePackTextures: Request failed

which is why parts show up as flat untextured plastic.

Publish a host-sized budget through Roblox's own
FIntRenderForceVideoMemorySize override: an eighth of host memory, clamped to 256 MiB..1536 MiB, and only when the host has at least 4 GiB. The value is merged after fflags.json and the environment, so an explicit user override always wins.

Verified against the real client (Roblox 2.734.917, RADV VANGOGH): with the override present the engine reports the requested budget instead of the 64 MiB default, using the same string encoding LoadAndMergeFflagsFile produces.

Capture d'écran_20260826_105134

Fix:
Capture d'écran_20260826_111637

@glook9001

Copy link
Copy Markdown
Contributor

hey @LightZirconite #73 could you consider visiting my branch ? I have made serious smoothness to the interface , like leaked memory and duplicated calling - I would like another set of eyes looking at it

…uest

Roblox sizes its resident texture budget for the Android guest. On a PC
host the Vulkan backend still lands on

  VULKAN unifiedMemory = false, device memory = 5894524928,
  host memory = 2947260416, setting caps.videoMemory = 67108864

so the engine works with a 64 MiB texture budget even though the device
advertises 5.5 GiB. TextureManager2 then keeps only the smallest mip
levels resident: surfaces render blurred, and the SurfaceAppearance and
material texture packs fail outright with

  Failed to load ...SurfaceAppearance. PBR textures may not be visible.
  Asset (Image) "" load failed in fetchTexturePackTextures: Request failed

which is why parts show up as flat untextured plastic.

Publish a host-sized budget through Roblox's own
FIntRenderForceVideoMemorySize override: an eighth of host memory,
clamped to 256 MiB..1536 MiB, and only when the host has at least 4 GiB.
The value is merged after fflags.json and the environment, so an explicit
user override always wins.

Verified against the real client (Roblox 2.734.917, RADV VANGOGH): with
the override present the engine reports the requested budget instead of
the 64 MiB default, using the same string encoding LoadAndMergeFflagsFile
produces.
@LightZirconite

Copy link
Copy Markdown
Contributor Author

hey @LightZirconite #73 could you consider visiting my branch ? I have made serious smoothness to the interface , like leaked memory and duplicated calling - I would like another set of eyes looking at it

Sure — left my notes on #73.

Short version: the atomics and the ALooper refcounting look correct to me. The
one thing I would raise is the periodic
MocktailTrimEngineMemory(TRIM_MEMORY_RUNNING_CRITICAL), which works against what
this PR does — details in the thread over there.

@glook9001

Copy link
Copy Markdown
Contributor

hey @LightZirconite #73 could you consider visiting my branch ? I have made serious smoothness to the interface , like leaked memory and duplicated calling - I would like another set of eyes looking at it

Sure — left my notes on #73.

Short version: the atomics and the ALooper refcounting look correct to me. The one thing I would raise is the periodic MocktailTrimEngineMemory(TRIM_MEMORY_RUNNING_CRITICAL), which works against what this PR does — details in the thread over there.

this is debated. also ? what is the Roblox room ? you tried it on ? I thikn i have a more clever fix for it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants