The webgl2 'transformfeedback' conformance tests fail on Mac Intel |
|||||
Issue descriptionChrome 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.
,
Aug 17 2016
,
Aug 17 2016
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.
,
Aug 17 2016
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.
,
Aug 17 2016
Great finding. Please add a driver bug workaround for it.
,
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
,
Aug 22 2016
|
|||||
►
Sign in to add a comment |
|||||
Comment 1 by jie.a.c...@intel.com
, Aug 17 2016Per 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?