Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

webgl: Implement toDataURL() #19147

Closed
anholt opened this issue Nov 8, 2017 · 3 comments
Closed

webgl: Implement toDataURL() #19147

anholt opened this issue Nov 8, 2017 · 3 comments
Assignees

Comments

@anholt
Copy link
Contributor

@anholt anholt commented Nov 8, 2017

I'm starting on this, as it's the source of a lot of errors in the webgl conformance tests. Open questions so far:

  • Can I safely assume that the canvas's Width() and Height() match the offscreen_gl_context's FBO width and height?
  • What do I need to do as the equivalent of 2d canvas's origin handling?

This is part of #10209

@jdm jdm added the A-content/webgl label Nov 8, 2017
@jdm
Copy link
Member

@jdm jdm commented Nov 8, 2017

With respect to the origin handling, https://www.khronos.org/registry/webgl/specs/latest/1.0/#4.2 seems like the relevant section here. The note that "these rules imply that the origin-clean flag for a canvas rendered using WebGL will never be set to false" seems particularly interesting.

@anholt
Copy link
Contributor Author

@anholt anholt commented Nov 15, 2017

Added a citation of that spec text.

@nox nox self-assigned this Mar 23, 2018
@nox
Copy link
Member

@nox nox commented Mar 23, 2018

I'm looking into this today, apparently all the /_mozilla/webgl/conformance-1.0.3/conformance/glsl/ tests error after 20 seconds because this isn't implemented.

nox added a commit that referenced this issue Mar 23, 2018
nox added a commit that referenced this issue Mar 23, 2018
bors-servo added a commit that referenced this issue Mar 23, 2018
Implement HTMLCanvasElement.toDataURL for WebGL canvas (fixes #19147)

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20400)
<!-- Reviewable:end -->
nox added a commit that referenced this issue Mar 23, 2018
bors-servo added a commit that referenced this issue Mar 23, 2018
Implement HTMLCanvasElement.toDataURL for WebGL canvas (fixes #19147)

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20400)
<!-- Reviewable:end -->
bors-servo added a commit that referenced this issue Mar 23, 2018
Implement HTMLCanvasElement.toDataURL for WebGL canvas (fixes #19147)

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20400)
<!-- Reviewable:end -->
bors-servo added a commit that referenced this issue Mar 24, 2018
Implement HTMLCanvasElement.toDataURL for WebGL canvas (fixes #19147)

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20400)
<!-- Reviewable:end -->
bors-servo added a commit that referenced this issue Mar 24, 2018
Implement HTMLCanvasElement.toDataURL for WebGL canvas (fixes #19147)

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20400)
<!-- Reviewable:end -->
bors-servo added a commit that referenced this issue Mar 24, 2018
Implement HTMLCanvasElement.toDataURL for WebGL canvas (fixes #19147)

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20400)
<!-- Reviewable:end -->
pmocher pushed a commit to Brody-Eastwood/servo that referenced this issue Mar 30, 2018
# This is the 1st commit message:

resolved merge conflict

# This is the commit message servo#2:

style(capture_webrender): use eprintln for error output

# This is the commit message servo#3:

Fix some more WebGL methods

# This is the commit message servo#4:

