Timm Bäder
2fa9dddea6
gsk: Remember border node uniformity
...
Lots of border nodes have all the same width and the same color.
Renderers might be able to simplifty that, so keep an extra bit per
border node.
2020-07-28 05:34:11 +02:00
Timm Bäder
72d4a83af8
gl renderer: Moar state tracking
...
Track what we really need to send for inset shadows, which are used
as a border replacement in many cases.
Fishbowl says I can draw around 200-300 more switches per frame like
this too.
2020-07-28 05:34:11 +02:00
Timm Bäder
fcf502a686
gl renderer: Fix scrolledwindow undershoot rendering
2020-07-28 05:34:11 +02:00
Timm Bäder
37d7ab88dc
gl renderer: Avoid 9-slicing things that can't be
...
The outline needs to be large enough so changing the size of the outline
does not affect the resulting blurred texture.
Fixes #2776
2020-07-17 05:49:11 +02:00
Timm Bäder
6cde64072d
gl renderer: Remove outdated comment
2020-07-17 05:49:11 +02:00
Timm Bäder
6a60b0f591
gl renderer: Try to intersect rounded clips more often
2020-07-17 05:49:11 +02:00
Timm Bäder
339d9f05e4
gl renderer: Remove unused flag
2020-07-17 05:49:11 +02:00
Timm Bäder
34008e6aab
gl renderer: Ignore rounded clip that only increase the clip
...
This fixes the widget factory rendering too much.
In the widget-factory, we generally have a pretty small update area (two
spinners and a progressbar). We take the extents of that as a update
area and inital clip.
However, the first clip node we see is from the toplevel window, which
essentially increases the clip again to almost the entire window.
Fix that by ignoring such cases.
2020-07-17 05:49:11 +02:00
Timm Bäder
21f9148155
gl renderer: Fix cross-fade nodes with invisible end child
...
Only loading the vertex data doesn't draw anything.
2020-06-27 10:51:06 +02:00
Timm Bäder
d4f0593b37
gl renderer: Handle 0/1 progress in crossfade nodes
2020-06-27 10:51:06 +02:00
Timm Bäder
d5bf3c2cd1
gl renderer: Improve clipping code
...
don't render a clip to a texture if the new clip does not intersect with
any of the corners of the currently rounded clip.
Fixes #2770
2020-05-24 15:59:05 +02:00
Timm Bäder
094788f1a3
gl renderer: Refactor render_clipped_child
2020-05-24 15:59:05 +02:00
Timm Bäder
930d779eb3
gl renderer: don't pretend all transform nodes support being transformed
...
It doesn't work in the general case. The transform handling could use a
general overhaul though.
Fixes #2773
2020-05-22 21:29:10 +02:00
Timm Bäder
f3ca814f3d
gl renderer: Fix some off-by-one and rounding errors in the shadow code
...
Take 24
Fixes #2759
2020-05-22 21:29:10 +02:00
Timm Bäder
1aa86d23f4
gl renderer: Fix blurred outset shadow slicing
...
Take 23.
Fixes #2759
2020-05-21 15:32:12 +02:00
Timm Bäder
01c0acb707
gl renderer: Apply scaled clip when rendering offscreen clipped child
2020-05-17 15:30:28 +02:00
Timm Bäder
007de568c9
gl renderer: Fix an uninitialized value
2020-05-17 08:07:11 +02:00
Timm Bäder
b9ed957af3
gl renderer: Fix nested rounded clip rendering
...
If the inner clip intersects with the corners of the outer clip, we
potentially need a texture. We should add more fine-grained checks for
this in the future though.
Test case included.
2020-05-13 08:07:55 +02:00
Timm Bäder
b98ad549c2
gl renderer: Only destroy shader programs with ids > 0
...
We may return -1 as an error return value.
2020-05-10 09:30:15 +02:00
Matthias Clasen
c920796967
gsk: Fall back to cairo if compiling shaders fails
...
There was already some fallback in place here, but
in other places we were just asserting.
2020-04-17 13:42:33 -04:00
Emmanuele Bassi
d701a89281
Turn GskRenderNode into a derivable type
...
Language bindings—especially ones based on introspection—cannot deal
with custom type hiearchies. Luckily for us, GType has a derivable type
with low overhead: GTypeInstance.
By turning GskRenderNode into a GTypeInstance, and creating derived
types for each class of node, we can provide an introspectable API to
our non-C API consumers, with no functional change to the C API itself.
2020-04-08 15:40:15 +01:00
Matthias Clasen
a66ed7c461
gsk: Fix the compiler warning differently
2020-02-13 10:42:21 -05:00
Matthias Clasen
fb84fe7065
Fix flickery hover
...
Commit 47c44644b1
was a bit overzealous in fixing
compiler warnings. We still need to call collect_textures,
even if we don't need the number that it returns.
2020-02-12 22:45:24 -05:00
Alexander Larsson
2890cd849f
profiler: Add _end_mark() version of _add_mark()
...
These don't take a duration, instead they call g_get_monotonic_time() to
and subtract the start time for it.
Almost all our calls are like this, and this makes the callsites clearer
and avoids inlining the clock call into the call site.
2020-02-12 11:25:34 +01:00
Alexander Larsson
01d5ad2056
profiler: Make profiler-is-running a macro
...
When we use if (GDK_PROFILER_IS_RUNNING) this means we get an
inlined if (FALSE) when the compiler support is not compiled in, which
gets rid of all the related code completely.
We also expand to G_UNLIKELY(gdk_profiler_is_running ()) in the supported
case which might cause somewhat better code generation.
2020-02-12 11:05:01 +01:00
Alexander Larsson
cc643df88b
Convert all profiler times from nsec to usec
...
usec is the scale of the monotonic timer which is where we get almost
all the times from. The only actual source of nsec is the opengl
GPU time (but who knows what the actual resulution of that is).
Changing this to usec allows us to get rid of " * 1000" in a *lot* of
places all over the codebase, which are ugly and confusing.
2020-02-12 10:44:17 +01:00
Emmanuele Bassi
042a5736fa
Merge branch 'share-gl-programs' into 'master'
...
GskGLRenderer: Share programs between different renderers in same display
See merge request GNOME/gtk!1413
2020-02-11 16:30:16 +00:00
Matthias Clasen
720e48ec51
Merge branch 'handle-max-texture-size' into 'master'
...
gl: Don't require too large texture for offsreen ops
See merge request GNOME/gtk!1411
2020-02-11 16:23:02 +00:00
Alexander Larsson
7b0b3d9547
GskGLRenderer: Share programs between different renderers in same display
...
This is similar to how we share texture atlases. Some added complexity
in that the program state also needed to be shared, so it had to move to
the shared Programs object.
With this change realization of additional GskRenderers when opening
popups went from ~60msec to ~35 msec on average.
2020-02-11 16:58:45 +01:00
Emmanuele Bassi
47c44644b1
Silence compiler warnings in non-debug builds
2020-02-11 14:47:22 +00:00
Alexander Larsson
8fdb710c0f
gl: Don't require too large texture for offsreen ops
...
When rendering ops to an offscreen texture we take max-texture-size
in consideration and modify the scale we use such that the required
texture does not exceed the limit.
This means some rendering will be blocky/fuzzy, but that is better
than it being clipped.
2020-02-11 13:50:35 +01:00
Timm Bäder
77e0d360ed
Add pure and const annotations to various functions
2020-01-26 18:21:07 +01:00
Timm Bäder
f62535affc
gl renderer: Avoid some work when rendering border nodes
2020-01-26 18:21:07 +01:00
Matthias Clasen
a297129685
Add a profiler mark around renderer realization
...
This takes time that is worth calling out.
2020-01-25 01:28:24 -05:00
Timm Bäder
f80a341b4f
gl renderer: handle cross-fade nodes with invisible children
2020-01-24 06:19:16 +01:00
Timm Bäder
77f8245c0c
gl renderer: Handle blur nodes with invisible children
2020-01-24 06:19:16 +01:00
Timm Bäder
8afdbd6ee3
gl renderer: Make render_rounded_clip_node clearer
2020-01-24 06:19:16 +01:00
Timm Bäder
685288216f
gl renderer: Move rect transformation to the vertex shader
...
No need to do this for every fragment.
2020-01-24 06:08:39 +01:00
Timm Bäder
c8fa1f19db
gl renderer: Transform rounded rect on the GPU
...
Change the RoundedRect struct we use in our shaders so we can transform
it using (affine) matrices.
2020-01-24 06:08:39 +01:00
Matthias Clasen
1565f597c8
gl: Disambiguate profiler marks
...
"render" was used for both GL and widgets. Oops.
2020-01-22 16:37:48 -05:00
Timm Bäder
433c8307b2
gl renderer: Pull a local variable in the closest scope
2020-01-18 08:49:52 +01:00
Timm Bäder
dc8dedce07
gl renderer: Draw outset shadows white
...
and only apply the actual shadow color when we draw them from the
texture. This way we can reuse the cached shadows during color
transitions.
2020-01-18 08:49:52 +01:00
Timm Bäder
3091679ffa
gl renderer: Render simple border nodes in a simple way
...
Roughly 80% of the border nodes are just one color and have the same
width on all sides, so we can draw them by uploading just one rect and
not four.
2020-01-18 08:49:52 +01:00
Timm Bäder
afa991752c
gl renderer: Look at shadow color in the outset shadow cache
...
It would probably be better to not do this and always render the outline
in plain white, then later recolor it but do this for no, just for
correctness.
2020-01-18 08:49:51 +01:00
Timm Bäder
ea810f176b
gl renderer: Handle repeat nodes with invisible children
...
We can handle this pretty easily by normally drawing the other
(visible) child node, if any.
2020-01-07 17:27:19 +01:00
Timm Bäder
76795ffba9
gl renderer: Sprinkle some const around
2020-01-07 17:27:18 +01:00
Timm Bäder
eebe67cf0a
gl renderer: Add util to load vertex data with texture region
2020-01-07 17:27:18 +01:00
Timm Bäder
b9726901a5
gl renderer: Fix inverted dy in inset shadows
2020-01-07 17:27:17 +01:00
Timm Bäder
8b1af398a0
gl renderer: Avoid another manual rounded rect transform
...
We have transform_rect() for this now.
2020-01-07 17:27:17 +01:00
Timm Bäder
b8d1c3ab55
gl renderer: Don't force repeat node child offscreen
2020-01-07 17:27:17 +01:00
Timm Bäder
054d69aaf9
gl renderer: Fix a misleading comment
2020-01-07 17:27:17 +01:00
Timm Bäder
022d19a4c6
gl renderer: Add debug code for color nodes
2020-01-07 17:27:17 +01:00
Timm Bäder
ef7276c398
gl renderer: Trivial variable reordering
2020-01-07 17:27:17 +01:00
Timm Bäder
0a8ca49b5e
gl renderer: transform border outline like everything else
2020-01-07 17:27:17 +01:00
Timm Bäder
587bc82c37
gl renderer: Print debug node message
2020-01-07 17:27:17 +01:00
Timm Bäder
db91b6dc61
gl renderer: Load vertex data directly into vertices GArray
2020-01-07 17:27:16 +01:00
Timm Bäder
44ac2d5abb
gl renderer: Pass linear gradient stops to shaders directly
...
No need to copy them into the render ops like this.
2020-01-07 17:27:16 +01:00
Timm Bäder
f79c807645
gl renderer: Don't invert offset value twice
2020-01-07 17:27:16 +01:00
Timm Bäder
8dd7f5aefe
gl renderer: Mark beginning of frame if DEBUG_OPS is set
2020-01-07 17:27:16 +01:00
Timm Bäder
398f49ad31
gl renderer: Trivial declaration reorder
2020-01-07 17:27:16 +01:00
Timm Bäder
3d260a950e
gl renderer: Remove a few outdated comments
2020-01-07 17:27:16 +01:00
Timm Bäder
219493c818
gl renderer: Don't copy matrix/offset of color matrix nodes into ops
2020-01-07 17:27:15 +01:00
Timm Bäder
06f63764fb
gl renderer: Initialize alpha uniform to 1.0
...
This makes gl-legacy work and gl-gles work except for text and icons.
2020-01-07 17:27:15 +01:00
Timm Bäder
1243174e53
gl renderer: Make RoundedRect work in gles
...
Which can't return struct types containing arrays. So let's revert to
the previous version but still send the rect along as a vec4[3];
2020-01-07 17:27:15 +01:00
Timm Bäder
cc909b160f
gl renderer: Rewrite shader builder
...
Use a unified approach to write both vertex and fragment shader in the
same file.
2020-01-07 17:27:15 +01:00
Timm Bäder
5191b6fccd
gl renderer: Only send clip corners if we need to
...
We change the clip bounds a lot more ofthen than the clip corners and
they are already split up in the shader, so only send the corners if we
need to.
2020-01-07 17:27:15 +01:00
Timm Bäder
a29b8fbef4
gl renderer: Shorten debug output impl
...
This will leak a string but WHATEVER.
2020-01-07 17:27:15 +01:00
Timm Bäder
5b072e716c
gl renderer: Fix debug color output
2020-01-07 17:27:15 +01:00
Timm Bäder
49845795d9
gl renderer: Rewort passing rounded rects to shaders
2020-01-07 17:27:15 +01:00
Timm Bäder
ab04c74ec9
gl renderer: Don't copy border outline corner sizes around
...
We already offset + scale the outline and its corners, just pass those
directly to the shader.
2020-01-07 17:27:15 +01:00
Timm Bäder
4744bb9099
gl renderer: stop copying current color around
...
Just use a pointer now.
2020-01-07 17:27:15 +01:00
Timm Bäder
91522dda63
gl renderer: remove a memory leak
2020-01-07 17:27:15 +01:00
Timm Bäder
f85448ffbf
gl renderer: Split blurring a node into its own function
2020-01-07 17:27:15 +01:00
Timm Bäder
9d9a730659
gl renderer: Drop a dead if statement
...
We already handle this earlier.
2020-01-07 17:27:15 +01:00
Timm Bäder
d868b23c76
gl renderer: Implement blurred inset shadow nodes
...
And with this...
Fixes #1101
2019-12-03 08:40:35 +01:00
Timm Bäder
ca66e9788c
gl renderer: Save one level of indentation
2019-12-03 08:40:34 +01:00
Timm Bäder
fb5dc73841
gl renderer: Implement blurred shadow nodes
2019-12-03 08:40:34 +01:00
Timm Bäder
8d61d9f627
gl renderer: Take a TextureRegion in blur_texture
...
So we can refer to textures on a texture atlas.
2019-12-03 08:40:34 +01:00
Timm Bäder
22b6085c32
gl renderer: Scale blur radius
...
We scale the texture size, so as a consequence we have to scale the blur
radius.
2019-12-03 08:40:34 +01:00
Timm Bäder
2deb1a05a0
gl renderer: Add some often needed debug code
2019-12-03 08:40:34 +01:00
Timm Bäder
8ca46169b1
gl renderer: Blur shader improvements
...
Use a two-pass blur shader, fix a few other things and unify the
blurring of blur nodes and blurred outset shadow nodes.
Related to #1283
2019-12-03 08:40:34 +01:00
Timm Bäder
982890515d
gl renderer: Don't use g_assert() for code that should always run
...
g_assert can be compiled out.
2019-11-27 16:56:47 +01:00
Timm Bäder
1817025f46
gl renderer: Don't save repeat nodes to disk
...
This is just debuggin code someone forgot.
2019-11-27 16:47:14 +01:00
Timm Bäder
8f6de1f955
gl renderer: Load flipped-y offscreen vertex data directly
...
Instead of loading the unflipped version first and then flipping it.
Don't do it in add_render_ops either but only in the function actually
adding the render ops for the nodes, since those frequently have
early-out conditions that don't need the vertex data at all.
2019-11-26 09:09:25 +01:00
Timm Bäder
91f7ac2d58
gl renderer: Care more about 0×0 offscreen nodes
...
These never result in a rendering of course, but we must make sure not
to create a 0×0 texture for them, since that will cause problems later
on.
2019-11-26 09:09:25 +01:00
Timm Bäder
053360df85
gl renderer: Remove unused function
2019-11-19 11:06:08 +01:00
Timm Bäder
600ce68210
gl renderer: Add a short cut for repeat nodes that don't repeat
...
These happen and we don't even need to draw the child to a texture.
2019-11-19 10:45:02 +01:00
Timm Bäder
604f44da11
gl renderer: Fix repeat nodes that don't repeat
...
Fixes #2234
2019-11-19 10:31:21 +01:00
Matthias Clasen
d4c97ea2b4
gl: Use the fallback debug flag
...
This debug flag was unused; use it to enable
fallback highlighting at runtime.
2019-10-30 22:31:47 -04:00
Matthias Clasen
1038bc781a
Revert "Cache glyph textures in render nodes"
...
This reverts commit c5af463843
.
2019-10-22 07:16:41 -04:00
Matthias Clasen
d3431f569c
Revert "inspector: Fix node recording"
...
This reverts commit ba7649b388
.
2019-10-22 01:32:51 -04:00
Matthias Clasen
ba7649b388
inspector: Fix node recording
...
When attaching renderer-specific data, we need to
make sure that we key it off the renderer that is
in use, and cope with the absence of render data.
This fixes recording nodes in the inspector.
2019-10-18 09:33:45 -05:00
Matthias Clasen
fdbb925654
gl: Remove an unimplemented profiler counter
2019-10-17 07:59:34 -05:00
Matthias Clasen
222b6c2b58
glyph cache: Go back to memcmp
...
Be careful to avoid padding data, and only
compare the relevant parts, leaving out the
hash key.
2019-10-17 07:59:34 -05:00
Matthias Clasen
6c92b824f3
Merge branch 'wip/chergert/opbuffer' into 'master'
...
Add OpBuffer helper for building op buffer
See merge request GNOME/gtk!1131
2019-10-17 11:37:07 +00:00
Matthias Clasen
e34d1b8a26
gl: Slightly rework the icon cache api
...
Return a pointer to the IconData struct. This is
closer to the glyph cache api, and will allow us
to add similar shortcuts. For now, just store
texture coords in the form we need, avoiding
converting them over and over.
2019-10-15 19:44:26 -04:00
Matthias Clasen
c5af463843
Cache glyph textures in render nodes
...
This is a quick implementation that avoids many
glyph cache lookups. We keep an array of direct
pointers in the text render node, and throw those
cached pointers away whenever any atlases have
been dropped (since that may invalidate the cached
glyphs).
2019-10-15 19:44:26 -04:00
Matthias Clasen
49748c9c23
Some more vertex data reshuffling
...
In some cases, the vertex data is just a trivial
modification of the default data, so do that instead
of recalculating it.
2019-10-15 19:44:26 -04:00
Matthias Clasen
b53fa48794
Fix load_vertex_data
...
There was a copy-paste error that set all
uv coordinates to 0,0.
2019-10-15 19:44:26 -04:00
Christian Hergert
97f3371709
gl: avoid calculating vertex_data until necessary
...
In many cases of the switch, we do not need the vertex data. This moves
the creation of the vertex_data array into a secondary function and only
calculates it the cases for which it is required.
2019-10-15 19:44:26 -04:00
Matthias Clasen
58d57e1087
gl: Drop buffer_size
...
No need to maintain buffer_size separately.
It is always vertices->len * sizeof (GskQuadVertex).
2019-10-15 19:44:26 -04:00
Matthias Clasen
571068af12
Drop OP_CHANGE_VAO
...
Instead, we accumulate vertices in a separate
array, which simplifies various things and lets
us avoid the extra copying step for the vao.
2019-10-15 19:44:26 -04:00
Christian Hergert
a00d12c62a
prototype OpBuffer helper for building op buffer
2019-10-15 19:44:26 -04:00
Timm Bäder
5ea21f7910
gl renderer: Fix an out of bounds read
...
Fixes #2200
2019-10-15 07:13:14 +02:00
Matthias Clasen
7bff3abe8e
glyph cache: Fix handling of big glyphs
...
We were putting big glyphs in the cache, in their
own texture, but forgetting to mark the texture
as permanent, so it could be reused, leading to
occasional misrendering. Fix this by marking these
textures as permanent, and explicitly freeing them
when the cache entry gets old.
2019-10-12 18:53:22 -04:00
Matthias Clasen
61db797f29
gl: Simplify glyph cache lookup
...
Make this function more similar to the icon
cache equivalent, and simplify it a bit. We
don't use the boolean return, and we don't need
to look at the age of entry when marking it
used.
2019-10-12 01:35:13 -04:00
Matthias Clasen
8839e10d44
gl: Do less work to maintain caches
...
Remember which atlases were removed, and only
check those when looking for icons or glyphs
to remove. For most frames, we don't have to
check at all since no atlases were removed.
2019-10-11 20:42:24 -04:00
Timm Bäder
4f5a9be465
gl renderer: Get blur node child only once
2019-10-11 22:31:33 +02:00
Timm Bäder
6a4c778791
gl renderer: Shorten function
2019-10-11 22:31:33 +02:00
Timm Bäder
1caa95b814
gl renderer: Avoid copying a rect
2019-10-11 22:31:33 +02:00
Matthias Clasen
cf44ba7847
gl: Avoid stray use of doubles
...
Everything else in this code is floats,
so stick to that and avoid unnecessary
precision.
2019-10-11 16:16:09 -04:00
Matthias Clasen
30433d7659
Cosmetics
2019-10-11 16:16:09 -04:00
Matthias Clasen
849b950763
gl: glyph cache tweaks
...
Reduce the cost of lookups by storing
the hash value directly.
2019-10-11 16:15:15 -04:00
Matthias Clasen
e296c6a356
gsk: Store color bit info in text nodes
...
Keep the 'has color glyphs' info in text nodes,
instead of determining it over and over in both
the vulkan and gl backends.
2019-10-11 16:15:14 -04:00
Timm Bäder
136400e8a2
gl renderer: Remove unused modelview matrix
2019-10-11 16:56:24 +02:00
Timm Bäder
90199534e0
gl renderer: Don't copy outset shadow node outline
2019-10-11 16:38:58 +02:00
Timm Bäder
f7c64b4ebb
gl renderer: Don't copy colors into render ops
2019-10-11 15:06:51 +02:00
Timm Bäder
2977e91aed
gl renderer: Grow unblurred outset shadow outline on the gpu
2019-10-11 10:16:39 +02:00
Timm Bäder
9b1e0dd4a3
gl renderer: Cosmetics
2019-10-11 09:32:24 +02:00
Timm Bäder
a29826bb71
gl renderer: Only add outset shadow center piece if dx/dy != 0
2019-10-11 08:46:33 +02:00
Christian Hergert
528297f5e5
gl: avoid copying RenderOp to GArray
...
Instead of copying the (rather large) RenderOp to the GArray, we can
simply set the fields directly in the allocated space for the struct.
In most cases, there wont be any allocations to make as the array size
is kept in tact across frame renderings.
2019-10-09 15:41:53 -07:00
Christian Hergert
e32c992886
gl: avoid copying GskGLCachedGlyph in lookup
...
This saves a minor amount of CPU time by avoiding the copy of structure
on each lookup (which is short-lived).
2019-10-09 14:37:08 -07:00
Christian Hergert
c9ca60c201
gl: short-circuit on NULL program
...
The NULL check is a more inclusive check than each of the individual
op->op checks.
2019-10-09 11:51:32 -07:00
Timm Bäder
329f7c1c40
gl renderer: Remove rounded rect intersection code
...
Caused correctness issues.
Fixes #1917
2019-10-09 16:57:22 +02:00
Timm Bäder
e838ea3bc8
gl renderer: Fix scaled fallback node drawing
2019-10-09 16:57:22 +02:00
Christian Hergert
47ef5af778
gl: remove stray +
2019-10-08 10:58:29 -07:00
Timm Bäder
e05b87c8d0
gl renderer: Fix rounded rect intersection
2019-09-25 17:51:52 +02:00
Timm Bäder
c9241e83dd
gl renderer: Remove unused matrix
2019-09-09 17:36:25 +02:00
Timm Bäder
2914c360a9
gl renderer: Implement a subset of repeat nodes
2019-08-11 09:05:31 +02:00
Matthias Clasen
d276d2629a
gl: Glyph cache fixes
...
Pass the full location to the glyph cache lookup,
and use the same rounding as cairo does. This makes
the output much closer to the cairo renderer.
2019-07-31 00:03:13 -04:00
Matthias Clasen
5dd8801ee5
gl: implement subpixel positioning
...
Pass the glyph position into the glyph caching functions,
not just the glyph index. This allows us to cache different
images for different subpixel positions.
2019-07-28 16:42:52 -04:00
Timm Bäder
2c38b71ca5
glyph cache: Upload large glyphs in lookup () directly
...
Instead of relying on a texture id of 0, which can happen for other
reasons, e.g. when the glyph is being scaled too small.
Fixes part of #2046
2019-07-28 12:00:15 +02:00
Timm Bäder
731613d70b
gl renderer: Remove leftover modelview matrix
...
We use a GskTransform there nowadays.
2019-07-21 12:45:10 +02:00
Timm Bäder
27ddd39d69
gl renderer: Pull out code from a loop
...
Does not not actually depend on anything done inside the loop.
2019-07-21 08:39:25 +02:00
Timm Bäder
5910a28aa5
gl renderer: Replace a redundant function call
...
We're already getting the radius from the node above.
2019-07-19 18:14:50 +02:00
Timm Bäder
b9b5072668
gl renderer: Fix opacity nodes with overlapping child nodes
2019-07-14 10:08:04 +02:00
Timm Bäder
b062594ae6
gl renderer: Properly clean up program state transforms
2019-07-07 07:24:00 +02:00
Timm Bäder
99c01607f1
gl renderer: Remove some dead code
2019-06-29 08:53:36 +02:00
Timm Bäder
071748592d
gl renderer: Don't upload GL textures into the icon cache
2019-06-29 07:15:43 +02:00
Matthias Clasen
e961943508
Fix a refcounting mishap
...
We were missing a ref, causing caches to go missing
when a window is opened twice.
2019-06-05 02:49:07 +00:00
Timm Bäder
ecb353f4af
Consider all offscreen drawings for the icon cache
2019-06-04 23:00:02 +00:00
Matthias Clasen
259bbdcb09
Share glyph and icon caches
...
Use the same texture atlases to back both
the glyph and icon caches, and unify their
sizes and management. Store big glyphs
in separate textures, so all atlases have
the same size. Tweak some of the eviction
parameters.
We share the caches across all GL contexts
on a display, unless the GSK_NO_SHARED_CACHES
env var is set.
2019-06-04 23:00:02 +00:00
Matthias Clasen
7293fd517e
glyph cache: Stop storing driver and render
...
This is the first step towards sharing glyph
caches across renderers.
2019-06-04 23:00:02 +00:00
Timm Bäder
cf4ff56ca5
gl renderer: Add & use icon cache
...
Upload small icons all to the same texture atlas.
2019-06-04 23:00:01 +00:00
Timm Bäder
a51b694314
gl renderer: Remove homegrown transform_bounds code
...
GskTransform can do this for us now.
2019-06-02 11:43:06 +02:00
Timm Bäder
f999572e8f
gl renderer: Use GskTransform in render ops builder
...
for the modelview matrix. We need this later.
2019-06-02 10:12:09 +02:00
Timm Bäder
f1996783ec
gl renderer: Fix rounded rect intersection code
...
Test case attached.
Fixes #1920
2019-06-02 08:31:44 +02:00
Timm Bäder
78ee4c0677
gl renderer: Properly flip scaled fallback nodes
...
Fixes cairo nodes in hidpi setups
2019-05-30 09:12:45 +02:00
Timm Bäder
fb86fd900e
gl renderer: Make creating render targets easier
2019-05-23 18:42:00 +02:00
Timm Bäder
fcfc2ca518
gl renderer: Render recording surface untransformed
...
Cairo can't handle the y flip apparently.
Fixes #1906
2019-05-21 08:38:11 +02:00