- This should be much faster than previous code which attempted to map all mip levels
- Need to ensure at least lowest resolution mip is mapped, in order to avoid rendering frames with garbage data mapped
- Add warning for AllocatedVTs that never manage to complete this mappings
#rb none
#jira none
[CL 16308484 by Ben Ingram in ue5-main branch]
- Instead, keep VT cached for a few frames after they are deleted, this way they can be re-used if they're deleted/recreated due to state changes
- This should solve the problem of material changes causing pages to become unmapped for a few frames
#rb none
#jira none
[CL 16209506 by Ben Ingram in ue5-main branch]
- Need to include LocalMipBias, otherwise may not be any data at AllocatedVT's MaxLevel for sparse UDIMs
- Check for overflow when adding lock requests, keep overflow requests around to try again next frame
#rb none
#jira none
[CL 16194638 by Ben Ingram in ue5-main branch]
- If filtering is disabled, we'll still avoid using SampleGrad (which should still avoid most of the shader overhead)
- This way the computed VT mip level will match the non-VT mip level much more closely
Also tweak the way noise is mixed in to VT mip level, better match HW formular (also slightly cheaper)
#rb none
#jira UE-108270
[CL 15903344 by Ben Ingram in ue5-main branch]
- Check partially allocated block for fit, don't need to start with a completely free block for allocations
- Try to use the lowest possible vAddress for new allocations, this reduces the texture area covered by allocations
- Page table is no longer required to be square power-2 texture, instead allow it to grow organically as allocated area increases
- Allocator starts with maximum-sized block and tracks allocated area, no longer needs special logic to 'grow'
- Rectangular allocated VTs now mip based on min-size rather than max-size, relaxes alignment requirements and allows better packing
#rb jeremy.moore
#jira none
[CL 15825578 by Ben Ingram in ue5-main branch]
- Need to make sure wrapped vAddress is properly used in all cases, otherwise can end up with duplicate/inconsistent page mappings
#rb none
#jira UESP-4030, UESP-4017
[CL 14580045 by Ben Ingram in ue5-main branch]
This had been broken by a previous changelist (9751925)
#jira none
#rb none
#ROBOMERGE-SOURCE: CL 12382248 in //UE4/Release-4.25/... via CL 12382250
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v671-12333473)
[CL 12382257 by jeremy moore in Main branch]
#rnx
#rb none
#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870549 by ryan durand in Main branch]
Properly handle missing VT producers when creating allocated VTs
This can happen if textures used as material parameters are not properly converted to VT
#rb none
#ROBOMERGE-SOURCE: CL 9758727 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v545-9751379)
[CL 9758747 by ben ingram in Main branch]
Don't merge duplicate streaming VT producers when creating page table
- Keep merging in place for RVT
#rb none
#ROBOMERGE-SOURCE: CL 9758700 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v545-9751379)
[CL 9758704 by ben ingram in Main branch]
Fix bug computing wrong sizes for mips of non-power-2 UDIM texture, when computing VT address wrapping
#rb none
#ROBOMERGE-SOURCE: CL 9758260 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v545-9751379)
[CL 9758263 by ben ingram in Main branch]
We can tweak this back down live if necessay, but I don't think it will be.
Return the global anisotropy setting back to 0 as it was before my last attempted fix.
#ROBOMERGE-SOURCE: CL 9543825 via CL 9544765 via CL 9544778 via CL 9544791 via CL 9544800
#ROBOMERGE-BOT: (v521-9539702)
[CL 9544809 by jeremy moore in Main branch]