aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
Commit message (Collapse)AuthorAgeFilesLines
...
* merge from masterrohan.prinja2015-11-031-4/+3
|\
| * Removed JS::root Fixes #8251nxnfufunezn2015-10-311-4/+3
| |
* | more refactoringrohan.prinja2015-10-301-2/+2
| |
* | move Castable into dom::bindings::inheritancerohan.prinja2015-10-301-1/+2
|/
* remove get_rooted() and replace all references to it with references to get()rohan.prinja2015-10-291-2/+2
|
* Make unrooted_must_root a bit more aggressive.Eli Friedman2015-10-231-0/+1
| | | | | | | | | Basically, instead of trying to check for specific kinds of statements, just check the types of all local variables. Also included are some commented-out proposals for some slightly more aggressive lints which might be useful (but trigger a little too frequently at the moment).
* Clean up the cast callsAnthony Ramine2015-10-211-5/+2
|
* Introduce trait CastableAnthony Ramine2015-10-211-10/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This trait is used to hold onto the downcast and upcast functions of all castable IDL interfaces. A castable IDL interface is one which either derives from or is derived by other interfaces. The deriving relation is represented by implementations of marker trait DerivedFrom<T: Castable> generated in InheritTypes. /^[ ]*use dom::bindings::codegen::InheritTypes::.*(Base|Cast|Derived)/ { /::[a-zA-Z]+(Base|Cast|Derived);/d s/([{ ])[a-zA-Z]+(Base|Cast|Derived), /\1/g s/([{ ])[a-zA-Z]+(Base|Cast|Derived), /\1/g s/, [a-zA-Z]+(Base|Cast|Derived)([},])/\2/g s/, [a-zA-Z]+(Base|Cast|Derived)([},])/\2/g /\{([a-zA-Z]+(Base|Cast|Derived))?\};$/d s/\{([a-zA-Z_]+)\};$/\1;/ } s/([a-zA-Z]+)Cast::from_ref\(\&?\**([a-zA-Z_]+)(\.r\(\))?\)/\2.upcast::<\1>()/g s/([a-zA-Z]+)Cast::from_ref\(\&?\**([a-zA-Z_]+)(\.[a-zA-Z_]+\(\))?\)/\2\3.upcast::<\1>()/g s/\(([a-zA-Z]+)Cast::from_ref\)/\(Castable::upcast::<\1>\)/g s/([a-zA-Z]+)Cast::from_root/Root::upcast::<\1>/g s/([a-zA-Z]+)Cast::from_layout_js\(\&([a-zA-Z_.]+)\)/\2.upcast::<\1>()/g s/([a-zA-Z]+)Cast::to_ref\(\&?\**([a-zA-Z_]+)(\.r\(\))?\)/\2.downcast::<\1>()/g s/([a-zA-Z]+)Cast::to_ref\(\&?\**([a-zA-Z_]+)(\.[a-zA-Z_]+\(\))?\)/\2\3.downcast::<\1>()/g s/\(([a-zA-Z]+)Cast::to_ref\)/\(Castable::downcast::<\1>\)/g s/([a-zA-Z]+)Cast::to_root/Root::downcast::<\1>/g s/([a-zA-Z]+)Cast::to_layout_js\(&?([a-zA-Z_.]+(\(\))?)\)/\2.downcast::<\1>()/g s/\.is_document\(\)/.is::<Document>()/g s/\.is_htmlanchorelement\(\)/.is::<HTMLAnchorElement>()/g s/\.is_htmlappletelement\(\)/.is::<HTMLAppletElement>()/g s/\.is_htmlareaelement\(\)/.is::<HTMLAreaElement>()/g s/\.is_htmlbodyelement\(\)/.is::<HTMLBodyElement>()/g s/\.is_htmlembedelement\(\)/.is::<HTMLEmbedElement>()/g s/\.is_htmlfieldsetelement\(\)/.is::<HTMLFieldSetElement>()/g s/\.is_htmlformelement\(\)/.is::<HTMLFormElement>()/g s/\.is_htmlframesetelement\(\)/.is::<HTMLFrameSetElement>()/g s/\.is_htmlhtmlelement\(\)/.is::<HTMLHtmlElement>()/g s/\.is_htmlimageelement\(\)/.is::<HTMLImageElement>()/g s/\.is_htmllegendelement\(\)/.is::<HTMLLegendElement>()/g s/\.is_htmloptgroupelement\(\)/.is::<HTMLOptGroupElement>()/g s/\.is_htmloptionelement\(\)/.is::<HTMLOptionElement>()/g s/\.is_htmlscriptelement\(\)/.is::<HTMLScriptElement>()/g s/\.is_htmltabledatacellelement\(\)/.is::<HTMLTableDataCellElement>()/g s/\.is_htmltableheadercellelement\(\)/.is::<HTMLTableHeaderCellElement>()/g s/\.is_htmltablerowelement\(\)/.is::<HTMLTableRowElement>()/g s/\.is_htmltablesectionelement\(\)/.is::<HTMLTableSectionElement>()/g s/\.is_htmltitleelement\(\)/.is::<HTMLTitleElement>()/g
* Make get() and set() on MutNullableHeap use the correct types.Eli Friedman2015-10-151-1/+1
| | | | | | get() must always return a rooted value, because we have no way of ensuring the value won't be invalidated. set() takes an &T because it's convenient; there isn't any need to expose JS<T>.
* Don't return a JS<T> from bound_texture_for/Eli Friedman2015-10-151-2/+2
| | | | It's never correct to return a JS<T>. Maybe the lint should catch this?
* Stop implementing Copy for JS<T>.Eli Friedman2015-10-151-5/+5
| | | | | A copy of a JS<T> doesn't have the rooting properties of the original, so it makes no sense for it to implement Copy.
* Update script to work with lint changesManish Goregaokar2015-10-161-5/+3
|
* webgl: Implement WebGLContextEvent and use it on context creation errorEmilio Cobos Álvarez2015-10-081-1/+12
| | | | spec: https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15
* webgl: texImage2D with a canvas argumentEmilio Cobos Álvarez2015-09-251-22/+30
|
* sorted the extern crate, mod & use declarationsRavi Shankar2015-09-241-8/+6
|
* Fix reported test-tidy errors for unmerged import blocksBrandon Fairchild2015-09-191-5/+1
| | | | This merges import blocks that were reported by tidy as unmerged.
* Remove needless returnsManish Goregaokar2015-09-041-2/+2
|
* Make the traits for the IDL interfaces take &selfAnthony Ramine2015-08-271-65/+65
|
* Remove helper traitsAnthony Ramine2015-08-271-17/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that JSRef<T> is gone, there is no need to have helper traits. On components/script/*.rs: # Remove imports. /^ *use dom::[a-z]+::\{.*Helpers/ { s/\{(Raw[^L]|[^L][^a])[a-zA-Z]+Helpers, /\{/ s/, (Raw[^L]|[^L][^a])[a-zA-Z]+Helpers([,}])/\2/g s/\{([a-zA-Z]+)\}/\1/ /\{\}/d s/::self;$/;/ } /^ *use dom::[a-z]+::\{?(Raw[^L]|[^L][^a])[a-zA-Z]+Helpers\}?;$/d On components/script/dom/*.rs: # Ignore layout things. /^(pub )?(impl|trait).*Layout.* \{/,/^}$/ { P; D; } # Delete helpers traits. /^(pub )?trait ([^L][^ ]|L[^a])[^ ]+Helpers(<'a>)? \{$/,/^\}$/D # Patch private helpers. /^impl.*Private.*Helpers/,/^\}$/ { s/^impl<'a> Private([^L][^ ]|L[^a])[^ ]+Helpers(<'a>)? for &'a ([^ ]+) \{$/impl \3 {/ /^ *(unsafe )?fn .*\(self.*[<&]'a/ { s/&'a /\&/g s/<'a, /</g } /^ *(unsafe )?fn /s/\(self([,)])/\(\&self\1/ } # Patch public helpers. /^impl.*Helpers/,/^\}$/ { s/^impl(<'a>)? ([^L][^ ]|L[^a])[^ ]+Helpers(<'a>)? for (&'a )?([^ ]+) \{$/impl \5 {/ /^ *(unsafe )?fn .*\(self.*[<&]'a/ { s/&'a /\&/g s/<'a, /</g } /^ *(unsafe )?fn .*\(&?self[,)]/s/(unsafe )?fn/pub &/ /^ *pub (unsafe )?fn /s/\(self([,)])/\(\&self\1/ } The few error cases were then fixed by hand.
* make dom_struct derive HeapSizeOf,João Oliveira2015-08-271-1/+0
| | | | closes #7357
* Auto merge of #7360 - wilmoz:ErgonomicSignature, r=Ms2gerbors-servo2015-08-261-5/+8
|\ | | | | | | | | | | | | | | | | | | Make handle_potential_webgl_error more ergonomic https://github.com/servo/servo/issues/7358 <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7360) <!-- Reviewable:end -->
| * Make handle_potential_webgl_error more ergonomicwilmoz2015-08-251-5/+8
| |
* | Forbid multiline importswilmoz2015-08-251-5/+4
|/
* webgl: Implement multiple calls and improve error detectionecoal952015-08-251-14/+398
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit implements WebGL's: * cullFace * frontFace * enable * disable * depthMask * colorMask * clearDepth * clearStencil * depthFunc * depthRange * hint * lineWidth * pixelStorei * polygonOffset * texParameteri * texParameterf * texImage2D (partially) It inlines a lot of OpenGL calls to keep the file `components/canvas/webgl_paint_task.rs` as small as possible while keeping readability. It also improves error detection on previous calls, and sets node damage on the canvas in the drawing calls. It adds a `TexImage2D` reftest, even though it's not enabled because: * WebGL paints the image when it loads (asynchronously), so the reftest doesn't wait for it and it finishes early * If we change the source for the base64 src of the image it works as expected in non-headless mode, but the test harness locks
* sort all usesJohann Tuffe2015-08-201-4/+4
|
* Cleanup WebGLRenderingContext, Websocker, WorkerGlobalScopeManish Goregaokar2015-08-181-8/+6
|
* Measure heap memory usage for more types. Fixes #6951Bogdan Cuza2015-08-131-0/+2
|
* Auto merge of #6812 - ecoal95:webgl-fail, r=jdmbors-servo2015-07-291-9/+12
|\ | | | | | | | | | | | | | | | | | | webgl: Make context creation fallible. Fixes #6806 <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6812) <!-- Reviewable:end -->
| * webgl: Make context creation fallible. Fixes #6806ecoal952015-07-281-9/+12
| |
* | Add spec linksBogdan Cuza2015-07-281-3/+3
|/
* script: Make most of 2D canvas and WebGL run over IPC.Patrick Walton2015-07-251-40/+78
| | | | | | To actually make the multiprocess communication work, we'll need to reroute the task creation to the pipeline or the compositor. But this works as a first step.
* address review commentsecoal952015-07-061-16/+18
|
* webgl: implement getErrorecoal952015-07-061-3/+23
|
* webgl: Make bind* calls more spec-compliantecoal952015-07-061-10/+24
|
* webgl: Refactor implementation to move logic inside the DOM interfacesecoal952015-07-061-84/+85
| | | | | | | | | | This improves the encapsulation and consistency in our WebGL implementation. Also allows to implement new methods such as `getShaderSource()`. It will also allow us to use `delete()` in the destructors of them (note that we will want to keep track of them from the context).
* Stop using Vec::from_raw_buf.Ms2ger2015-06-261-8/+7
|
* Upgrade to SM 39Michael Wu2015-06-191-46/+48
|
* Use euclid from crates.ioecoal952015-06-191-1/+1
|
* Remove usage of String::from_str, deprecated in #6377Simon Sapin2015-06-151-2/+2
|
* webgl: Add multiple WebGL calls (activeTexture + blend*)ecoal952015-06-131-0/+31
| | | | | | | | | | | * activeTexture * blendColor * blendFunc * blendFuncSeparate * blendEquation * blendEquationSeparate Blocked on gleam.
* Implement new WebGL interfaces and methodsecoal952015-06-061-51/+148
| | | | | | | | | | | | | | | | | | | | | | | | | | This commit implements: * WebGLFramebuffer * WebGLRenderbuffer * WebGLTexture And adds the following methods to `WebGLRenderingContext`: * create{Texture,Framebuffer,Renderbuffer} * bind{Texture,Framebuffer,Renderbuffer} * destroy{Buffer,Texture,Framebuffer,Renderbuffer} Fixes: * WebGLUniform location shouldn't inherit from WebGLObject. Known Issues: * WebGL objects have to be destroyed on drop, we may want to keep a reference to the context, or maybe a clone of the renderer to achieve this Also refactors a huge part of the current implementation, to allow failing on creation of different WebGL objects. Blocked on https://github.com/servo/gleam/pull/22 A reftest for most of the added functionality is not doable right now, we need a few more functions in order to upload a texture, for example.
* WebGLRenderingContext getters and `getParameter`ecoal952015-06-011-0/+33
| | | | | | This implements the `canvas`, `drawingBufferHeight` and `drawingBufferWidth` getters to `WebGLRenderingContext`, and an initial version of `getParameter`.
* Add WebGLContextAttributes supportecoal952015-06-011-5/+31
| | | | | | | This commit also: * Allows to return non-rootable dictionaries from Codegen. * Merges the two context types in an enum type.
* Reduce max line length from 150 to 120 charactersCorey Farwell2015-05-241-7/+16
| | | | Part of https://github.com/servo/servo/issues/6041
* Layerize canvasecoal952015-05-201-1/+1
| | | | | | | Note that this keeps using readback right now, `NativeSurface` painting will be implemented soon. Also see https://github.com/servo/servo/issues/6142
* Upgrade to rustc 551a74dddd84cf01440ee84148ebd18bc68bd7c8.Simon Sapin2015-05-051-1/+0
|
* It implements enough WebGL spec to draw a triangleDiego Marcos2015-05-021-4/+213
|
* WebGL context hardware acceleration + error detectionecoal952015-04-271-9/+15
|
* Kicks off a WebGL implementationDiego Marcos2015-04-201-0/+75