New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 638514 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug

Blocking:
issue 295792



Sign in to add a comment

The webgl2 'transformfeedback' conformance tests fail on Mac Intel

Project Member Reported by jie.a.c...@intel.com, Aug 17 2016

Issue description

Chrome Version       : master tot
URLs (if applicable) : 
OS version               : 10.11.6

What steps will reproduce the problem?
(1) launch chrome with --enable-unsafe-es3-apis to enable webgl2
(2) Goto https://www.khronos.org/registry/webgl/sdk/tests/webgl-conformance-tests.html?version=2.0.0
(3)run tests under deqp/functional/gles3/transformfeedback

What is the expected result?
all cases should pass.

What happens instead?
all failed.
 
Per my investigation, Mac implementation of the API 'resumeTransformFeedback' works incorrectly. The feedback didn't get actually resumed during my debugs on my MacMini and MacBookPro. I also found a workaround as below:

diff --git a/sdk/tests/deqp/functional/gles3/es3fTransformFeedbackTests.js b/sdk/tests/deqp/functional/gles3/es3fTransformFeedbackTests.js
index 49da7a2..b1f1a83 100644
--- a/sdk/tests/deqp/functional/gles3/es3fTransformFeedbackTests.js
+++ b/sdk/tests/deqp/functional/gles3/es3fTransformFeedbackTests.js
@@ -1147,8 +1147,11 @@ goog.scope(function() {

             // Pause or resume transform feedback if necessary.
             if (call.transformFeedbackEnabled != tfEnabled) {
-                if (call.transformFeedbackEnabled)
+                if (call.transformFeedbackEnabled) {
+                    gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);
+                    gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, this.m_transformFeedback);
                     gl.resumeTransformFeedback();
+               }
                 else
                     gl.pauseTransformFeedback();
                 tfEnabled = call.transformFeedbackEnabled;
 

We can simply unbind transformfeedback temporarily prior to resuming it.

Should we add this kind of walkaround in chromium to pass the cases for Mac?
Blocking: 295792
Cc: kbr@chromium.org zmo@chromium.org qiankun....@intel.com yunchao...@intel.com
Components: Blink>WebGL Internals>GPU>Internals
Hi, Ken and Zhenyao, could you give Jie (jie.a.chen@intel.com) Chromium contributor privilege. Then he can own a crbug, cc a crbug to the relevant people, etc. Jie is a senior engineer in my team, and focus on WebGL 2 CTS failures on Mac Intel since July 2016, and he would focus on WebGraphics area too in future. Thanks in advance. 

Comment 4 by kbr@chromium.org, Aug 17 2016

Labels: -Pri-3 Pri-2
Jie: excellent investigation. I'm surprised the test failures are so bad. I thought I ran at least some of them locally on my Mac and found that many passed, but maybe I was wrong.

Yes, it would be great if you could add a driver bug workaround for this and enable it on Mac OS for all GPU types. Thanks.

Yunchao: we will definitely ask for Chromium contributor privileges for Jie.

Comment 5 by zmo@chromium.org, Aug 17 2016

Status: Available (was: Unconfirmed)
Great finding. Please add a driver bug workaround for it.
Project Member

Comment 6 by bugdroid1@chromium.org, Aug 22 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0494f634cad9c20494a458e79120f10cca315582

commit 0494f634cad9c20494a458e79120f10cca315582
Author: jie.a.chen <jie.a.chen@intel.com>
Date: Mon Aug 22 06:44:57 2016

Add a transform feedback workaround for Intel GPUs on MacOSX

Temporarily unbind current transform feedback object to make
glResumeTransformFeedback actually work correctly.

BUG= 638514 
TEST=webgl2_conformance_test/deqp/functional/gles3/transformfeedback on mac
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2252153003
Cr-Commit-Position: refs/heads/master@{#413412}

[modify] https://crrev.com/0494f634cad9c20494a458e79120f10cca315582/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
[modify] https://crrev.com/0494f634cad9c20494a458e79120f10cca315582/gpu/command_buffer/service/gles2_cmd_decoder.cc
[modify] https://crrev.com/0494f634cad9c20494a458e79120f10cca315582/gpu/config/gpu_driver_bug_list_json.cc
[modify] https://crrev.com/0494f634cad9c20494a458e79120f10cca315582/gpu/config/gpu_driver_bug_workaround_type.h

Comment 7 by zmo@chromium.org, Aug 22 2016

Owner: jie.a.c...@intel.com
Status: Fixed (was: Available)
Summary: The webgl2 'transformfeedback' conformance tests fail on Mac Intel (was: The webgl2 'transformfeedback' conformance tests fail on Mac )

Sign in to add a comment