From 87e3250518a02e64246951f68d8e862c08388883 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 6 Oct 2025 11:58:21 -0700
Subject: [PATCH] Add a note that OpenVR overlays assume unpremultiplied alpha
by default
---
src/video/openvr/SDL_openvrvideo.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/video/openvr/SDL_openvrvideo.c b/src/video/openvr/SDL_openvrvideo.c
index b163f4df5135a..d3f471d75efdf 100644
--- a/src/video/openvr/SDL_openvrvideo.c
+++ b/src/video/openvr/SDL_openvrvideo.c
@@ -654,6 +654,14 @@ static bool OPENVR_InitializeOverlay(SDL_VideoDevice *_this,SDL_Window *window)
videodata->oOverlay->SetOverlayFlag(videodata->overlayID, 1<<23, true); //vr::VROverlayFlags_EnableControlBar
videodata->oOverlay->SetOverlayFlag(videodata->overlayID, 1<<24, true); //vr::VROverlayFlags_EnableControlBarKeyboard
videodata->oOverlay->SetOverlayFlag(videodata->overlayID, 1<<25, true); //vr::VROverlayFlags_EnableControlBarClose
+#if 0
+ /* OpenVR overlays assume unpremultiplied alpha by default, set this flag to tag the source buffer as premultiplied.
+ * Note that (as of 2025) OpenVR overlay composition is higher quality when premultiplied buffers are provided,
+ * as texture samplers that blend energy (such as bilinear) do not yield sensical results when operating on natively
+ * unpremultiplied textures. It is thus preferable to hand openvr natively premultiplied buffers when accurate
+ * sampling / composition is required. */
+ videodata->oOverlay->SetOverlayFlag(videodata->overlayID, VROverlayFlags_IsPremultiplied, true );
+#endif
videodata->oOverlay->SetOverlayName(videodata->overlayID, window->title);
videodata->bDidCreateOverlay = true;