Search Issue Tracker
Won't Fix
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
- Terms of Service agreement checkbox is invisible under specific OS system themes (UI Accessibility)
- Tile Palette: "Create New Tilemap" dropdown area is displayed in several colors
- Input.mousePosition stops syncing to touch input when using "DownloadHandlerTexture" in WebGL build
- UI Builder canvas doesn't update element styling accordingly when changing Active Theme for some Editor Authoring elements
- Selector Value buttons are not aligned with parameters in UI Builder
Resolution Note:
There are no fixes planned for this Bug