<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>226408</bug_id>
          
          <creation_ts>2021-05-28 17:34:34 -0700</creation_ts>
          <short_desc>[WebXR] Recommended framebuffer width incorrectly scaled</short_desc>
          <delta_ts>2021-05-31 02:22:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebXR</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>adachan</cc>
    
    <cc>ifernandez</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1765030</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-05-28 17:34:34 -0700</bug_when>
    <thetext>When WebXRWebGLLayer creates the WebXROpaqueFramebuffer, it asks the session for the recommended framebuffer size. It then multiplies the width by 2 - I assume because there are two eyes. However, the specification [1] says that it is a &quot;best estimate of the WebGL framebuffer resolution large enough to contain all of the session’s XRViews&quot;. So it should be the session that makes account for the multiple views, not the framebuffer.

Note also: &quot;best estimate&quot;. Currently the dimensions of the framebuffer are set once as the WebGLLayer is created. I think it should be checked each frame. For example, the headset might be under load and start providing smaller textures for rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765032</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-28 17:34:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/78638309&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765038</commentid>
    <comment_count>2</comment_count>
      <attachid>430080</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-05-28 17:46:31 -0700</bug_when>
    <thetext>Created attachment 430080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765238</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-05-30 12:42:11 -0700</bug_when>
    <thetext>Committed r278255 (238292@main): &lt;https://commits.webkit.org/238292@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765363</commentid>
    <comment_count>4</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-05-31 02:22:37 -0700</bug_when>
    <thetext>&gt; 
&gt; Note also: &quot;best estimate&quot;. Currently the dimensions of the framebuffer are
&gt; set once as the WebGLLayer is created. I think it should be checked each
&gt; frame. For example, the headset might be under load and start providing
&gt; smaller textures for rendering.

The spec supports Dynamic viewport scaling. The benefit is that you can change the resolution on a per-frame basis without reallocating the WebGLLayer framebuffer.

Right now we return nullop in WebXRView::recommendedViewportScale, so always the full viewport is used. If you have a  a heuristic to determine the recommended scale per frame you can implement it already on the cocoa platform. For this to work the underlying SDK should support setting the UV rect when submitting the frame to the headset.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430080</attachid>
            <date>2021-05-28 17:46:31 -0700</date>
            <delta_ts>2021-05-28 17:56:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226408-20210529104630.patch</filename>
            <type>text/plain</type>
            <size>3508</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWVhYTA2OGU3YjkxNjNj
