Timm Bäder
57efdcfbbe
gl renderer: Ignore subsequent render target ops
2018-12-07 16:36:10 +01:00
Timm Bäder
df817bd118
gl renderer: Ignore viewport ops to the same viewport
2018-12-07 16:36:10 +01:00
Timm Bäder
4b3a94f382
gl renderer: Fix remaining TODO about offset nodes
...
All of the nodes should now support offsets.
2018-12-04 06:30:47 +01:00
Timm Bäder
d67dacedba
gl renderer: transform nodes: offset
2018-12-04 06:30:47 +01:00
Timm Bäder
e1feb1b712
gl renderer: Clip nodes: offset
2018-12-04 06:30:47 +01:00
Timm Bäder
e8670c89ae
gl renderer: Linear gradients: offset
2018-12-04 06:30:47 +01:00
Timm Bäder
b4f918904c
gl renderer: Outset shadow nodes: offset
2018-12-04 06:30:47 +01:00
Timm Bäder
aead150ce2
gl renderer: Care about offset when rendering border nodes
2018-12-04 06:30:47 +01:00
Timm Bäder
fd47e57e4b
gl renderer: care about offset when rendering shadow nodes
2018-12-04 06:30:47 +01:00
Timm Bäder
2b95a5daee
gl renderer: Remove blend shader
...
It's unused.
2018-12-02 16:04:40 +01:00
Timm Bäder
0681c5d5bc
gl renderer: Reset opacity when rendering to a texture
...
The opacity will already be applied when rendering the final texture.
2018-12-02 16:03:08 +01:00
Timm Bäder
b19926c079
gl renderer: Add function to draw debug rectangle
2018-12-02 14:31:57 +01:00
Timm Bäder
692ed4f994
gl renderer: Refactor render op builder
2018-12-02 14:17:18 +01:00
Timm Bäder
ad759307f8
gl renderer: Add more node types to print_render_node_tree
...
debugging ++
2018-12-02 13:39:55 +01:00
Timm Bäder
58a4ae94e9
gl renderer: Use ops_transform_bounds_modelview in more places
2018-12-02 13:25:43 +01:00
Timm Bäder
9df9087a13
gl renderer: Add NodeSample
...
As a quick way of checking what a particular sample of nodes (e.g. all
offset node children) are made up of.
2018-12-02 13:25:43 +01:00
Timm Bäder
71512cf9ad
gl renderer: Move geometry calculation further down
...
We don't need it above, so move it to where it belongs.
2018-12-02 13:25:43 +01:00
Timm Bäder
79cc8fb261
gl renderer: Apply offset with scale
2018-12-02 13:25:43 +01:00
Timm Bäder
2831dbb110
gl renderer: Refactor add_offscreen_ops
...
Use a graphene_rect_t for the node bounds instead of 4 floats.
This makes it simpler to pass the size in without the offset applied.
2018-12-02 13:25:43 +01:00
Timm Bäder
933acb3682
gl renderer: Add offscreen ops without offset applied
...
When doing color matrix nodes. This fixes color matrix node with scale =
2.
2018-12-02 13:25:43 +01:00
Timm Bäder
574ebafa46
gl renderer: Reset offset when rendering offscreen
...
We want to apply the offset to the rendered texture, not to the
offscreen-rendered content.
2018-12-02 13:25:43 +01:00
Timm Bäder
74dd05b45e
gl renderer: add render ops for dumping the framebuffer
...
So offscreen rendering can be properly debugged.
2018-12-02 13:25:43 +01:00
Timm Bäder
3eb2cef421
gl renderer: Set the render region as initial clip
...
So we avoid creating render ops for things outside of it.
2018-12-02 13:25:43 +01:00
Timm Bäder
538491efa1
gl renderer: Fix only_translation check
2018-12-02 13:25:43 +01:00
Timm Bäder
5907ff694f
gl renderer: Render non-trivial transforms to a texture
...
This way we can e.g. render rotated clips, borders, etc.
2018-11-29 08:50:18 +01:00
Timm Bäder
c0cf592336
gl renderer: Cache offscreen textures per node, not size
2018-11-29 08:50:16 +01:00
Timm Bäder
12378f0afa
gl renderer: Expand matrix metadata extraction
...
Instead of getting the translation x/y everytime we use the modelview,
get it once, when extracting the metadata. Do the same with the scale.
And save if the matrix is "simple" at all, i.e. if it only consists of a
translation and/or scale. This will be helpful later when we start
drawing transformed nodes on textures.
2018-11-29 08:23:42 +01:00
Timm Bäder
5ea211bbb1
Revert "gldriver: Don't create surfaces to upload textures"
...
This reverts commit 6466e53bfc
.
This breaks GtkGLArea.
2018-11-29 07:39:11 +01:00
Timm Bäder
ef751bc809
gl renderer: Use stack to keep track of modelview matrix
...
So we can avoid calculating metadata for matrices all the time.
2018-11-27 05:39:27 +01:00
Timm Bäder
6466e53bfc
gldriver: Don't create surfaces to upload textures
2018-11-27 05:37:38 +01:00
Timm Bäder
5936d7f8f2
gl renderer: Properly retrieve matrix scale
...
So rotating offscreen nodes works.
2018-11-08 05:13:50 +01:00
Timm Bäder
d15df65a9d
gl renderer: Save some matrix multiplications
...
We do this for every single node, which is a little costly, especially
since the common case for the modelview matrix these days is a simple
translation. So, check whether the new modelview matrix is only a
translation matrix and if so, don't do a full matrix multiplication per
node.
2018-10-11 12:27:56 +02:00
Timm Bäder
392b4d9ac5
gl renderer: Pull a few declarations into the closest scope
2018-07-17 17:33:47 +02:00
Timm Bäder
b7d948af69
gl renderer: Use a GArray for the shadow cache
...
It's very small usually, in default Adwaita the only blurred outset
shadow we have is the one for the CSD'd toplevel window.
2018-07-17 17:33:46 +02:00
Benjamin Otte
3ce3867403
gl: Don't accidentally use ints for float variables
...
The int was floor()ing the x/y coordinates of glyphs, which could cause
significant repositioning of glyphs when text was scaled via the MVP.
2018-07-13 14:56:04 +02:00
Timm Bäder
3dd188fe7e
gl renderer: Cache blurred outset shadow nodes
...
Since these are particularly expensive to render and we have a pretty
big one used in every client-side decorated window.
2018-07-08 21:50:59 +02:00
Timm Bäder
165dab8265
gl renderer: Ignore 0-sized fallback nodes
2018-06-26 21:41:29 +02:00
Timm Bäder
7f8106f2a9
gl renderer: call glViewport directly
2018-06-16 10:09:12 +02:00
Руслан Ижбулатов
10b2f6540a
Fix wrong format strings in various places
2018-06-10 21:20:59 +00:00
Timm Bäder
4ab3aada3f
gl renderer: use w axis vector from graphene
...
Instead of initializing our own one every time.
2018-06-04 21:58:44 +02:00
Timm Bäder
719b2b0525
gl renderer: Remove an outdated comment
2018-05-27 17:51:51 +02:00
Timm Bäder
251913c80e
gl renderer: Use offsets for more node types
2018-05-27 16:20:55 +02:00
Timm Bäder
c8aa5b8b4e
gl renderer: Add helper for printing a render node tree
2018-05-19 10:18:50 +02:00
Timm Bäder
31e0aaf6b0
gl renderer: Remove ops debug message
...
Without a node name, this doesn't make much sense anymore.
2018-05-02 19:48:34 +02:00
Timm Bäder
d506799e72
gl renderer: Ignore nodes outside of the clip
...
Pretty sure this will bite me later but for now we avoid rendering nodes
that we are not going to see anyway.
2018-05-01 15:13:11 +02:00
Timm Bäder
3a5a9d9233
gl renderer: Use simple offset for selected offset node children
2018-05-01 15:13:11 +02:00
Benjamin Otte
a865621519
gdk: Move begin/end_frame() functions
...
As they require a draw context and the draw context is already bound to
the surface, it makes much more sense and reduces abiguity by moving
these APIs to the draw context.
As a side effect, we simplify GdkSurface APIs to a point where
GdkSurface now does not concern itself with drawing anymore at all,
apart from being the object that creates draw contexts.
2018-04-24 23:16:58 +02:00
Benjamin Otte
48fc18c37b
gdk: Get rid of GdkDrawingContext
...
All information is kept in GdkDrawContext these days, so use that one.
2018-04-24 23:16:58 +02:00
Benjamin Otte
c6ae0ff2d1
gdk: Get rid of gdk_drawing_context_get_clip()
...
Use the identical gdk_draw_context_get_frame_region() instead.
2018-04-24 23:16:58 +02:00
Benjamin Otte
4d481ecb95
gsk: Refactor damage computation for GL renderer
...
Previously, we got the damage, then computed the changed area, then
started a frame with that changed area.
But starting a frame computes the damage for us.
So now we start a frame, then get the damage area from that, then
compute the change area.
2018-04-24 23:16:58 +02:00