@@ -186,6 +186,15 @@ class WebGLBackend extends Backend {
186
186
*/
187
187
this . _knownBindings = new WeakSet ( ) ;
188
188
189
+
190
+ /**
191
+ * Whether the device supports framebuffers invalidation or not.
192
+ *
193
+ * @private
194
+ * @type {boolean }
195
+ */
196
+ this . _supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : / O c u l u s B r o w s e r / g. test ( navigator . userAgent ) ;
197
+
189
198
/**
190
199
* The target framebuffer when rendering with
191
200
* the WebXR device API.
@@ -564,12 +573,22 @@ class WebGLBackend extends Backend {
564
573
const viewY = renderContext . height - height - y ;
565
574
566
575
gl . blitFramebuffer ( x , viewY , x + width , viewY + height , x , viewY , x + width , viewY + height , mask , gl . NEAREST ) ;
567
- gl . invalidateSubFramebuffer ( gl . READ_FRAMEBUFFER , renderTargetContextData . invalidationArray , x , viewY , width , height ) ;
576
+
577
+ if ( this . _supportsInvalidateFramebuffer === true ) {
578
+
579
+ gl . invalidateSubFramebuffer ( gl . READ_FRAMEBUFFER , renderTargetContextData . invalidationArray , x , viewY , width , height ) ;
580
+
581
+ }
568
582
569
583
} else {
570
584
571
585
gl . blitFramebuffer ( 0 , 0 , renderContext . width , renderContext . height , 0 , 0 , renderContext . width , renderContext . height , mask , gl . NEAREST ) ;
572
- gl . invalidateFramebuffer ( gl . READ_FRAMEBUFFER , renderTargetContextData . invalidationArray ) ;
586
+
587
+ if ( this . _supportsInvalidateFramebuffer === true ) {
588
+
589
+ gl . invalidateFramebuffer ( gl . READ_FRAMEBUFFER , renderTargetContextData . invalidationArray ) ;
590
+
591
+ }
573
592
574
593
}
575
594
0 commit comments