Raph Levien
b571e0d10c
Continue wiring up gpu-side flattening
...
All segments given to path coarse raster are cubics. Flatten to
quadratics.
This works but the quality is not (yet) good.
2020-06-09 17:56:11 -07:00
Raph Levien
0f44bc8b78
Start GPU-side flattening
...
This starts the work on GPU-side flattening by plumbing curves through.
2020-06-09 16:01:47 -07:00
Raph Levien
af0a1af8e1
Make fills work
...
The backdrop propagation is slow but it does work.
2020-06-05 22:40:44 -07:00
Raph Levien
63ba45c774
Fix performance issues
...
Use larger workgroup for tile initialization (utilization was poor).
Provide correct element count to coarse rasterizer.
2020-06-03 15:32:58 -07:00
Raph Levien
70a9c17e23
Continue building out pipeline
...
Plumbs the new tiling scheme to k4. This works (stroke only) but still
has some performance issues.
2020-06-03 12:21:09 -07:00
Raph Levien
294f6fd1db
Experiment with new sorting scheme
...
Path segments are unsorted, but other elements are using the same
sort-middle approach as before.
This is a checkpoint. At this point, there are unoptimized versions
of tile init and coarse path raster, but it isn't wired up into a
working pipeline. Also observing about a 3x performance regression in
element processing, which needs to be investigated.
2020-06-03 09:29:25 -07:00
Raph Levien
f3cb904f86
Add command line args for loading svg
2020-05-31 09:57:25 -07:00
Raph Levien
c603cafc6c
Merge branch 'more_svg' into new_merge
2020-05-31 09:19:34 -07:00
Raph Levien
121f29fef6
Merge one segment at a time
...
No parallelism yet, but seems to improve performance.
2020-05-30 08:51:52 -07:00
Raph Levien
894ef156e1
Change to new merge strategy in binning
...
WIP
We get "device lost" on NV :/
2020-05-29 20:06:16 -07:00
Raph Levien
3e83972606
Improve SVG parsing
...
WIP
2020-05-28 11:48:36 -07:00
Raph Levien
dbcffb10db
Reinstate fills
...
Add fills back in.
2020-05-25 15:27:03 -07:00
Raph Levien
8eaf49a04d
Checkpoint parallel output
...
Parallel segment output seems to be working for strokes.
2020-05-25 12:14:18 -07:00
Raph Levien
24b3def0a1
Start work on parallel segment output
...
Output of segments is in parallel. Getting closer, some problems with
chaining but mostly correct.
2020-05-24 21:02:19 -07:00
Raph Levien
a616b4d010
Rework right_edge computation in elements
...
Trying to fit it into the fancy monad doesn't really work, so use a
more straightforward approach to compute it from the aggregate.
Also add yEdge logic (basically copying piet-metal). With a fix to
ELEMENT_BINNING_RATIO (which I had simply gotten wrong), the example
renders almost correctly, with small bounding box artifacts.
2020-05-21 10:00:56 -07:00
Raph Levien
ed4ed30708
Adding backdrop logic
...
Calculation of backdrops kinda works but with issues, so WIP.
2020-05-20 16:03:27 -07:00
Raph Levien
076e6d600d
Progress on wiring up fills
...
Write the right_edge to the binning output.
More work on encoding the fill/stroke distinction and plumbing that
through the pipeline. This is a bit unsatisfying because of the code
duplication; having an extra fill/stroke bool might be better, but I
want to avoid making the structs bigger (this could be solved by
better packing in the struct encoding).
Fills are plumbed through to the last stage. Backdrop is WIP.
2020-05-20 11:14:19 -07:00
Raph Levien
03da52cff8
Start implementing fills
...
This should get the "right_edge" value for each segment plumbed through
to the binning phase. It also needs to be plumbed to coarse raster and
wired up there.
Also considering WIP because none of this logic has been tested yet.
2020-05-19 20:40:04 -07:00
Raph Levien
9bb06ec340
Correct rendering (on Intel)
...
Handle multiple passes in coarse raster. Doesn't work on NV, WIP to
find out why.
2020-05-16 06:43:31 -07:00
Raph Levien
93044b469b
Fix prefix sum
...
First, add decoupled lookback.
Second, fix problem with monoid that was overly aggressive in resetting
the bbox.
2020-05-15 20:09:39 -07:00
Raph Levien
868b0320a4
Render strokes
...
As of this point, it mostly renders stroke outlines for tiger. Some
dropouts are because the scan in the elements pass doesn't do lookback
yet, others are probably a bug.
2020-05-15 17:38:17 -07:00
Raph Levien
1240da3870
Delete old-style kernels and buffers
...
Pave the way for the coarse raster pass to write to the ptcl buffer.
2020-05-15 15:24:37 -07:00
Raph Levien
3a6428238b
Start writing tiles
...
This is the first checkpoint where it actually runs a pipeline end to
end, though it's far from accurate.
2020-05-15 14:31:52 -07:00
Raph Levien
cc89d0e285
Starting coarse rasterizer
...
Working down the pipeline.
WIP
2020-05-13 21:39:47 -07:00
Raph Levien
343e4c3075
Binning stage
...
Adds a binning stage. This is a first draft, and a number of loose ends
exist.
2020-05-12 17:34:15 -07:00
Raph Levien
736f883f66
Store annotated elements
...
Apply transform to paths and annotate with computed linewidth and
bounding box information, storing the result.
2020-05-12 12:13:39 -07:00
Raph Levien
9a8854ffab
Experimenting with sort-middle
...
Starting a prototype that explores the sort-middle approach. This
commit has a prefix sum pass computing state per element.
2020-05-12 08:54:09 -07:00
Raph Levien
8d01aba237
Update to piet 0.13
...
Get rid of kurbo patch, as we now use kurbo through piet. Also clean up
some warnings.
2020-05-12 08:26:48 -07:00
msiglreith
e2ed54361d
Fix rebase issues and split into library and cli/winit binaries
2020-05-04 17:05:54 +02:00
msiglreith
b38e43f0c2
Initial work for surface support
...
surface: handle extensions
Implement swapchain creation and blit image to screen
2020-05-04 16:24:42 +02:00
Raph Levien
dcdd35e0b8
Implement solid color cmd
...
Avoids empty fill segment list, which was a minor bug.
Also increase tolerance to 0.25 to juice performance.
2020-05-02 10:53:16 -07:00
Raph Levien
aa83d782ed
Fills
...
Adds fills, and has more or less working tiger render (with artifacts).
2020-05-01 19:42:20 -07:00
Raph Levien
19ecd0a158
Merge pull request #3 from linebender/chunk_segments
...
Use linked list strategy for segments
2020-04-30 21:40:04 -07:00
Raph Levien
aa8b71e922
Reset query pool before use
...
Quiets validation errors now that we can see them :)
2020-04-29 18:18:04 -07:00
Raph Levien
b23fe25177
Use linked list strategy for segments
...
Trying to allocate them contiguously wasn't good.
2020-04-28 22:25:57 -07:00
Raph Levien
cb06b1bc3d
Implement stroked polylines
...
This version seems to work but the allocation of segments has low
utilization. Probably best to allocate in chunks rather than try to
make them contiguous.
2020-04-28 18:45:59 -07:00
Raph Levien
55e35dd879
Dynamic allocation of intermediate buffers
...
When the initial allocation is exceeded, do an atomic bump allocation.
This is done for both tilegroup instances and per tile command lists.
2020-04-25 10:45:47 -07:00
Raph Levien
e1c0e448ef
Encode stroke in scene
...
This just adds the first step of polyline stroking, which is adding it
to the scene. Also just a bit of cleaning up of dimensions into one
header file.
2020-04-25 08:24:46 -07:00
Raph Levien
7528eaff22
Add piet trait
...
Use piet render context to encode into scene buffer.
This is adapted from piet-dx12.
2020-04-22 12:07:56 -07:00
Raph Levien
8d51ccbc74
Add draft kernel 4
...
Render from ptcl rather than original scene.
2020-04-21 19:30:14 -07:00
Raph Levien
6976f877e0
Add first draft of kernel 3
...
A fairly simple approach, but it adds the translation (not tested yet
in scene encoding) and does bounding box culling.
2020-04-21 18:49:50 -07:00
Raph Levien
2ed89dd65e
First draft of kernel 1
...
Output of kernel 1 is validated by simple inspection, next step is to
wire it up properly.
2020-04-20 18:07:18 -07:00
Raph Levien
5adb703936
Staging buffers
...
Add hal methods to clear and copy buffers, so work happens in device
local buffers.
2020-04-18 07:46:59 -07:00
Raph Levien
957f710b91
Render random circles
...
Poor performance but it renders something.
2020-04-17 21:18:39 -07:00
Raph Levien
86e52a3f47
Start image rendering
...
Populates the piet-gpu subdir, with an extremely simple renderer. The
main program saves the image to a PNG.
Contains a few fixes (I was confused about the need for multiple
bindings, as opposed to multiple descriptors within a binding).
2020-04-16 14:04:40 -07:00