ZTYxOWE3MmNjMWI3NjIzOWM4MTYwN2U5ZC4uMDU4YTE4Mzc0MDhkOTIwNDVmZmZhYTZlZGNjOTQx
ZmU3OTZiZjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTA1LTI4ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIFJlY29tbWVuZGVk
IGZyYW1lYnVmZmVyIHdpZHRoIGluY29ycmVjdGx5IHNjYWxlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDA4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83ODYzODMwOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXaGVuIFdlYlhSV2ViR0xMYXllciBjcmVhdGVzIHRoZSBXZWJYUk9wYXF1ZUZyYW1l
YnVmZmVyLCBpdCBhc2tzCisgICAgICAgIHRoZSBzZXNzaW9uIGZvciB0aGUgcmVjb21tZW5kZWQg
ZnJhbWVidWZmZXIgc2l6ZS4gSXQgdGhlbgorICAgICAgICBtdWx0aXBsaWVzIHRoZSB3aWR0aCBi
eSAyIC0gSSBhc3N1bWUgYmVjYXVzZSB0aGVyZSBhcmUgdHdvIGV5ZXMuCisgICAgICAgIEhvd2V2
ZXIsIHRoZSBzcGVjaWZpY2F0aW9uIFsxXSBzYXlzIHRoYXQgaXQgaXMgYSAiYmVzdCBlc3RpbWF0
ZSBvZgorICAgICAgICB0aGUgV2ViR0wgZnJhbWVidWZmZXIgcmVzb2x1dGlvbiBsYXJnZSBlbm91
Z2ggdG8gY29udGFpbiBhbGwgb2YgdGhlCisgICAgICAgIHNlc3Npb27igJlzIFhSVmlld3MiLiBT
byBpdCBzaG91bGQgYmUgdGhlIHNlc3Npb24gdGhhdCBtYWtlcyBhY2NvdW50CisgICAgICAgIGZv
ciB0aGUgbXVsdGlwbGUgdmlld3MsIG5vdCB0aGUgZnJhbWVidWZmZXIuCisKKyAgICAgICAgU2lu
Y2UgdGhpcyB3b3VsZCBhbG1vc3QgY2VydGFpbmx5IGJyZWFrIGV4aXN0aW5nIGNvbnRlbnQgdXNp
bmcgdGhlIE9wZW5YUgorICAgICAgICBiYWNrZW5kLCBJIGVkaXRlZCB0aGUgaW1wbGVtZW50YXRp
b24gdG8gaW5jbHVkZSB0aGUgMnggd2lkdGggc2NhbGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSV2ViR0xMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVPcGFxdWVG
cmFtZWJ1ZmZlcik6IFJlbW92ZSB0aGUgIiogMiIuCisgICAgICAgICogcGxhdGZvcm0veHIvb3Bl
bnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwOiBBZGQgYSAiKiAyIiB0byBub3QgYnJlYWsgY29udGVu
dC4KKwogMjAyMS0wNS0yOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dlYlhSXSBObyBuZWVkIGZvciBvcGFxdWVUZXh0dXJlIHdoZW4gVVNFKElPU1VSRkFDRV9G
T1JfWFJfTEFZRVJfREFUQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJXZWJHTExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJXZWJHTExheWVyLmNwcAppbmRleCAzZWMxYjUyZmQ2MDkyMzEyNjgyZDdlMDQ3YzA4YWRkYzcz
Y2QzMjQ2Li4xZGQwMzgyOTM4YjVlNWMzOTBhNjMxNzRjZTAzZjg4NzJmNzE0OWE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCkBAIC03
Miw3ICs3Miw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViWFJPcGFx
dWVGcmFtZWJ1ZmZlcj4+IGNyZWF0ZU9wYXF1ZUZyYW1lYnVmCiAgICAgZmxvYXQgc2NhbGVGYWN0
b3IgPSBzdGQ6OmNsYW1wKGluaXQuZnJhbWVidWZmZXJTY2FsZUZhY3RvciwgTWluRnJhbWVidWZm
ZXJTY2FsaW5nRmFjdG9yLCBkZXZpY2UtPm1heEZyYW1lYnVmZmVyU2NhbGluZ0ZhY3RvcigpKTsK
IAogICAgIEludFNpemUgcmVjb21tZW5kZWRTaXplID0gc2Vzc2lvbi5yZWNvbW1lbmRlZFdlYkdM
RnJhbWVidWZmZXJSZXNvbHV0aW9uKCk7Ci0gICAgYXV0byB3aWR0aCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PihzdGQ6OmNlaWwoMiAqIHJlY29tbWVuZGVkU2l6ZS53aWR0aCgpICogc2NhbGVGYWN0
b3IpKTsKKyAgICBhdXRvIHdpZHRoID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0ZDo6Y2VpbChy
ZWNvbW1lbmRlZFNpemUud2lkdGgoKSAqIHNjYWxlRmFjdG9yKSk7CiAgICAgYXV0byBoZWlnaHQg
PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RkOjpjZWlsKHJlY29tbWVuZGVkU2l6ZS5oZWlnaHQo
KSAqIHNjYWxlRmFjdG9yKSk7CiAKICAgICAvLyA5LjMuIEluaXRpYWxpemUgbGF5ZXLigJlzIGZy
YW1lYnVmZmVyIHRvIGEgbmV3IG9wYXF1ZSBmcmFtZWJ1ZmZlciB3aXRoIHRoZSBkaW1lbnNpb25z
IGZyYW1lYnVmZmVyU2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIv
b3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIv
b3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCmluZGV4IDA4ZWI3YjA4NTMyMmU0NWM3ZDg0MDNh
NDA3Y2I0YzAxMWM4ZmExOWMuLmI3NGZmNGU3NWRmNmVlNTk2YjljNDc3MDM4MzljODQ4ZmVhNDk3
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9y
bVhST3BlblhSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgV2ViQ29yZTo6SW50U2l6ZSBPcGVu
WFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbihTZXNzaW9uTW9kZSBtb2RlKQogICAgIGF1
dG8gY29uZmlnVHlwZSA9IHRvWHJWaWV3Q29uZmlndXJhdGlvblR5cGUobW9kZSk7CiAgICAgYXV0
byB2aWV3c0l0ZXJhdG9yID0gbV9jb25maWd1cmF0aW9uVmlld3MuZmluZChjb25maWdUeXBlKTsK
ICAgICBpZiAodmlld3NJdGVyYXRvciAhPSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50Pih2aWV3c0l0ZXJhdG9yLT52YWx1ZVswXS5y
ZWNvbW1lbmRlZEltYWdlUmVjdFdpZHRoKSwgc3RhdGljX2Nhc3Q8aW50Pih2aWV3c0l0ZXJhdG9y
LT52YWx1ZVswXS5yZWNvbW1lbmRlZEltYWdlUmVjdEhlaWdodCkgfTsKKyAgICAgICAgcmV0dXJu
IHsgc3RhdGljX2Nhc3Q8aW50PigyICogdmlld3NJdGVyYXRvci0+dmFsdWVbMF0ucmVjb21tZW5k
ZWRJbWFnZVJlY3RXaWR0aCksIHN0YXRpY19jYXN0PGludD4odmlld3NJdGVyYXRvci0+dmFsdWVb
MF0ucmVjb21tZW5kZWRJbWFnZVJlY3RIZWlnaHQpIH07CiAgICAgcmV0dXJuIERldmljZTo6cmVj
b21tZW5kZWRSZXNvbHV0aW9uKG1vZGUpOwogfQogCg==
</data>
<flag name="review"
          id="451420"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>