Closed
Bug 1383907
Opened 8 years ago
Closed 7 years ago
Enable WebVR tests on macOS
Categories
(Core :: WebVR, enhancement)
Tracking
()
RESOLVED
FIXED
mozilla57
Tracking | Status | |
---|---|---|
firefox57 | --- | fixed |
People
(Reporter: kip, Assigned: daoshengmu)
References
Details
Attachments
(1 file)
Bug 1310656 adds support for WebVR on macOS, which was previously only supported on Windows.
Before enabling by default in Bug 1374399, we should turn on the reftests and mochitests for WebVR and ensure that they are all passing on macOS.
Assignee | ||
Comment 2•8 years ago
|
||
Before enabling reftest for WebVR on MacOS, we have to support VRDisplayPuppet::SubmitFrame() for catching the frame results on MacOS.
Comment hidden (mozreview-request) |
Assignee | ||
Comment 4•7 years ago
|
||
(In reply to Daosheng Mu[:daoshengmu] from comment #3)
> Created attachment 8901010 [details]
> Bug 1383907 - Enable WebVR reftests on macOS;
>
> Review commit: https://reviewboard.mozilla.org/r/172478/diff/#index_header
> See other reviews: https://reviewboard.mozilla.org/r/172478/
It run well in local, waiting for the try result.
Assignee | ||
Comment 5•7 years ago
|
||
Try looks good, https://treeherder.mozilla.org/#/jobs?repo=try&revision=7f4d916c2cb2dc9fa6350a814b4f5977d72946f6
We need to add a fuzzy-if because there is platform specific color-bleeding difference with the reference texture on change_size.html.
Comment hidden (mozreview-request) |
Reporter | ||
Comment 7•7 years ago
|
||
mozreview-review |
Comment on attachment 8901010 [details]
Bug 1383907 - Enable WebVR reftests on macOS;
https://reviewboard.mozilla.org/r/172478/#review178792
Excellent, thanks for bringing this up!
Attachment #8901010 -
Flags: review?(kgilbert) → review+
Comment hidden (mozreview-request) |
Assignee | ||
Comment 9•7 years ago
|
||
Comment on attachment 8901010 [details]
Bug 1383907 - Enable WebVR reftests on macOS;
Before landing it, I would like to have your feedback. Because it seems to be related with Bug 1382104 that you are working on. Should I wait for your patches landed?
Attachment #8901010 -
Flags: feedback?(jgilbert)
Comment 10•7 years ago
|
||
mozreview-review |
Comment on attachment 8901010 [details]
Bug 1383907 - Enable WebVR reftests on macOS;
https://reviewboard.mozilla.org/r/172478/#review179826
::: dom/vr/test/reftest/reftest.list:9
(Diff revision 3)
> -# VR SubmitFrame is only implemented for D3D11 now.
> +# VR SubmitFrame is only implemented for D3D11 and MacOSX now.
> # We need to continue to investigate why these reftests can be run well in local,
> -# but will be suspended until terminating on reftest debug build.
> -skip-if(!winWidget||!layersGPUAccelerated||isDebugBuild) == draw_rect.html wrapper.html?draw_rect.png
> -skip-if(!winWidget||!layersGPUAccelerated||isDebugBuild) == change_size.html wrapper.html?change_size.png
> +# but will be suspended until terminating on reftest D3D11 debug build.
> +skip-if(Android||gtkWidget||(winWidget&&isDebugBuild)||!layersGPUAccelerated) == draw_rect.html wrapper.html?draw_rect.png
> +# On MacOSX platform, because of getting different color interpolation result,
> +# we need to adjust it to fuzzy-if(cocoaWidget, 32,1800) in local.
This sounds like a bug.
::: gfx/vr/gfxVRPuppet.cpp:366
(Diff revision 3)
> // Ideally, we should convert the srcData to a PNG image and decode it
> // to a Base64 string here, but the GPU process does not have the privilege to
> // access the image library. So, we have to convert the RAW image data
> // to a base64 string and forward it to let the content process to
> // do the image conversion.
> - char* srcData = static_cast<char*>(mapInfo.pData);
> + char *srcData = static_cast<char*>(mapInfo.pData);
Why did you move the star against the name? It should remain against the type, to the left.
::: gfx/vr/gfxVRPuppet.cpp:434
(Diff revision 3)
> mContext->RSSetViewports(1, &viewport);
> mContext->RSSetScissorRects(1, &scissor);
> mContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
> mContext->VSSetShader(mQuadVS, nullptr, 0);
> mContext->PSSetShader(mQuadPS, nullptr, 0);
> - ID3D11ShaderResourceView* srView = aSource->GetShaderResourceView();
> + ID3D11ShaderResourceView *srView = aSource->GetShaderResourceView();
star to left
::: gfx/vr/gfxVRPuppet.cpp:475
(Diff revision 3)
> {
> - if (!mIsPresenting) {
> + if (!mIsPresenting || !aMacIOSurface) {
> return false;
> }
>
> - // TODO: Bug 1343730, Need to block until the next simulated
> + VRManager *vm = VRManager::Get();
star to left
::: gfx/vr/gfxVRPuppet.cpp:495
(Diff revision 3)
> + // Ideally, we should convert the srcData to a PNG image and decode it
> + // to a Base64 string here, but the GPU process does not have the privilege to
> + // access the image library. So, we have to convert the RAW image data
> + // to a base64 string and forward it to let the content process to
> + // do the image conversion.
> + const uint8_t *srcData = dataSurf->GetData();
star to left
::: gfx/vr/gfxVRPuppet.cpp:505
(Diff revision 3)
> + nsCString rawString(Substring((char*)srcData,
> + dataSurf->Stride() * surfSize.height));
This is wrong if the data is not tightly strided. Handle or assert this.
Attachment #8901010 -
Flags: review-
Comment 11•7 years ago
|
||
mozreview-review |
Comment on attachment 8901010 [details]
Bug 1383907 - Enable WebVR reftests on macOS;
https://reviewboard.mozilla.org/r/172478/#review179830
Comment hidden (mozreview-request) |
Assignee | ||
Comment 13•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8901010 [details]
Bug 1383907 - Enable WebVR reftests on macOS;
https://reviewboard.mozilla.org/r/172478/#review179826
> This is wrong if the data is not tightly strided. Handle or assert this.
indeed. I have handled it by rows when the width is not equal to (stride / formatSize).
Assignee | ||
Comment 14•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8901010 [details]
Bug 1383907 - Enable WebVR reftests on macOS;
https://reviewboard.mozilla.org/r/172478/#review179826
> This sounds like a bug.
After fixing, the fuzzy-if(1,600) is on try servers and (1, 1200) in local. It looks like the Retina display difference.
Assignee | ||
Comment 15•7 years ago
|
||
Comment 16•7 years ago
|
||
mozreview-review |
Comment on attachment 8901010 [details]
Bug 1383907 - Enable WebVR reftests on macOS;
https://reviewboard.mozilla.org/r/172478/#review182112
::: dom/vr/test/reftest/reftest.list:11
(Diff revision 4)
> -# but will be suspended until terminating on reftest debug build.
> -skip-if(!winWidget||!layersGPUAccelerated||isDebugBuild) == draw_rect.html wrapper.html?draw_rect.png
> -skip-if(!winWidget||!layersGPUAccelerated||isDebugBuild) == change_size.html wrapper.html?change_size.png
> +# but will be suspended until terminating on reftest D3D11 debug build.
> +skip-if(Android||gtkWidget||(winWidget&&isDebugBuild)||!layersGPUAccelerated) == draw_rect.html wrapper.html?draw_rect.png
> +# On MacOSX platform, because of getting different color interpolation result,
> +# we need to adjust it to fuzzy-if(cocoaWidget,1,1200) in local.
> +# However, it is fine to let fuzzy-if(cocoaWidget,1,600) on try servers.
> +fuzzy-if(cocoaWidget,1,600) skip-if(Android||gtkWidget||(winWidget&&isDebugBuild)||!layersGPUAccelerated) == change_size.html wrapper.html?change_size.png
This is really suspicious. I really suspect a bug here. Check the output of the reftests.
::: gfx/vr/gfxVRPuppet.cpp:495
(Diff revision 4)
> + // Ideally, we should convert the srcData to a PNG image and decode it
> + // to a Base64 string here, but the GPU process does not have the privilege to
> + // access the image library. So, we have to convert the RAW image data
> + // to a base64 string and forward it to let the content process to
> + // do the image conversion.
> + const uint8_t* srcData = dataSurf->GetData();
GetData and GetStride are deprecated. Use Map.
::: gfx/vr/gfxVRPuppet.cpp:505
(Diff revision 4)
> + if ((surfSize.width * 4) == dataSurf->Stride()) {
> + rawString = Substring((char*)srcData, dataSurf->Stride() * surfSize.height);
Don't bother with a fastpath. It's more important that this be correct than that it be fast.
::: gfx/vr/gfxVRPuppet.cpp:509
(Diff revision 4)
> + nsCString rawString;
> + if ((surfSize.width * 4) == dataSurf->Stride()) {
> + rawString = Substring((char*)srcData, dataSurf->Stride() * surfSize.height);
> + } else {
> + for (int32_t i = 0; i < surfSize.height; i++) {
> + rawString += Substring((char*)(srcData) + i * dataSurf->Stride(),
const char*, if you need to cast at all.
::: gfx/vr/gfxVRPuppet.cpp:525
(Diff revision 4)
> + }
> + break;
> + }
> + case 2:
> + {
> + MOZ_ASSERT(false, "Not support show VR frames on MacOSX yet.");
s/Not support show/No support for showing/
Attachment #8901010 -
Flags: review?(jgilbert) → review-
Comment hidden (mozreview-request) |
Assignee | ||
Comment 18•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8901010 [details]
Bug 1383907 - Enable WebVR reftests on macOS;
https://reviewboard.mozilla.org/r/172478/#review182112
> This is really suspicious. I really suspect a bug here. Check the output of the reftests.
I have confirmed it with other 15" MBP. I can get pass for fuzzy-if(cocoaWidget,1,600) no matter integrated or independent GPUs. I think it is because I was using 13" MBP that has lower resolution.
Assignee | ||
Updated•7 years ago
|
Target Milestone: --- → mozilla57
Comment 19•7 years ago
|
||
mozreview-review |
Comment on attachment 8901010 [details]
Bug 1383907 - Enable WebVR reftests on macOS;
https://reviewboard.mozilla.org/r/172478/#review184738
::: gfx/vr/gfxVRPuppet.cpp:501
(Diff revision 5)
> + if (!dataSurf->Map(gfx::DataSourceSurface::MapType::READ, &map)) {
> + MOZ_ASSERT(false, "Read DataSourceSurface fail.");
> - return false;
> + return false;
> - }
> + }
> + const uint8_t* srcData = map.mData;
> + IntSize surfSize(dataSurf->GetSize());
Prefer:
const auto& surfSize = dataSurf->GetSize();
Attachment #8901010 -
Flags: review?(jgilbert) → review+
Comment 20•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8901010 [details]
Bug 1383907 - Enable WebVR reftests on macOS;
https://reviewboard.mozilla.org/r/172478/#review179826
> indeed. I have handled it by rows when the width is not equal to (stride / formatSize).
Like this:
https://reviewboard.mozilla.org/r/170344/diff/1#index_header
Comment 21•7 years ago
|
||
mozreview-review |
Comment on attachment 8901010 [details]
Bug 1383907 - Enable WebVR reftests on macOS;
https://reviewboard.mozilla.org/r/172478/#review184740
Comment hidden (mozreview-request) |
Comment 23•7 years ago
|
||
Pushed by dmu@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/fd638dbfa55d
Enable WebVR reftests on macOS; r=jgilbert,kip
Comment 24•7 years ago
|
||
bugherder |
You need to log in
before you can comment on or make changes to this bug.
Description
•