Implement OES_element_index_uint (fixes servo#20384)

# This is the commit message servo#5:

Use mozjs 0.4

# This is the commit message servo#6:

Add safe `handle` function for rooted heap values

# This is the commit message servo#7:

Use unsafe Heap::handle wherever needed

# This is the commit message servo#8:

Change WebGL function signatures accepting typed arrays

# This is the commit message servo#9:

Adapt function bodies for usage with typed array args

# This is the commit message servo#10:

Adapt uniform[fv] and similar to accept typed array args

# This is the commit message servo#11:

Appease test-tidy

# This is the commit message servo#12:

Fix sanity check in vertex attrib

# This is the commit message servo#13:

Fix indentation

# This is the commit message servo#14:

Unify argument auto rooting in codegen

# This is the commit message servo#15:

Add codegen test for function overloads taking typed array args

# This is the commit message servo#16:

Use safe to_vec() for typed arrays in WebGL bindings

# This is the commit message servo#17:

Bug 1448138 - Rename string DataFlags::SHARED to REFCOUNTED to make it clearer to those reading the code.  (Servo changes.)  r=erahm

# This is the commit message servo#18:

Used the zip function to iterate over both vectors simultaneously instead of an
index variable and unwrapping the result.

# This is the commit message servo#19:

Implement HTMLCanvasElement.toDataURL for WebGL canvas (fixes servo#19147)

# This is the commit message servo#20:

Update web-platform-tests to revision d04a8fc02b85bd32799691759c8c05ead07cd939

# This is the commit message servo#21:

Implement missing checks in WebGLRenderingContext::GetBufferParameter

# This is the commit message servo#22:

Implement WebGLRenderingContextBase.getAttachedShaders

# This is the commit message servo#23:

Implement missing WebGLShader checks

Methods compileShader and getShaderParameter should emit an error when
the shader has been deleted.

# This is the commit message servo#24:

Add constructors for typed arrays in DOMMatrix and DOMMatrixReadOnly

# This is the commit message servo#25:

feat(webidl): expose arraybuffer overload in body idl

# This is the commit message servo#26:

feat(consume_body): implement consume_body accepts arraybuffer

# This is the commit message servo#27:

refactor(consume_body): json stored in roottraceablebox

# This is the commit message servo#28:

test(wpt): update fetch test metadata

# This is the commit message servo#29:

Implement gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE)

# This is the commit message servo#30:

TextDecoder's Decode now receives a BufferSource as input

# This is the commit message servo#31:

Update mozjs.

# This is the commit message servo#32:

Switches WriteValue to use BufferSource

# This is the commit message servo#33:

Switches characteristic to use BufferSource

# This is the commit message servo#34:

Updates Bluetooth type to use BufferSource

# This is the commit message servo#35:

Websockets send typed arrays now

# This is the commit message servo#36:

Dedupe lazy_static

🎉 🎉 🎉

# This is the commit message servo#37:

Statically allocate static atoms.

# This is the commit message servo#38:

Update web-platform-tests to revision d04a8fc02b85bd32799691759c8c05ead07cd939

# This is the commit message servo#39:

refactor(websocket): do not borrow sender anymore
Brody-Eastwood added a commit to Brody-Eastwood/servo that referenced this issue Mar 30, 2018
Squashed commit:

[263660b] Converted tabs to spaces

[9e809f6] Removed files that shouldn't be in the repo.

[20fe052] Use ByteBuf for the canvas messages

The type Vec<u8> is super unefficient to work with in Serde if all you want
to represent is a simple blob.

[3b9d272] refactor(websocket): do not borrow sender anymore

[4885da6] removed 'unused import' build warning

[e3711e2] Update web-platform-tests to revision d04a8fc02b85bd32799691759c8c05ead07cd939

[aafcefd] finished associating CanvasId to layout

[3fdc5d5] Websockets send typed arrays now

[36e8cdd] setting up canvas id in layout

[45ee9b4] fix time measure

[7783b1a] Updates Bluetooth type to use BufferSource

[3adbd69] Switches characteristic to use BufferSource

[d361227] Switches WriteValue to use BufferSource

[1171f75] timed test to drawImage from one canvas to another

[bdef1e3] Update mozjs.

[00238ce] TextDecoder's Decode now receives a BufferSource as input

[dba43fd] test(wpt): update fetch test metadata

[79ffa61] Implement gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE)

[ffeca22] Implement missing WebGLShader checks

Methods compileShader and getShaderParameter should emit an error when
the shader has been deleted.

[cd29bc7] Implement WebGLRenderingContextBase.getAttachedShaders

