Closed
Bug 926128
Opened 11 years ago
Closed 11 years ago
reduce layer programs in use to 6, add colormatrix and blur support
Categories
(Core :: Graphics: Layers, defect)
Tracking
()
RESOLVED
FIXED
mozilla30
People
(Reporter: gal, Assigned: mtseng)
References
Details
Attachments
(12 files, 20 obsolete files)
5.02 KB,
patch
|
vlad
:
review+
|
Details | Diff | Splinter Review |
3.02 KB,
patch
|
vlad
:
review+
|
Details | Diff | Splinter Review |
18.44 KB,
patch
|
vlad
:
review+
|
Details | Diff | Splinter Review |
27.20 KB,
patch
|
vlad
:
review+
|
Details | Diff | Splinter Review |
8.85 KB,
patch
|
vlad
:
review+
|
Details | Diff | Splinter Review |
31.43 KB,
patch
|
vlad
:
review+
|
Details | Diff | Splinter Review |
5.25 KB,
patch
|
nical
:
review+
|
Details | Diff | Splinter Review |
60.14 KB,
patch
|
vlad
:
review+
|
Details | Diff | Splinter Review |
2.59 KB,
patch
|
vlad
:
review+
|
Details | Diff | Splinter Review |
3.81 KB,
patch
|
vlad
:
review+
|
Details | Diff | Splinter Review |
5.69 KB,
patch
|
gal
:
review+
|
Details | Diff | Splinter Review |
128.14 KB,
patch
|
Details | Diff | Splinter Review |
This patch reduces the layer programs we use to 6 by selecting some of the minor variants with uniforms. On older and new hardware this may add up to 2 cycles to the fragment shader in some cases. In practice this should be irrelevant.
All texture layer shaders are generated from the same source, and this patch also adds color matrix and blurring support, even though thats not actually used yet.
Reporter | ||
Updated•11 years ago
|
Summary: reduce layer programs in use to 6 → reduce layer programs in use to 6, add colormatrix and blur support
Reporter | ||
Comment 1•11 years ago
|
||
Assignee: nobody → gal
Reporter | ||
Comment 2•11 years ago
|
||
A couple additional notes:
- Both blur and shadow will need two passes with the shader, each of which does 21 texture reads. On Mali this takes upwards of 900 cycles per pixel per pass. For smaller blur radii it might be worth having a dynamic kernel size?
- The color matrix multiplication seems pretty cheap. We might just always enable that instead of having an extra kind of program (right now I would need 6 additional programs for CM, and then another 6 for blur+CM).
- The remaining programs can be deleted once we finally kill the older layer manager.
Reporter | ||
Updated•11 years ago
|
Attachment #816284 -
Flags: feedback?(roc)
Reporter | ||
Comment 3•11 years ago
|
||
Attachment #816284 -
Attachment is obsolete: true
Attachment #816284 -
Flags: feedback?(roc)
Reporter | ||
Updated•11 years ago
|
Attachment #816352 -
Attachment description: patch → Unify into 6 programs and use them in the compositor.
Reporter | ||
Comment 4•11 years ago
|
||
Reporter | ||
Updated•11 years ago
|
Attachment #816353 -
Attachment is patch: true
Reporter | ||
Comment 5•11 years ago
|
||
Reporter | ||
Comment 6•11 years ago
|
||
Reporter | ||
Updated•11 years ago
|
Attachment #816352 -
Flags: review?(bgirard)
Reporter | ||
Updated•11 years ago
|
Attachment #816353 -
Flags: review?(bgirard)
Reporter | ||
Updated•11 years ago
|
Attachment #816354 -
Flags: review?(bgirard)
Reporter | ||
Updated•11 years ago
|
Attachment #816355 -
Flags: review?(bgirard)
Sounds good to me, but my opinion isn't worth much here.
Comment 8•11 years ago
|
||
Here is a benchmark that may help determine whether switching to a 'unified shader' can have an impact on performance:
http://people.mozilla.org/~bjacob/webglbranchingbenchmark/webglbranchingbenchmark.html
It replaces 6 separate programs by one, with two degrees of freedom controlled by uniform:
* one uniform, 'texSwitch', allows to switch between two textures or a solid color (3 possibilities);
* one uniform, 'colorSwitch', allows to switch between color and monochrome rendering (2 possibilities).
Hopefully that's a fair enough benchmark for what we're trying to do here. Note that all the quads are semitransparent to actually exercise shader performance on deferred-HSR renderers such as the PowerVR (otherwise the PowerVR just optimises overdrawing away, see https://wiki.mozilla.org/Platform/GFX/MobileGPUs).
Comment 9•11 years ago
|
||
Uploaded some results there:
http://people.mozilla.org/~bjacob/webglbranchingbenchmark/webglbranchingbenchmarkresults.txt
These results confirm that switching to a unified shader indeed does not affect performance on desktop GPUs (including Intel integrated GPUs) of the past 5 years or so.
But it is affecting performance on some older desktop GPUs that we still need to care about (see the Geforce 7 result), and it is affecting performance on all mobile GPUs that I tested --- see in particular the Adreno 200 result and the PowerVR 540 result.
Of course there could always be something wrong in how this benchmark tries to imitate what a compositor has to do --- comments welcome!
Reporter | ||
Comment 10•11 years ago
|
||
The patch only switches swizzle and alpha/no-alpha as well as color or alphas for component rendering. That should be even on old GPUs and mobile where all the paths get executed essentially free.
As for the general benchmarks, we have to make sure we support Geoforce 7, but I wouldn't optimize for it.
Comment 11•11 years ago
|
||
Sorry for punting on this review so far. Hoping to resolve some b2g perf issues ahead of the paris work week. I do have some concern about the performance impact given the results bjacob has.
Reporter | ||
Comment 12•11 years ago
|
||
No worries. Lets bounce the reviews to bjacob. I am working with him on the perf question.
Comment 13•11 years ago
|
||
Here is an updated benchmark that aims to be closer to the shader changes in the present patches, as discussed on IRC (let me know if they should still be changed).
http://people.mozilla.org/~bjacob/webglbranchingbenchmark/webglbranchingbenchmark-variant.html
Results are similar to earlier. The speed difference for PowerVR is lower than before, but still large.
http://people.mozilla.org/~bjacob/webglbranchingbenchmark/webglbranchingbenchmarkresults-variant.txt
I was intrigued that our fillrate was so low on both the PowerVR and the Adreno with either shader (1 ms per quarter-screen quad on the Adreno) so I wondered if that was due to having draw-calls drawing only one quad each. So made a variant of the benchmark drawing 16 quads per draw-call, but that didn't make a big difference except that now the PowerVR couldn't even complete the benchmark with unified shader. For reference, it's at http://people.mozilla.org/~bjacob/webglbranchingbenchmark/webglbranchingbenchmark-variant2.html . Then I wondered if that low fill-rate was bound by the texture memory bandwidth to read from the textures, so I made another variant with tiny 16x12 texture so that it would fit in cache entirely and use practically no bandwidth to sample from... but I still got the same results. For reference, that variant is http://people.mozilla.org/~bjacob/webglbranchingbenchmark/webglbranchingbenchmark-variant3.html
At this point I am pretty much done with benchmarking unless you can think of a flaw in this benchmarking that we didn't already think of. If you think that there is a chance that this benchmarking could be irrelevant, one thing that you can do is to build with your patches and see how performance is actually affected. I would be especially interested in PowerVR devices.
Comment 14•11 years ago
|
||
Now that I think of it, the "low fill rate" absolute measurement above is probably very imprecise because this measurement is based on timing on the CPU side, using glFinish to sync the GPU. So let's disregard it. This approach is probably only suitable for getting rough relative measurements (A is X times slower than B), not absolute measurements. And even for relative measurements, this is only to be taken as a rough lower bound (i.e. when we say that A is X times slower than B, A could be even slower than that).
Reporter | ||
Comment 15•11 years ago
|
||
1ms vs 6ms is a sufficient scale to make decisions based on that I think. I will go and change the uniforms to compile-time settings (defines). Its not a big change in the approach, and should then bring performance back to what we had before, while still generating the shaders from one source.
Comment 16•11 years ago
|
||
Thanks. Changing these to be compile-time settings will definitely address the performance issue underlined by these benchmarks.
Comment 17•11 years ago
|
||
Are we still interested in having these patch reviewed?
Reporter | ||
Comment 18•11 years ago
|
||
Not the current form, I will work with bjacob on the next iteration (won't be a big change).
Comment 19•11 years ago
|
||
(In reply to Andreas Gal :gal from comment #18)
> Not the current form, I will work with bjacob on the next iteration (won't
> be a big change).
If you're extending/changing how the shaders are pre-processed then perhaps it's time to consider if we can represent what we're doing with the C preprocessor. The C preprocessor isn't great but it surely beats the random language thing we have now. and it's much more familiar. We could then compile our shaders by running a c compiler and only requesting the preprocessor phase.
Reporter | ||
Comment 20•11 years ago
|
||
Thats what I am doing. I am using #defines to configure the shaders.
Yeah, trusting the GLSL compiler's preprocessor is.. well, doable, but only really for simple things. Would be nice if we had our own preprocessor here, especially if we want to do more things with GLSL in the future.
However, I would suggest doing that in the future. (It would be nice if we could do this via JS, as there are some nice simple JS templating things out there.)
Reporter | ||
Comment 22•11 years ago
|
||
Attachment #816352 -
Attachment is obsolete: true
Attachment #816352 -
Flags: review?(bgirard)
Attachment #819785 -
Flags: review?(bjacob)
Reporter | ||
Comment 23•11 years ago
|
||
Attachment #816353 -
Attachment is obsolete: true
Attachment #816353 -
Flags: review?(bgirard)
Attachment #819786 -
Flags: review?(bjacob)
Reporter | ||
Comment 24•11 years ago
|
||
Attachment #816354 -
Attachment is obsolete: true
Attachment #816354 -
Flags: review?(bgirard)
Attachment #819788 -
Flags: review?(bjacob)
Reporter | ||
Comment 25•11 years ago
|
||
Note: this adds a branch that depends on a uniform. This is known to be slow on mobile, where we don't use component alpha. Its fast on desktop, and avoiding the rebinding is actually a net win on my mac.
Attachment #816355 -
Attachment is obsolete: true
Attachment #816355 -
Flags: review?(bgirard)
Attachment #819789 -
Flags: review?(bjacob)
Reporter | ||
Comment 26•11 years ago
|
||
Attachment #819791 -
Flags: review?(bjacob)
Reporter | ||
Comment 27•11 years ago
|
||
Attachment #819793 -
Flags: review?(bjacob)
Reporter | ||
Comment 28•11 years ago
|
||
Attachment #819794 -
Flags: review?(bjacob)
Reporter | ||
Comment 29•11 years ago
|
||
I am pretty sure that uTexCoordMultiplier is actually not needed at all. I might do another patch for that, but I would like to land this long queue first.
Comment 30•11 years ago
|
||
Expect longer review times than usual due to the gfx work week.
Reporter | ||
Comment 31•11 years ago
|
||
Thanks. The code is pretty active and due to the depth of the queue stuff gets stale quickly and is really painful to rebase so I would appreciate any time you can make for this.
Reporter | ||
Comment 32•11 years ago
|
||
This version of the patch also reduces things to just EFFECT_RGB since its redundant and can get out of whack with the texture format itself.
Attachment #819793 -
Attachment is obsolete: true
Attachment #819793 -
Flags: review?(bjacob)
Attachment #820100 -
Flags: review?(bjacob)
Reporter | ||
Comment 33•11 years ago
|
||
Attachment #819794 -
Attachment is obsolete: true
Attachment #819794 -
Flags: review?(bjacob)
Attachment #820101 -
Flags: review?(bjacob)
Reporter | ||
Comment 34•11 years ago
|
||
It is __EXTREMELY__ urgent that we delete the old layers code. Its excruciatingly painful to hack around it and keep it working while trying to fix the new code.
Attachment #820103 -
Flags: review?(bjacob)
Reporter | ||
Comment 35•11 years ago
|
||
When do you think will you be able to review this?
Comment 36•11 years ago
|
||
Benoit, is there somebody else you can suggest to review this? I know you have the bug 914823 which is a 1.2 CS release blocker, and it's something you should stay focused on, but if you can think of somebody else to hand the review to, it would work. Vlad maybe?
Comment 37•11 years ago
|
||
Thanks for considering taking this off my plate; indeed between the work week, bug 914823 which is koi+, working on the solution for bug 923530 which we agreed on during the work week, and writing up the surfaces conversation that we had during the work week, now is a very busy time for me.
Really anyone who is a gfx peer is at least as qualified as I am to review this, given that I haven't previously written or reviewed code around here. Maybe use hg log / hg annotate to find out who's the best reviewer.
Comment 38•11 years ago
|
||
Thanks. I think a good approach here may be to split this up a bit. Nical, can you do a first pass, take a very quick look at the code, and pick a few of the patches that would be in your area of expertise. Then let me know, and I'll ask nrc and mwoodrow to split the rest. It should let us do these reviews faster in the end.
Flags: needinfo?(nical.bugzilla)
Reporter | ||
Comment 39•11 years ago
|
||
The patch is pretty straight forward code reshuffling. I am happy to walk nical through the patch queue.
Comment on attachment 819785 [details] [diff] [review]
Part 1: Create one unified shader thats configurable and use it in CompositorOGL.
Review of attachment 819785 [details] [diff] [review]:
-----------------------------------------------------------------
Almost a r+ with some comments/suggestions, but I need an answer on the last issue in the shaders, about RB swap -- it seems like it needs to be applied earlier.
::: gfx/layers/opengl/LayerManagerOGLProgram.cpp
@@ +111,5 @@
> + if (aType == RGBLayerProgramType ||
> + aType == RGBRectLayerProgramType) {
> + AddConfig(result, "#define ENABLE_TEXTURE_NO_ALPHA");
> + result.mUniforms.AppendElement(Argument("uTextureNoAlpha"));
> + }
Pull out this if block, no need for it to be nested. Could even just handle RGBComponentAlphaLayerProgramType separately but meh.
@@ +372,5 @@
> + vs << mProfile.mDefines[i] << endl;
> + fs << mProfile.mDefines[i] << endl;
> + }
> + vs << mProfile.mVertexShaderString << endl;
> + fs << mProfile.mFragmentShaderString << endl;
Wow, I just noticed that our programs don't have a #version directive. That's ok, if it's omitted the oldest version is assumed, but ew.
::: gfx/layers/opengl/LayerManagerOGLProgram.h
@@ +394,5 @@
> + }
> +
> + void SetTexturePass2(bool aFlag) {
> + SetUniform(mProfile.LookupUniformLocation("uTexturePass2"), aFlag ? 1 : 0);
> + }
Please document what these three do in the header.
::: gfx/layers/opengl/LayerManagerOGLShaders.txt
@@ +345,5 @@
> +@shader sTextureLayer<mask:,Mask,Mask3D>FS
> +#ifdef ENABLE_TEXTURE_RECT
> +#extension GL_ARB_texture_rectangle : require
> +#define sampler2D sampler2DRect
> +#define texture2D texture2DRect
Blarg, this is both great and gross at the same time!
@@ +396,3 @@
> {
> vec4 color;
> +#ifdef ENABLE_TEXTURE_YCBCR
Would be nice if we had a full cpp preprocessor instead of just the half-assed one provided by GLSL (so you could #elif in this function).
btw, https://twitter.com/drawElements/status/391174860161822720 might be interesting.
@@ +470,5 @@
> + if (uTextureNoAlpha)
> + color = vec4(color.rgb, 1.0);
> +#endif
> +#ifdef ENABLE_TEXTURE_BGR
> + if (uTextureBGR)
For sanity, you should really call this "SWAP_RB" or something.
However, this is the wrong place to apply it -- you need to swizzle right after sample(). Otherwise the color matrix will be applied to the wrong channels.
Unless TEXTURE_BGR means that the destination texture should be treated as bgr, in which case it /really/ needs some documentation (and probably called SWAP_RB_OUTPUT)
Attachment #819786 -
Flags: review?(bjacob) → review+
Attachment #819788 -
Flags: review?(bjacob) → review+
Comment on attachment 819789 [details] [diff] [review]
Part 4: Simplify component alpha path and avoid re-binding and duplicate program activation.
Review of attachment 819789 [details] [diff] [review]:
-----------------------------------------------------------------
::: gfx/layers/opengl/CompositorOGL.cpp
@@ -1229,5 @@
> - program->SetLayerOpacity(aOpacity);
> - program->SetLayerTransform(aTransform);
> - program->SetTextureTransform(gfx3DMatrix());
> - program->SetRenderOffset(aOffset.x, aOffset.y);
> - program->SetLayerQuadRect(aRect);
(from old code) RenderOffset, LayerQuadRect aren't set in the new version of the code. Should they be?
Attachment #819791 -
Flags: review?(bjacob) → review+
Comment on attachment 820100 [details] [diff] [review]
Part 6: Configure RGB/BGR and alpha/no alpha via defines, not uniforms, since that can be slow on some hardware.
Review of attachment 820100 [details] [diff] [review]:
-----------------------------------------------------------------
This is the wrong patch -- identical to part 7 patch.
Attachment #820100 -
Flags: review?(bjacob) → review-
Attachment #820101 -
Flags: review?(bjacob) → review+
Attachment #820103 -
Flags: review?(bjacob) → review+
Reporter | ||
Comment 43•11 years ago
|
||
(In reply to Vladimir Vukicevic [:vlad] [:vladv] from comment #41)
> Comment on attachment 819789 [details] [diff] [review]
> Part 4: Simplify component alpha path and avoid re-binding and duplicate
> program activation.
>
> Review of attachment 819789 [details] [diff] [review]:
> -----------------------------------------------------------------
>
> ::: gfx/layers/opengl/CompositorOGL.cpp
> @@ -1229,5 @@
> > - program->SetLayerOpacity(aOpacity);
> > - program->SetLayerTransform(aTransform);
> > - program->SetTextureTransform(gfx3DMatrix());
> > - program->SetRenderOffset(aOffset.x, aOffset.y);
> > - program->SetLayerQuadRect(aRect);
>
> (from old code) RenderOffset, LayerQuadRect aren't set in the new version of
> the code. Should they be?
program->SetLayerQuadRect(aRect);
program->SetLayerTransform(aTransform);
program->SetRenderOffset(aOffset.x, aOffset.y);
is set further up in the control flow (above the switch)
Reporter | ||
Comment 44•11 years ago
|
||
Attachment #819785 -
Attachment is obsolete: true
Attachment #819785 -
Flags: review?(bjacob)
Attachment #825249 -
Flags: review?(vladimir)
Reporter | ||
Comment 45•11 years ago
|
||
Attachment #819789 -
Attachment is obsolete: true
Attachment #819789 -
Flags: review?(bjacob)
Attachment #825251 -
Flags: review?(vladimir)
Reporter | ||
Comment 46•11 years ago
|
||
This addresses the RB_SWAP renaming.
Attachment #820100 -
Attachment is obsolete: true
Attachment #825254 -
Flags: review?(vladimir)
Reporter | ||
Comment 47•11 years ago
|
||
Note: Part 4 is unchanged.
Updated•11 years ago
|
Attachment #825251 -
Flags: review?(vladimir) → review+
Comment 48•11 years ago
|
||
Sorry It took me a while to react. I felt comfortable reviewing part 4, not so much the other ones, but I could provide an uneducated review if Vlad is too busy. It would not be as good as if someone who knows that code did it though.
Flags: needinfo?(nical.bugzilla)
Reporter | ||
Comment 49•11 years ago
|
||
Feel free to feedback+/- I will wait for vlad's final r+.
Attachment #825249 -
Flags: review?(vladimir) → review+
Reporter | ||
Comment 50•11 years ago
|
||
Part 6 has rebase errors. I am uploading it again.
Reporter | ||
Comment 51•11 years ago
|
||
Attachment #825254 -
Attachment is obsolete: true
Attachment #825254 -
Flags: review?(vladimir)
Attachment #825385 -
Flags: review?
Comment on attachment 825254 [details] [diff] [review]
Part 6: Configure RGB/BGR and alpha/no alpha via defines, not uniforms, since that can be slow on some hardware.
Review of attachment 825254 [details] [diff] [review]:
-----------------------------------------------------------------
r- due to not updating the other Compositors; you should've really already try server'd this whole patch series :)
::: gfx/layers/CompositorTypes.h
@@ +120,5 @@
> enum EffectTypes
> {
> EFFECT_MASK,
> EFFECT_MAX_SECONDARY, // sentinel for the count of secondary effect types
> + EFFECT_RGB,
To do this you have to fix all the other compositors; they all reference EFFECT_BGRX etc.
::: gfx/layers/opengl/CompositorOGL.h
@@ +73,5 @@
> + bool operator< (const ShaderConfigOGL& other) const {
> + return mFeatures < other.mFeatures;
> + }
> +
> + int mFeatures;
uint32_t ?
::: gfx/layers/opengl/LayerManagerOGLShaders.txt
@@ +386,5 @@
> // if the below was |cb = texture2D(...).r - 0.5|, the "- 0.5" was
> // just being ignored/skipped. This, of course, lead to crappy
> // rendering -- see bug 765150. Doing them separately like below
> // makes it all OK. We don't know if this is special to constants,
> // special to 0.5, special to addition/subtraction, etc.
This comment is no longer relevant here. You can move it down to the sample function.
Attachment #825254 -
Attachment is obsolete: false
Reporter | ||
Updated•11 years ago
|
Attachment #825385 -
Flags: review? → review?(vladimir)
Comment on attachment 825385 [details] [diff] [review]
Part 6: Configure RGB/BGR and alpha/no alpha via defines, not uniforms, since that can be slow on some hardware.
See above comment, not sure what happened to bugzilla.
Attachment #825385 -
Flags: review?(vladimir) → review-
Attachment #825254 -
Attachment is obsolete: true
Reporter | ||
Comment 54•11 years ago
|
||
Please finish reviewing this. I will upload separate D2D9 and D2D11 fixes and get Bas to review them.
Attachment #825385 -
Attachment is obsolete: true
Attachment #825406 -
Flags: review?(vladimir)
Comment on attachment 825406 [details] [diff] [review]
Part 6: Configure RGB/BGR and alpha/no alpha via defines, not uniforms, since that can be slow on some hardware.
Review of attachment 825406 [details] [diff] [review]:
-----------------------------------------------------------------
I did review! Looks fine otherwise, though here's a few more comments from looking again. I'd still r+ despite this though, but please consider fixing these.
::: gfx/layers/opengl/CompositorOGL.cpp
@@ +72,5 @@
> +ShaderConfigOGL::SetRenderColor(bool aEnabled)
> +{
> + if (aEnabled)
> + mFeatures |= ENABLE_RENDER_COLOR;
> +}
IMO these should all either not take a boolean, or should handle "false" appropriately (clearing out the feature). I understand why they take booleans though, because the determination might be from a boolean expression... though writing
config.SetRenderColor(isColor == true);
is eh roughly the same as
if (isColor) SetRenderColor();
But it would seem odd to me to have
config.SetRenderColor(true);
config.SetRenderColor(false);
still leave me with ENABLE_RENDER_COLOR set.
@@ +415,5 @@
> if (!ctx) {
> ctx = mGLContext;
> }
>
> + mShaders.clear();
Why did this get renamed to mShaders? A Program is the actual final installable result; a Shader is just a component of it (e.g. you link two shaders together to make a Program).
Attachment #825406 -
Flags: review?(vladimir) → review+
Reporter | ||
Comment 56•11 years ago
|
||
Attachment #825499 -
Flags: review?(vladimir)
Reporter | ||
Comment 57•11 years ago
|
||
Attachment #825501 -
Flags: review?(vladimir)
Reporter | ||
Updated•11 years ago
|
Attachment #825499 -
Attachment description: Part 8: D3D9 patch → Part 9: D3D9 patch
Reporter | ||
Comment 58•11 years ago
|
||
There is a typo in the last patch. RGB and RGBA are switched around for D3D11. Fix that locally.
Comment on attachment 825499 [details] [diff] [review]
Part 9: D3D9 patch
Review of attachment 825499 [details] [diff] [review]:
-----------------------------------------------------------------
Looks straightforward enough.
Attachment #825499 -
Flags: review?(vladimir) → review+
Comment on attachment 825501 [details] [diff] [review]
Part 10: D3D11 patch
Review of attachment 825501 [details] [diff] [review]:
-----------------------------------------------------------------
::: gfx/layers/d3d11/CompositorD3D11.cpp
@@ +461,5 @@
> return;
> + case EFFECT_RGB:
> + mContext->PSSetShader((aFormat == FORMAT_B8G8R8A8 || aFormat == FORMAT_R8G8B8A8)
> + ? mAttachments->mRGBShader[aMaskType]
> + : mAttachments->mRGBAShader[aMaskType], nullptr, 0);
You already said you swapped these locally; but just calling them out here.
Attachment #825501 -
Flags: review?(vladimir) → review+
All looks good; please tryserver!
Reporter | ||
Comment 62•11 years ago
|
||
Attachment #825514 -
Flags: review+
Reporter | ||
Comment 63•11 years ago
|
||
Oh yeah. There shall be a lot of try-server-ing next :-/ Only tested on mac so far.
Reporter | ||
Comment 64•11 years ago
|
||
Reporter | ||
Comment 65•11 years ago
|
||
Reporter | ||
Comment 66•11 years ago
|
||
Missing precision statement for fragment shader on mobile and build problem for D3D11. Next try.
https://tbpl.mozilla.org/?tree=Try&rev=3a87e750e914
Reporter | ||
Comment 67•11 years ago
|
||
Try looks good. I will attach a new roll-up patch.
Reporter | ||
Comment 68•11 years ago
|
||
Attachment #825518 -
Attachment is obsolete: true
Attachment #825728 -
Flags: review+
Reporter | ||
Comment 69•11 years ago
|
||
Single patch to check in: https://bugzilla.mozilla.org/attachment.cgi?id=825728
Reporter | ||
Updated•11 years ago
|
Keywords: checkin-needed
Comment 70•11 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/f24ee0606ea6
Andreas, I'm happy landing patches for you, but can you please make sure they have the needed commit information in them? Makes life easier on my end :)
https://developer.mozilla.org/en-US/docs/Mercurial_FAQ#How_can_I_generate_a_patch_for_somebody_else_to_check-in_for_me.3F
Updated•11 years ago
|
Keywords: checkin-needed
Comment 71•11 years ago
|
||
(In reply to Andreas Gal :gal from comment #67)
> Try looks good. I will attach a new roll-up patch.
Unfortunately there were reftest failures on the Try push, and as such also now on inbound:
https://tbpl.mozilla.org/php/getParsedLog.php?id=29975149&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=29974611&tree=Mozilla-Inbound
B2G also crashes:
https://tbpl.mozilla.org/php/getParsedLog.php?id=29975645&tree=Mozilla-Inbound
So I've had to backout:
remote: https://hg.mozilla.org/integration/mozilla-inbound/rev/5bb07c1ae9f5
Comment 72•11 years ago
|
||
This also resulted in mochitest leaks on OS X, eg:
https://tbpl.mozilla.org/php/getParsedLog.php?id=29976529&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=29976642&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=29976570&tree=Mozilla-Inbound
(The try run was opt-only; the leak checks only run on debug builds)
Reporter | ||
Comment 73•11 years ago
|
||
New try run:
https://tbpl.mozilla.org/?tree=Try&rev=e9e3ec9c6a7d
Since shader programs are now stored in an array in the compositor which has a single context, I made the context pointer in the shaders weak to avoid a cycle. The context will be strongly held by the compositor until the programs are deleted.
Reporter | ||
Comment 74•11 years ago
|
||
Actually we were leaking shader programs, so I am deleting those instead comment 73 now. This might also fix the shutdown crash on B2G.
https://tbpl.mozilla.org/?tree=Try&rev=2037a8d02649
Reporter | ||
Comment 75•11 years ago
|
||
I am a bit speechless about the B2G crash. I might have to call in vendor help. I don't think I am causing that. I am probably just tickling something. The order of context destructions seems to have changed subtly. Lets see if nulling out the context helps.
https://tbpl.mozilla.org/?tree=Try&rev=86d240cfcb4a
Comment 76•11 years ago
|
||
I'll set up the emulator build, see if I get this locally.
Reporter | ||
Comment 77•11 years ago
|
||
Maybe we should destroy the surface first?
https://tbpl.mozilla.org/?tree=Try&rev=4456e1c96ac1
Reporter | ||
Comment 78•11 years ago
|
||
I think mSurface is invalid when we hand it to eglDestroySurface.
Reporter | ||
Comment 79•11 years ago
|
||
Alright, so I think whats wrong here is that a shader compilation fails for some odd reason and we never initialize mSurface right and we die trying to destroy it.
11:06:08 INFO - 11-06 19:03:56.067 45 144 D libEGL : loaded /system/lib/egl/libEGL_emulation.so
11:06:08 INFO - 11-06 19:03:56.067 45 144 D : HostConnection::get() New Host Connection established 0x45ae0350, tid 144
11:06:08 INFO - 11-06 19:03:56.077 45 144 D libEGL : loaded /system/lib/egl/libGLESv1_CM_emulation.so
11:06:08 INFO - 11-06 19:03:56.107 45 144 D libEGL : loaded /system/lib/egl/libGLESv2_emulation.so
11:06:08 INFO - 11-06 19:03:56.138 45 144 I HWComposer: Creating new instance
11:06:08 INFO - 11-06 19:03:56.138 45 144 E HWComposer: Failed to initialize hwc
11:06:08 INFO - 11-06 19:03:56.147 45 144 I Gecko : OpenGL version detected: 200
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : === SHADER COMPILATION FAILED ===
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : === Source:
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #define ENABLE_RENDER_COLOR
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : /* sUnifiedLayerFS */
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #ifdef GL_ES
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : precision lowp float;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #endif
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #ifdef ENABLE_RENDER_COLOR
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : uniform vec4 uRenderColor;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #else
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #ifdef GL_ES // for tiling, texcoord can be greater than the lowfp range
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : varying mediump vec2 vTexCoord;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #else
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : varying vec2 vTexCoord;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #endif
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #ifdef ENABLE_OPACITY
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : uniform float uLayerOpacity;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #endif
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #endif
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #ifdef ENABLE_TEXTURE_RECT
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #extension GL_ARB_texture_rectangle : require
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #define sampler2D sampler2DRect
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #define texture2D texture2DRect
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #endif
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #ifdef ENABLE_TEXTURE_EXTERNAL
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #extension GL_OES_EGL_image_external : require
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #define sampler2D samplerExternalOES
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #endif
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #ifdef ENABLE_TEXTURE_YCBCR
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : uniform sampler2D uYTexture;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : uniform sampler2D uCbTexture;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : uniform sampler2D uCrTexture;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #else
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #ifdef ENABLE_TEXTURE_COMPONENT_ALPHA
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : uniform sampler2D uBlackTexture;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : uniform sampler2D uWhiteTexture;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : uniform bool uTexturePass2;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #else
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : uniform sampler2D uTexture;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #endif
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #endif
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : #ifdef ENABLE_BLUR
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : uniform bool uBlurAlpha;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : uniform vec2 uBlurRadius;
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : uniform vec2
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : === Log:
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : xdY���
11:06:08 INFO - 11-06 19:03:56.187 45 144 I Gecko : ============
Reporter | ||
Comment 80•11 years ago
|
||
Removed BLUR and COLOR_MATRIX to see whether that changes the behavior here.
https://tbpl.mozilla.org/?tree=Try&rev=63ed92ec9ef3
Reporter | ||
Comment 81•11 years ago
|
||
Forgot to rebuild the shader file include
https://tbpl.mozilla.org/?tree=Try&rev=250cf4debc42
Reporter | ||
Comment 82•11 years ago
|
||
Added a couple more printfs to figure out what the hell is going on. The shader program looks incomplete in the log.
https://tbpl.mozilla.org/?tree=Try&rev=8d68e05abbc5
Reporter | ||
Comment 83•11 years ago
|
||
Looks like gonk printf can't print large strings? Trying fputs.
https://tbpl.mozilla.org/?tree=Try&rev=67e733b2578c
Reporter | ||
Comment 84•11 years ago
|
||
This avoids using any defines and just generates the shader program on the fly:
https://tbpl.mozilla.org/?tree=Try&rev=9dfc61c54cc2
This is really ugly but its not worth trying to do this better until we can dispose of the old layers code.
Reporter | ||
Comment 85•11 years ago
|
||
There is a bug here:
<!DOCTYPE HTML>
<html>
<body style="background:rgb(0,0,0);">
<div style="position:fixed;left:0;top:0;width:200px;height:200px;background:rgba(255,255,255,0.5);"></div>
</body>
</html>
This box gets rendered all white (opacity is disregarded). Looking into that.
Reporter | ||
Comment 86•11 years ago
|
||
This fixed the android emulator bug. Yay for **** drivers.
Now still have to figure out comment 85.
Reporter | ||
Comment 87•11 years ago
|
||
For color shaders I didn't pre-multiply the color if layer opacity == 1.0. That fixed the test case above.
Reporter | ||
Comment 88•11 years ago
|
||
This should come back green: https://tbpl.mozilla.org/?tree=Try&rev=a426596dc9d0
Reporter | ||
Comment 89•11 years ago
|
||
Attachment #825728 -
Attachment is obsolete: true
Reporter | ||
Comment 90•11 years ago
|
||
Attachment #829081 -
Attachment is obsolete: true
Attachment #829088 -
Flags: review+
Comment 91•11 years ago
|
||
(In reply to Andreas Gal :gal from comment #88)
> This should come back green:
> https://tbpl.mozilla.org/?tree=Try&rev=a426596dc9d0
I ran with the "inbound" patch locally on OS X 10.8 and while I had some failures, they didn't match the try failures.
Reporter | ||
Comment 92•11 years ago
|
||
Some of the failures we might have picked up from inbound.
Reporter | ||
Comment 93•11 years ago
|
||
Rebased again on top of inbound, and pushed to try twice:
without the patch: https://tbpl.mozilla.org/?tree=Try&rev=e50c19810724
with the patch: https://tbpl.mozilla.org/?tree=Try&rev=3db04f4e1e0b
Reporter | ||
Comment 94•11 years ago
|
||
There are definitely failures still that are not picked up from inbound. Looks like alpha or colors differ here:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAPoCAYAAAAmy5qxAAAVl0lEQVR4nO3OMQGAAAwEsZpHN7jghs+QPXfPvQAAAL/IAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjjwAAADsyAMAAMCOPAAAAOzIAwAAwI48AAAA7MgDAADAjA8Do2mQ1wVuQQAAAABJRU5ErkJggg==
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAPoCAYAAAAmy5qxAAAVmUlEQVR4nO3OMQGAAAwEsfpXgUgE4IIbPkP23D33AgAA/CIPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAA78gAAALAjDwAAADvyAAAAsCMPAAAAO/IAAACwIw8AAAAzPt0xxP2+iIWPAAAAAElFTkSuQmCC
Reporter | ||
Comment 95•11 years ago
|
||
Comment on attachment 829088 [details] [diff] [review]
Patch for inbound.
Review of attachment 829088 [details] [diff] [review]:
-----------------------------------------------------------------
::: gfx/layers/opengl/CompositorOGL.cpp
@@ +1231,5 @@
> + }
> + }
> + fs << "void main() {" << endl;
> + if (aConfig.mFeatures & ENABLE_RENDER_COLOR) {
> + fs << " vec4 color = vec4(uRenderColor.rgb, 0.8);" << endl;
I forgot this debug hunk in the patch and it adjusted the alpha by 0.8. That probably caused the failures.
Reporter | ||
Comment 96•11 years ago
|
||
Reporter | ||
Comment 97•11 years ago
|
||
Looks much better but there is something wrong with masking:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAPoCAYAAAAmy5qxAAASjklEQVR4nO3ZQQ3AMAwEweAxf34piEbbSJ1BcA9/Vl4bAAAgsr4eAAAA/IcAAQAAMgIEAADICBAAACAjQAAAgIwAAQAAMgIEAADICBAAACAjQAAAgIwAAQAAMgIEAADICBAAACAjQAAAgIwAAQAAMgIEAADICBAAACAjQAAAgMzrAJk9J3bAddw2AMB5PiAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAABkBAgAAZAQIAACQESAAAEBGgAAAAJnXATJ7TuyA67htAIDzfEAAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAIDMAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC41QMc2VAEUSWWqwAAAABJRU5ErkJggg==
data:image/png;base64,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AKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoOYaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBZ9R+9/MoMAN+LbQAAAABJRU5ErkJggg==
Reporter | ||
Comment 98•11 years ago
|
||
Reduced test case:
<!DOCTYPE HTML>
<title>Test for clipping of border-radius</title>
<style>
#contain {
width: 200px;
height: 100px;
position: relative;
}
#contain > div > canvas {
border-radius: 20px / 40px;
}
</style>
<div id="contain">
<div><canvas id="canvas" height="100" width="200"></canvas></div>
<script>
var canvas = document.getElementById("canvas");
var cx = canvas.getContext("2d");
cx.fillStyle="lime";
cx.fillRect(0, 0, 200, 100);
</script>
</div>
Comment 99•11 years ago
|
||
CJ, this needs a bit more work, do you think Morris could figure out the remaining issues and see if we can land this?
Flags: needinfo?(cku)
Comment 100•11 years ago
|
||
Look through comments, reftest failures/ leak and B2G run time crash.
Let's me discuss with Morris tomorrow.
Keep needinfo to myself and needinfo to Morris as well.
Flags: needinfo?(mtseng)
Assignee | ||
Comment 101•11 years ago
|
||
I found uMaskTexture and uMaskQuadTransform are not bind to profile. I also rebase patch to latest m-c. Right now the reftest is still fail. I'm trying to find out why it still fail.
Attachment #829088 -
Attachment is obsolete: true
Flags: needinfo?(mtseng)
Assignee | ||
Comment 102•11 years ago
|
||
In the color layer case. I found shader program output alpha with 0.8 cause many reftest failed. Modified it to 1.0.
Here is try push: https://tbpl.mozilla.org/?tree=Try&rev=feddf55b9be7
Some webgl reftest still failed. I'll investigate this later.
Andreas, I can handle this bug, Could you re-assign it to me? Thanks.
Attachment #8357036 -
Attachment is obsolete: true
Flags: needinfo?(gal)
Comment 103•11 years ago
|
||
After reading patch and discuss with Morris, patches are are kind of shader code generator. I think Morris can handle it. Clear needinfo to myself
Flags: needinfo?(cku)
Updated•11 years ago
|
Assignee: gal → mtseng
Flags: needinfo?(gal)
Reporter | ||
Comment 104•11 years ago
|
||
You can always steal any bug from me at any time for any reason or no reason at all. Thanks Morris!
Assignee | ||
Comment 105•11 years ago
|
||
webgl reftest failed because TexCoordMultiplier didn't handle correctly.
And also some reftest error on Android because some precision setting on the GLES is incorrect.
After those two fix. There are still 2 reftest failures on Android 4.0.
Here is try push: https://tbpl.mozilla.org/?tree=Try&rev=5ac51123837a
Attachment #8357681 -
Attachment is obsolete: true
Assignee | ||
Comment 106•11 years ago
|
||
TexCoordMultiplier is used by WebGL case. WebGL use extension "TextureRect". TextureRect use texture coordinate from 0 to texture size instead of 0 to 1. So we need send texture size to shader to adjust texture coordinate. In the origin patch we pre-multiply TexCoordMultiplier to TextureTransform but TextureTransform will reset by BindAndDrawQuadWithTextureRect function. So we still need a separate TexCoordMultiplier variable.
The precision setting mentioned above is this shader code "precision lowp float;" should be "precision mediump float;"
Assignee | ||
Comment 107•11 years ago
|
||
This patch should pass all test on tryserver.
try push: https://tbpl.mozilla.org/?tree=Try&rev=77970e1d0ec6
Attachment #8362489 -
Attachment is obsolete: true
Attachment #8374647 -
Flags: review?(gal)
Reporter | ||
Comment 108•11 years ago
|
||
Comment on attachment 8374647 [details] [diff] [review]
rollup.patch
Review of attachment 8374647 [details] [diff] [review]:
-----------------------------------------------------------------
Thanks for fixing this! Please commit under your own name. You did the hard work here.
::: gfx/layers/opengl/OGLShaderProgram.h
@@ +406,5 @@
> SetUniform(KnownUniform::TexCoordMultiplier, 2, f);
> }
>
> + // Set whether we want the component alpha shader to return the color
> + // vevtor (pass 1, false) or the alpha vector (pass2, true). With support
vector
Attachment #8374647 -
Flags: review?(gal) → review+
Assignee | ||
Comment 109•11 years ago
|
||
Update to address comment.
try: https://tbpl.mozilla.org/?tree=Try&rev=edf8f120482c
Attachment #8374647 -
Attachment is obsolete: true
Assignee | ||
Updated•11 years ago
|
Keywords: checkin-needed
Comment 110•11 years ago
|
||
Keywords: checkin-needed
Comment 111•11 years ago
|
||
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla30
You need to log in
before you can comment on or make changes to this bug.
Description
•