Similar to ARB_robustness, uses our current robustness framework. There are some
problems preventing this from being completely usable, but we can't do anything
about them yet. See the bug for more info.
Currently, WebGLProgram holds a hashtable of refptrs to all WebGLUniformLocation's created from it.
It's used for one thing: to ensure that multiple getUniformLocation() calls on same uniform return the same WebGLUniformLocation object.
However, in a discussion on the public_webgl mailing list this week, we agreed that this was not mandated by the spec and that on the contrary, to ensure consistent behavior across browsers, we're going to require that NOT to happen. So this becomes a conformance issue.
Removing this hashtable also simplifies code and ownership patterns.
This patch switches to the new mutual ownership pattern for WebGL objects, based on maintaining a second WebGL-specific refcount mirroring the OpenGL refcount which we can't access, using the helper classes that were introduced in patches 1 and 2.
This patch implements the WebGLRefPtr class, which is how WebGL objects can hold strong references to each other that work in the same way as the references held by the underlying OpenGL objects, i.e. that will be immediately destroyed even by explicit delete calls.
This patch implements WebGLRefCountedObject, a base class for WebGL objects that implements a "WebGL refcount" mirroring the OpenGL refcount, separate from the XPCOM refcount. It collaborates with the WebGLRefPtr class introduced in patch 2.
These IIDs were used in the past to check, using do_QueryInterface, that the objects passed to WebGL functions were really of the expected type. Now that WebGL classes are marked 'builtinclass' in the IDL and that check has been removed (see bug 638328), none of that is needed anymore.
This patch should improve performance of the robustness timer by not resetting
it each time a draw operation happens. It still checks if there's any activity
and, if not, it will stop firing it. It includes a single extra timer firing
after activity dies to make sure we don't miss anything. Also includes a fix for
robustness being marked as existing when it really isn't.
We always have cairo surfaces now instead of having NULL ones. We should
check the status instead. This fixes crashes with the quartz and skia
azure backends.
Added some code to print to dump output of WebGL mochitest failures. Also added
special code to handle incorrect reference images. It will now provide the user
with a way to compare the reference and actual drawings.
Antialiasing can be blocked through the downloaded blocklist now, as well as
static analysis compiled into the OS-specific handlers for graphics features.
The upstream is
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/
This changeset also updates our lists of failing tests, and the garbageCollect() call before each test page is now done on all platforms, instead of only on linux, as it's now clear that we've been having this problem everywhere.
The upstream is
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/
This changeset also updates our lists of failing tests, and the garbageCollect() call before each test page is now done on all platforms, instead of only on linux, as it's now clear that we've been having this problem everywhere.
If we request alpha and it isn't enabled, or we request it off and it gets
enabled, we now fail the pbuffer creation and fall back to FBOs. This is bad for
performance but allows us to pass the conformance test in this case.
We are supposed to clear the WebGL framebuffer after it's been presented to the compositor and before the next draw operation, and were using the wrong way to know when we got composited. The right way is DidTransactionCallback.
This patch implements ARB_robustness on GLX and allows scripts to handle driver resets
through events. The changes in this patch are very sweeping; they hit almost
every NS_IMETHODIMP function within WebGLContextGL.cpp and WebGLContext.cpp.
More work must be done on this to support EGL_CONTEXT_LOST.
This is syncing us with the ANGLE project at
http://code.google.com/p/angleproject/
Also, with this new ANGLE revision, two WebGL conformance tests are now passing on windows so this patch removes them from failing_tests_windows.txt.
--HG--
rename : gfx/angle/angle-instrinsic-msvc2005.patch => gfx/angle/angle-intrinsic-msvc2005.patch
This is just syncing us with the upstreal WebGL conformance tests from
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/conformance/
Also reenabling the quickCheckAPI tests, updating the list of failing tests (only one part of quickCheckAPI added to the list) and added 3 lines of code to ignore empty lines in the lists of failing tests to get a correct count.
We've seen frequent intermittent failures in WebGL tests since WebGL AA landed. This turns out to be OOM conditions leading to failure to create WebGL contexts, due to the fact that the JS engine keeps too many unreferenced WebGL contexts around before it decides to GC (bug 617453). This patch makes us trigger the GC before every WebGL test page (there are 300 of them) which has proved to solve the problem on tryserver, with 18 green runs without any orange: https://tbpl.mozilla.org/?tree=Try&rev=789cf49fdc63
Failures occured most of the time on 32bit linux-pgo but have been observed on 64bit too, see bug 695947 comment 6.
We've seen frequent intermittent failures in WebGL tests since WebGL AA landed. This turns out to be OOM conditions leading to failure to create WebGL contexts, due to the fact that the JS engine keeps too many unreferenced WebGL contexts around before it decides to GC (bug 617453). This patch makes us trigger the GC before every WebGL test page (there are 300 of them) which has proved to solve the problem on tryserver, with 18 green runs without any orange: https://tbpl.mozilla.org/?tree=Try&rev=789cf49fdc63
Failures occured most of the time on 32bit linux-pgo but have been observed on 64bit too, see bug 695947 comment 6.