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
f7c64b4ebb
gl renderer: Don't copy colors into render ops
2019-10-11 15:06:51 +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
Timm Bäder
58e8dd1c0d
gl renderer: Fix dx/dy handling on hidpi
...
Fixes misplaced error squiggles in the node editor.
2019-07-26 16:27:39 +02:00
Timm Bäder
b8bbf7b63b
gl renderer: Rework transform handling
...
Fix all the ref counting mishaps. Makes hidpi work again and without
memory leaks.
2019-07-26 15:35:06 +02:00
Timm Bäder
5f21c45f75
Revert "gl renderer: ops_set_modelview is (transfer full)"
...
This reverts commit e904c49e8a
.
This breaks HiDPI setups, i.e. setups where the call to
ops_set_modelview does not end up with a NULL transform.
2019-07-21 12:45:10 +02:00
Timm Bäder
e904c49e8a
gl renderer: ops_set_modelview is (transfer full)
...
regarding the passed modelview matrix
2019-07-21 09:06:10 +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
6b42e5b433
gl renderer: Fix push/pop modelview behavior
2019-06-29 08:57:27 +02:00
Timm Bäder
a0cb68283d
gl renderer: Dont' memcmp() a GskTransform
2019-06-03 17:07:26 +02:00
Timm Bäder
d228f4bb76
gl renderer: Don't ref transform twice
...
That's gonna leak it otherwise.
2019-06-03 17:03:02 +02:00
Timm Bäder
efe9bba343
gl renderer: Ref transform before using it
...
Fixes #1929
2019-06-03 17:03:02 +02:00
Timm Bäder
fb1f929c38
gl renderer: Dont' unnecessarily to_matrix transforms
2019-06-03 17:03:02 +02: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
db548ee2a0
gl renderer: Fix scale computation
...
We don't need to just look at the scale of the new modelview matrix, but
at the one we get when multiplying the new one with the current one.
Test case attached.
2019-06-02 10:25:39 +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
Alexander Larsson
32edf29c0a
GskGLRenderer: Add debug groups
...
This adds debug groups in various places, including the debug
nodes if those are in use. This makes the traces in tools like
renderdoc much easier to read.
2019-04-25 11:36:21 +02:00
Timm Bäder
e13d242320
gl renderer: Keep op builder around
...
GL keeps the unoform state per-program, but not per-frame. So, we can't
pretend that this works for us. Keep the RenderOpBuilder around for the
entire lifetime of the renderer instead.
2019-04-24 17:55:14 +02:00
Timm Bäder
91bbe6ef95
gl renderer: Sync gpu and cpu default alpha value
...
Otherwise we might end up not passing the new value to the GPU.
2019-04-24 13:29:45 +02:00
Benjamin Otte
3cc84d2860
transform: Make category public API
...
Also rename it from GskMatrixCategory to GskTransformCategory.
2019-03-04 23:15:24 +01:00
Timm Bäder
58c2bea959
gl renderer: Stop determining the matrix category ourselves
...
Use the category we get from transform nodes and add ops_ API to supply
one when we set a graphene_matrix_t directly.
2019-02-25 08:37:06 +01:00
Timm Bäder
e14fe222e8
gl renderer: Don't add clip ops if the clip didn't change
2019-01-18 19:40:49 +01:00
Timm Bäder
1d3aa9207c
gl renderer: Add a clip stack
...
So we can check that the currently set clip is the first one and now
intersect with it. This first clip is always the entire viewport or the
entire render_area and we don't want to end up drawing things to a
texture because of it.
2018-12-31 12:44:02 +01:00
Timm Bäder
3ce45508e1
gl renderer: Track border width state separately
2018-12-07 16:36:10 +01:00
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
692ed4f994
gl renderer: Refactor render op builder
2018-12-02 14:17:18 +01:00
Timm Bäder
79cc8fb261
gl renderer: Apply offset with scale
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
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
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
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
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
fdfdada362
gl renderer: Increase GArray size by 2 up front
...
Since we know we will add two elements anyway.
2018-04-14 11:47:02 +02:00
Timm Bäder
5e81761ad0
gl renderer: Slightly change ops_offset behavior
...
Add the given delta to the current one instead of replacing it.
2018-04-11 19:14:54 +02:00
Timm Bäder
d7af16c8e4
gl renderer: Render everyhing according to MV scale
...
And not the surface's scale factor. This way the magnifier works.
2018-04-11 15:31:22 +02:00
Timm Bäder
cc0a69e101
gl renderer: Fix some crashes
...
When the first op is a modelview or projection change.
2018-03-27 18:20:52 +02:00
Timm Bäder
ba52be36c2
gl renderer: Set border program outline state
2018-03-15 18:17:57 +01:00
Timm Bäder
0a7880110e
gl renderer: Fix clipped borders
...
Stop abusing the clip rect for borders.
2018-03-15 18:11:57 +01:00
Timm Bäder
7a2d30323e
gl renderer: try doing outset box shadows
...
Still fall back in cases we can't handle that way.
2017-12-21 19:12:33 +01:00
Timm Bäder
f044b01549
gl renderer: Don't crash if the first op is an opacity one
2017-12-21 19:12:32 +01:00
Timm Bäder
075e6ac266
gl renderer: Fix shadow nodes if the child is a container
2017-12-21 19:12:32 +01:00
Timm Bäder
ab53ee7377
gl renderer: Don't render opacity nodes offscreen
...
We already drag a u_alpha uniform around in every shader, so use that
one.
2017-12-21 19:12:32 +01:00
Timm Bäder
7cc868910b
gl renderer: Avoid crashing tooltips
2017-12-21 19:12:31 +01:00
Timm Bäder
c9af94f6db
gl renderer: Keep track of border program state
2017-12-21 19:12:31 +01:00
Timm Bäder
5cdd46e38e
gl renderer: Remove superfluous modelview matrix changes
2017-12-21 19:12:31 +01:00