Files
mitch030504--Wiicompiled_VR…/aurora-main/patches/dawn/aurora_fdm.h
T
iChris4andClaude Opus 5.5 cc653272c8 Added foveated rendering for the Quest
- Eyes render under a VK_EXT_fragment_density_map: full rate around each eye's forward direction,
  2x2 then 4x4 pixel blocks towards the edges ([vr] foveation = off|low|medium|high, default off).
  XR_FB_foveation cannot help here: the runtime's maps only shape passes drawing into its
  swapchain, and the eyes reach it through a copy.
- aurora-main/patches/dawn/aurora_fdm.inc: Dawn enables the extension only on request and for
  dynamic rendering, flags every render pipeline, and chains an immutable RG8 map into any pass
  whose first color attachment is a view bound to one (ABI: include/aurora/dawn_fdm_abi.h).
- android/Build-QuestDawn.ps1 builds the pinned Dawn revision with those patches for arm64
  (dawn-build CI flags, protobuf off) into a cached package; Build-Quest.ps1 links it
  (-StockDawn opts out) and AuroraDawnProvider.cmake enables the ABI from its manifest.
- lib/gfx/foveation.hpp generates the maps (32 px per texel, densities 255/127/63); an eye is
  foveated only when single_pass_eyes draws it in one render pass. Menus never are.
- Live level from the headset panel's VR tab and the launcher; the launch decides whether the
  device has maps. debug.wiicompiled.foveation and debug.wiicompiled.fdm for A/B.
- Tests: Foveation cases in gx_fifo_tests, mkw_vr_config_tests. Docs: OPENXR.md, quest-port.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 19:03:17 +02:00

22 lines
929 B
C++

// Included only by the pinned Dawn source build (apply.py): fragment density maps for Aurora's
// immersive eye render passes. Implemented in aurora_fdm.inc.
#pragma once
#include "src/dawn/common/vulkan_platform.h"
namespace dawn::native {
class TextureViewBase;
}
namespace dawn::native::vulkan {
class Device;
struct VulkanDeviceInfo;
// Device::CreateDevice keeps VK_EXT_fragment_density_map only when Aurora asked for it and the
// device can attach a map to a dynamic rendering pass over ordinary (non-subsampled) images.
bool AuroraFdmWanted(const VulkanDeviceInfo& info, bool dynamicRendering);
// The density map for a render pass whose first color attachment is `view`, or a null handle.
::VkImageView AuroraFdmViewFor(Device* device, TextureViewBase* view);
// Device::DestroyImpl: releases every map while the fenced deleter still runs.
void AuroraFdmDestroy(Device* device);
} // namespace dawn::native::vulkan