or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing
xxxxxxxxxx
~~##### # GFX 2019 work week
Interning positions?
(gw, kvark)
- we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)
- we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem best(TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)
##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)
- we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)
- we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)
- we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)
- we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)
- we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)
- we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)
- we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify) just clarify
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)##### - we intern sizes but not positions of clips and primitives
- gecko bakes the scroll offsets
- new API now allows us to ask for the scroll offsets and “unbake” them
- however, hit testing still is a problem (TODO: clarify)
- need
getrelativetransform
to be used consistently- blocked on flattening rework (TODO: resolve)
Mix-blend rollback
TODO
CSS Shooter perf
TODO
Render task graph
(nical, gw, kvark)
Problem 1: a task is dependent on my multiple other tasks
Case: multiple drop shadows on the same text item
Opportunity: only downscale the text once, use for all shadow tasks
Note: render task cache can't be used, since it doesn't handle dependencies well (scheduling issue).
- solution: schedule the RT cache as late as possible
- when dependencies are in the texture cache, we'd need to render in a pass and blit back to the texture cache
Concern: render task rect rect allocation assumes that the source is in the previous pass.
- solution: blit contents of a task across passes
- schedule as late as possible
- retain some of the render task slices/rects as opposed to clearing
Blits are expensive:
- bounds are not tight
- the perf on Intel scales with the number of pixels we touch
TODO: check ARM/Mali for when the tiles are resolved:
- does it happen if the tile is unchanged?
- what if it was just cleared?
Motivation:
1. reduce redundant shadow tasks
2. remove "mark for saving"
3. SVG filters are expressed as graphs
Q: retain across frames?
A: currently, not retaining any shadow tasks
Q: debugging tools for RT graph resolver?
A: fun thing to write, given that the thing is fairly standalone
N: need tooling to find out the best scheduling off-line, compare with the run-time by the number of pixels
Current "best" strategy:
- ping-pong as current WR
- schedule late
Q: incremental deployment of the new alloctor?
1. first, integrate with existing behavior
2. enable for shadows and other things
3. play with strategies
Future:
1. Since texture array, sub-manage slices. Try work with slices, not rects.
2. Render pass as the whole render target, select the slice in VS.
3. Try identifying the 1:1 pass work, use sub-passes.
- tile cache memory limits? know how many mask slices are there
- can provide the whole frame as one giant render pass
Q: can we exploit the axises and auto-rotate things?
- would be good!
- segmentation solves the problem to some extent
- could also exploit the symmetry
Rounded corners optimizations:
- only render the corners into the mask
- exploit the symmetry
- more precise bounding/geometry to reduce fill rate
- can't apply the local clip rect in this case!
- quad tree subdivision (or a regular grid) - still draw rects
- can't multiply the clip mask (TODO: discuss)
Current PLS "optimization"
(gw, kvark, Gankro)
TODO
Flattening semantics
TODO
WebGPU integration
(kats, kvark)
Process of vendoring wgpu-rs:
- move into the tree
- improve the remote layer
- establish scripts to/from GitHub
Gecko will have 2 implementations as well, in the shape of different structs with the same virtual interface: local and remote. Differences are:
1.
Client
parameter in all functions of the remote layer2. Swapchain integration (unknown on Gecko side)
3. Pass dependencies collection in the remote layer
Q: how do we reduce the JS calls in client apps?
Moving into Gecko:
1. copy into tree as "gfx/webgpu"
2. connect it into libgkrust's Cargo.toml and lib.rs
3. Run
./mach vendor rust
, check complains about licensing. This will add dependencies to thirdparty/rust, make sure it looks sane4. add build option "–enable-webgpu" similar to WR here. make the libgkrust integration stuff from step 2 behind a feature flag controlled by the build option
5. To add a taskcluster job, copy and modify the existing webrender standalone jobs such as this one - copy it into a new
taskcluster/ci/webgpu/kind.yml
file. You won't need the wrench-deps stuff, just runcargo build
in the gfx/webgpu folderWebRender architecture overview
(gw)
Display Lists:
1. - Items
- text
- box shadowssssss
- image
- Stacking contexts
- filtersś
- Clip chains
- Reference frames
Scene ("model"):
- picture tree
1. - spatial tree
1. - clip chains
1.
1. Q: "scene" term vs WR capturing
1. Q: internation? (see picture caching)
1. Q: tile caching?
| Column 1 | Column 2 | Column 3 |
| –––– | –––– | –––– |
| Text | Text | Text |
can be scrolled around
Frame ("view"):
- update spatial tree
- update picture tree
- update visibility
- update primitives
- generate render tasks
- assign passes
- batch
Submit:
- apply resource updates
- for each pass
- for each layer
- bind resources
- draw
Picture caching
Q: stuff moved but not marked as changed by the debug overlay?
A: could be fixed-position element that isn't cached, drawn on top
Interning key:
1. item itself
2. clipping
3. transform
4. animated properties (e.g. opacity)
Picture = (prim uuid, uuid, uuid, ..) but
Tiles 1024x256. Identifying the dirty regions and updating them with a scissor rect.
Q: what happens with complex regions?
A: draw the whole thing
- should set the Z on tiles to reject the pixels over the valid tiles (TODO: verify)
- blog-post-like pages are still the bad case
Q: tile coordinate space?
A: world. If stuff is scrolled, the positions are adjusted, so we get the same world results.
Q: how does the valid content gets into the new frame
A: copied through the texture cache
~~~~**