Search Issue Tracker
Won't Fix
Won't Fix in 1.16.X
Votes
0
Found in [Package]
1.16.0-pre.2
Issue ID
OXRB-659
Regression
No
[Vulkan][OpenXR] ScriptableRendererFeature breaks when Optimize Buffer Discards (Vulkan) and Foveated Rendering are enabled on Meta devices
Steps to reproduce:
1. Open the attached user's project "Repro Project.zip"
2. Navigate to the Project Settings > OpenXR settings under XR Plug-in Management
2. Find and select the Meta Quest Support OpenXR Feature, selecting the gear icon, enable the "Optimize Buffer Discards (Vulkan)" setting
3. Build the application to a Quest 3/3S device
4. Verify the graphical issue where the RendererFeature is present and, using the UI button, turn off the RendererFeature. Notice the graphical issue disappears
5. Turn off the "Optimize Buffer Discards (Vulkan)" and create a new build. Notice there is not a graphical issue
Expected result: Enabling the "Optimize Buffer Discards (Vulkan)" doesn't break existing RendererFeature functionality
Actual result: Enabling the "Optimize Buffer Discards (Vulkan)" breaks existing RendererFeature functionality
Reproducible with: OpenXR 1.15.1 - 1.16.0-pre.2 (6000.0.60f1, 6000.2.8f1, 6000.3.0b5, 6000.4.0a2)
Could not test below 6000.0.23f1 due to the Editor crashing at the end of the build process
Environment tested: Windows 11 24H2
Reproducible with these devices:
VLNQA00609 - Oculus Quest 3 (Quest 3), CPU: Snapdragon XR2 Gen 2 (SM8550), GPU: Adreno 740, OS: 12
VLNQA00644 - Oculus Quest 3S (Quest 3S), CPU: Google Tensor G2, GPU: Adreno 740, OS: 14
Notes:
-Issue reproduces only with OpenXR plugin
-Issue reproduces only with Vulkan
-Issue reproduces with Meta Quest Support feature group and Android XR Feature group
-Issue requires that both "Optimize Buffer Discards (Vulkan)" and "Foveated Rendering" features be enabled for the issue to occur. If either one of these settings is disabled, it doesn't reproduce
Comments (1)
-
jdiehl_unity3d
Nov 03, 2025 16:41
Just wanted to clarify the resolution for this issue:
A ScriptableRenderPass that may run on XR should include this block when configuring render targets:
-------
if (cameraData.xr.enabled)
builder.EnableFoveatedRasterization(cameraData.xr.supportsFoveatedRendering);
-------When merging render passes passes we make sure all of the incoming passes have the same supportsFoveatedRendering value.
If they don't then the passes cannot merge and we break them into separate passes.
This results in normal behavior.
However, when Optimize Buffer Discards is enabled then the color and depth textures are set to memoryless.
Because of this when breaking into separate passes we are discarding the color and depth textures, so a ScriptableRenderPass that is trying to write into the activeColorTexture or activeDepthTexture will be writing into nothing.
Adding the above code block resolves this issue by avoiding breaking into separate passes.
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Texture2D hash changes inside of an AssetBundle when rebuilding a SpriteAtlas bundle with an empty AssetPostprocessor Script enabled
- Aniso Level still applies when Generate MipMap is disabled in Texture Import Settings
- Mipmap Limit Groups long names are not truncated when creating a new Mipmap Limit Group with a long name
- “ArgumentException: Invalid double parameter.” error is thrown when Infinity is typed into the Fixed Timestep field
- GameObject becomes gray when using HDRP and STP together on macOS
Resolution Note:
There are no fixes planned for this Bug
Resolution Note (1.16.X):
There are no fixes planned for this Bug