mirror of
https://github.com/mitch030504/Wiicompiled_VR_Frame.git
synced 2026-10-06 01:00:14 +02:00
- 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>
22 lines
929 B
C++
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
|