RESOLVED WONTFIX 84473
[chromium] GraphicsContext3D should ask WebGraphicsContext3D for unsupported extensions
https://bugs.webkit.org/show_bug.cgi?id=84473
Summary [chromium] GraphicsContext3D should ask WebGraphicsContext3D for unsupported ...
vollick
Reported 2012-04-20 11:49:12 PDT
Currently, GC3D::supportsExtension returns true if the extension is in the list obtained from gl, or if the extension is requestable from the WebGraphicsContext3D. We should return false if the extension is explicitly unsupported by the WebGraphicsContext3D.
Attachments
Patch (4.19 KB, patch)
2012-04-20 11:50 PDT, vollick
no flags
vollick
Comment 1 2012-04-20 11:50:39 PDT
James Robinson
Comment 2 2012-04-20 11:55:19 PDT
(In reply to comment #0) > if the extension is explicitly unsupported by the WebGraphicsContext3D. What does this mean? Is there a distinction between unsupported and not supported?
WebKit Review Bot
Comment 3 2012-04-20 11:55:41 PDT
Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.
vollick
Comment 4 2012-04-20 12:02:33 PDT
(In reply to comment #2) > (In reply to comment #0) > > if the extension is explicitly unsupported by the WebGraphicsContext3D. > > What does this mean? Is there a distinction between unsupported and not supported? WebGraphicsContext3DInProcessCommandBuffer does not support swap acks. It doesn't make sense in its context. Unfortunately GC3D::supportsExtension(swap acks) return true. GC3D only asks its WGC3D for a white list of requestable extensions. The logic is something like: supportsExtension(ext): return supportedByGL(ext) || isRequestableFromWGC3D(ext); So there's no way for the WGC3D to veto an extension. The intent of this patch is to allow WGC3D to return a blacklist so that we can do something like supportsExtension(ext): return (supportedByGL(ext) || isRequestableFromWGC3D(ext)) && !isUnsupportedByWG3D(ext);
Nat Duca
Comment 5 2012-04-20 12:13:28 PDT
Comment on attachment 138132 [details] Patch Does it make more sense to just make the wgc3dcbi/ipcbi implementation of supportsExtensnion() return false in this case? That seems cleaner to me than ading another wgc3d interface.
vollick
Comment 6 2012-04-20 12:21:25 PDT
(In reply to comment #5) > (From update of attachment 138132 [details]) > Does it make more sense to just make the wgc3dcbi/ipcbi implementation of supportsExtensnion() return false in this case? That seems cleaner to me than ading another wgc3d interface. AFAIK, wgc3d* does not implement supportsExtension. If it did, and it were called, then I agree that wgc3d*::supportsExtension would be the ideal place to do this check. It looks like the extensions object's supportExtension(ext) turns around and calls GC3D::supportsExtension(ext), but the GC3D does not consult its WGC3D. It just checks its two lists and returns true if it's in either. One list that the GC3D checks is a whitelist from the WGC3D. It seemed in keeping with the current code for the WGC3D to also provide a blacklist.
Nat Duca
Comment 7 2012-04-20 12:29:02 PDT
But how does it get the list? Can't we just precondition the list it gets to not have asyncswap? It seems like the core issue here is its lying when it supports the extension.
vollick
Comment 8 2012-04-20 13:07:20 PDT
(In reply to comment #7) > But how does it get the list? Can't we just precondition the list it gets to not have asyncswap? It seems like the core issue here is its lying when it supports the extension. Ah, yes we can. It turns out that _both_ lists used by GC3D pass through the WGC3D -- I had thought it was only one. Will close this issue.
Eric Seidel (no email)
Comment 9 2012-05-21 15:18:02 PDT
Comment on attachment 138132 [details] Patch Cleared review? from attachment 138132 [details] so that this bug does not appear in http://webkit.org/pending-review. If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).
Note You need to log in before you can comment on or make changes to this bug.