[a976440] Implement missing checks in WebGLRenderingContext::GetBufferParameter

[7a0566a] Update web-platform-tests to revision d04a8fc02b85bd32799691759c8c05ead07cd939

[7ef9b26] Add constructors for typed arrays in DOMMatrix and DOMMatrixReadOnly

[87801ae] Use safe to_vec() for typed arrays in WebGL bindings

[b5be714] Unify argument auto rooting in codegen

[f1d916b] Fix indentation

[81a7a34] Fix sanity check in vertex attrib

[70b4428] Appease test-tidy

[32b2794] Adapt uniform[fv] and similar to accept typed array args

[cb6cae4] Adapt function bodies for usage with typed array args

[1e031cf] Change WebGL function signatures accepting typed arrays

[f1137de] Implement HTMLCanvasElement.toDataURL for WebGL canvas (fixes servo#19147)

[3b2b261] Use mozjs 0.4

[421787d] style(capture_webrender): use eprintln for error output

[fb6b041] refactor(build): generate revision into out_dir

[ba0b578] refactor(build): generate revision via build.rs

[3e4a00f] Implement OES_element_index_uint (fixes servo#20384)

[8e3e5ba] Fix some more WebGL methods

[1c24c5c] Initial steps finally builds!

[fc6cba0] Implements profiler for blocked recv

[a2aeb0c] Implement gl.getParameter(gl.VIEWPORT)

[8034dd2] Implement gl.getParameter(gl.CURRENT_PROGRAM)

[2ca56bf] Make some WebGL parameters non-optional (fixes servo#8753)

Those parameters aren't optional in the current spec.

The test element-array-buffer-delete-recreate.html now fails because we don't
actually implement gl.getParameter(gl.CURRENT_PROGRAM).

[6aaa41c] style: Update bindings.

Signed-off-by: Emilio Cobos ?lvarez <emilio@crisal.io>

[3824dee] style: Rename StyleContext to ComputedStyle.

Bug: 1447483
Reviewed-by: jwatt
MozReview-Commit-ID: KATZ6DkmpVY
Signed-off-by: Emilio Cobos ?lvarez <emilio@crisal.io>

[b4110f8] Implement WebGL getFramebufferAttachmentParameter API

[7a57aff] loop until we exhausted all the servo events

[af056a5] Use the --device-pixel-ratio in opt instead of /components/servo/

[2281fd6] remove useless pref

[3fe5092] split window code and browser code in two different files

[da28857] move key code into dedicated file

[c695b91] forward EmbedderMsg to embedder

[4f31467] Reduce the number of calls to the embedder by grouping the screen and window coordinates into one structure

[37005b0] Update web-platform-tests to revision 26e8a76d7fbea0721468e791a325444ac9939a4f

[639d640] Progress on initial steps

[c60eb09] fix(keyevent): do not emit default ignorable codepoint

[0722c7c] Second shot at initial steps

[f504022] initial shot at initial steps

[0ee53a7] feat(capture_webrender): write webrender revision into text

[82b63c7] build(mach): generate webrender revision via cargo lockfile

[7e9b877] introduce layout query timestamp

[510eff9] extract querymsg from ReflowGoal
Brody-Eastwood added a commit to Brody-Eastwood/servo that referenced this issue Mar 30, 2018
Squashed commit:

[263660b] Converted tabs to spaces

[9e809f6] Removed files that shouldn't be in the repo.

[20fe052] Use ByteBuf for the canvas messages

The type Vec<u8> is super unefficient to work with in Serde if all you want
to represent is a simple blob.

[3b9d272] refactor(websocket): do not borrow sender anymore

[4885da6] removed 'unused import' build warning

[e3711e2] Update web-platform-tests to revision d04a8fc02b85bd32799691759c8c05ead07cd939

[aafcefd] finished associating CanvasId to layout

[3fdc5d5] Websockets send typed arrays now

[36e8cdd] setting up canvas id in layout

[45ee9b4] fix time measure

[7783b1a] Updates Bluetooth type to use BufferSource

[3adbd69] Switches characteristic to use BufferSource

[d361227] Switches WriteValue to use BufferSource

[1171f75] timed test to drawImage from one canvas to another

[bdef1e3] Update mozjs.

[00238ce] TextDecoder's Decode now receives a BufferSource as input

[dba43fd] test(wpt): update fetch test metadata

[79ffa61] Implement gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE)

[ffeca22] Implement missing WebGLShader checks

Methods compileShader and getShaderParameter should emit an error when
the shader has been deleted.

[cd29bc7] Implement WebGLRenderingContextBase.getAttachedShaders

[a976440] Implement missing checks in WebGLRenderingContext::GetBufferParameter

[7a0566a] Update web-platform-tests to revision d04a8fc02b85bd32799691759c8c05ead07cd939

[7ef9b26] Add constructors for typed arrays in DOMMatrix and DOMMatrixReadOnly

[87801ae] Use safe to_vec() for typed arrays in WebGL bindings

[b5be714] Unify argument auto rooting in codegen

[f1d916b] Fix indentation

[81a7a34] Fix sanity check in vertex attrib

[70b4428] Appease test-tidy

[32b2794] Adapt uniform[fv] and similar to accept typed array args

[cb6cae4] Adapt function bodies for usage with typed array args

[1e031cf] Change WebGL function signatures accepting typed arrays

[f1137de] Implement HTMLCanvasElement.toDataURL for WebGL canvas (fixes servo#19147)

[3b2b261] Use mozjs 0.4

[421787d] style(capture_webrender): use eprintln for error output

[fb6b041] refactor(build): generate revision into out_dir

[ba0b578] refactor(build): generate revision via build.rs

[3e4a00f] Implement OES_element_index_uint (fixes servo#20384)

[8e3e5ba] Fix some more WebGL methods

[1c24c5c] Initial steps finally builds!

[fc6cba0] Implements profiler for blocked recv

[a2aeb0c] Implement gl.getParameter(gl.VIEWPORT)

[8034dd2] Implement gl.getParameter(gl.CURRENT_PROGRAM)

[2ca56bf] Make some WebGL parameters non-optional (fixes servo#8753)

Those parameters aren't optional in the current spec.

The test element-array-buffer-delete-recreate.html now fails because we don't
actually implement gl.getParameter(gl.CURRENT_PROGRAM).

[6aaa41c] style: Update bindings.

Signed-off-by: Emilio Cobos ?lvarez <emilio@crisal.io>

[3824dee] style: Rename StyleContext to ComputedStyle.

Bug: 1447483
Reviewed-by: jwatt
MozReview-Commit-ID: KATZ6DkmpVY
Signed-off-by: Emilio Cobos ?lvarez <emilio@crisal.io>

[b4110f8] Implement WebGL getFramebufferAttachmentParameter API

[7a57aff] loop until we exhausted all the servo events

[af056a5] Use the --device-pixel-ratio in opt instead of /components/servo/

[2281fd6] remove useless pref

[3fe5092] split window code and browser code in two different files

[da28857] move key code into dedicated file

[c695b91] forward EmbedderMsg to embedder

[4f31467] Reduce the number of calls to the embedder by grouping the screen and window coordinates into one structure

[37005b0] Update web-platform-tests to revision 26e8a76d7fbea0721468e791a325444ac9939a4f

[639d640] Progress on initial steps

[c60eb09] fix(keyevent): do not emit default ignorable codepoint

[0722c7c] Second shot at initial steps

[f504022] initial shot at initial steps

[0ee53a7] feat(capture_webrender): write webrender revision into text

[82b63c7] build(mach): generate webrender revision via cargo lockfile

[7e9b877] introduce layout query timestamp

[510eff9] extract querymsg from ReflowGoal
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants
You can’t perform that action at this time.