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
1c2661ed12
gl renderer: Fix repeat node shader once again
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
Timm Bäder
ecc40cf115
rendernodeparser: Only report a GError* if we have one
2019-11-19 09:37:26 +01:00
Timm Bäder
3d7817154c
rendernodeparser: Handle resolving NULL urls
2019-11-19 09:37:03 +01:00
Matthias Clasen
8ccf2a722a
gsk: Stop using deprecated pango api
...
Shape engines are not used anymore.
2019-11-01 13:01:54 -04: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
5b508ea94a
Revert "gl: Speed up icon cache lookups"
...
This reverts commit dd5ee87b5b
.
2019-10-22 07:16:41 -04:00
Matthias Clasen
472d8eebbe
gl: Avoid pointless iteration
2019-10-22 07:16:41 -04:00
Matthias Clasen
dd316c8051
gl: Add some comments
2019-10-22 07:16:41 -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
aeabe3c40e
gl: Add debug spew to texture atlas
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
5ab5ff7677
Cosmetics
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
d777300d4e
Fix a crash with glyph caching
...
We need to treat atlas-less cached glyphs like
atlases, when it comes to invalidating text node
render data.
2019-10-15 22:52:28 -04:00
Matthias Clasen
173bb2e1e8
gsk: Fix uninitialized memory
...
This was causing crashes in some circumstances.
2019-10-15 20:54:24 -04:00
Matthias Clasen
dd5ee87b5b
gl: Speed up icon cache lookups
...
Use gdk_texture_set_render_data to avoid
hash table lookups when we can.
2019-10-15 19:44:26 -04: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
e46a7ca706
shadow cache: Remove outdated comments
...
No comments are better than outdated comments.
2019-10-12 17:06:39 -04:00
Matthias Clasen
e9ba7eda47
gl: Increate the cache check frequency
...
Otherwise, we spread the cache over more atlases
than necessary, increasing the amount of texture
changes in each frame.
2019-10-12 12:37:11 -04:00
Matthias Clasen
88649b6aae
gl: Interleave cache aging
...
Every few frames, we do extra work for the
cache aging. Arrange for the glyph and icon
caches to not cause extra work on the same
frame, to smooth things out.
2019-10-12 12:37:11 -04:00
Matthias Clasen
60d63bbada
gl: Improve debug spew for caches
...
Dump similar information for both caches,
and correct the unused percentage for
the atlases.
2019-10-12 12:37:11 -04:00
Matthias Clasen
123cbd42bb
gl: Make icon cache work like glyph cache
...
Replace timestamp tracking with an accessed bit
here too, to keep the glyph and icon cache code
similar.
2019-10-12 11:46:10 -04:00
Matthias Clasen
977ac2b31f
gl: Do less work on glyph caching
...
There is no need for us to be very precise about
aging the glyph entries. It is enough to check
occasionally and mark old entries. This reduces
the overhead of work we do every frame on the
caches, at the cost of letting glyphs linger
a bit longer in the cache.
2019-10-12 11:35:46 -04:00
Timm Bäder
bcdc3b706c
iconcache: Fix icon padding
2019-10-12 09:17:24 +02: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
0a876f11a0
gl: Don't use memcmp for comparing cache keys
...
Some innocent change made us use a stack-allocated
key, and things broke. Lets go back to comparing
cache keys field by field.
2019-10-12 01:00:08 -04:00
Matthias Clasen
1c17316f9c
gl: Handle row stride for icon cache upload
...
Same as the previous commit: Downloading a texture
may in theory give us data with a stride, so handle
that.
2019-10-11 21:17:30 -04:00
Matthias Clasen
646c5f369f
gl: Handle row stride for glyph cache upload
...
In theory, we can have data with a stride here,
so set the necessary parameters to tell GL about
it.
2019-10-11 21:16:40 -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
Matthias Clasen
9b61bfb3c8
gl: Speed up icon caching
...
Avoid expensive padding, and just upload the
image in several slices.
2019-10-11 19:36:26 -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