summaryrefslogtreecommitdiff
path: root/gsk
Commit message (Collapse)AuthorAgeFilesLines
* vulkan: Try combining draw callsBenjamin Otte2016-12-241-3/+9
| | | | | This gives a 5-7% speedup in the case where we're just drawing N colors and nothing else. So it;s not tremendously useful, but noticeable.
* gsk: Fix memory leak in gsk_render_node_write_to_file()Garrett Regier2016-12-231-0/+1
|
* gsk: Add docs and error handling to serialization APIBenjamin Otte2016-12-235-57/+157
|
* gsk: Add gsk_render_node_write_to_file()Benjamin Otte2016-12-232-0/+40
| | | | | For when you're in a debugger and need to have a closer look at this node...
* gsk: Warn on cairo errors during gsk_render_node_draw()Benjamin Otte2016-12-231-0/+9
| | | | | It's the same warning we use inside GTK for when stuff weirdly goes wrong.
* gsk: Include config.hBenjamin Otte2016-12-231-0/+2
| | | | | | The more you know: Not including config.h causes the public API implemented in this file to not be exported in the resulting library.
* gsk: Implement gsk_renderer_render_texture() on GLBenjamin Otte2016-12-231-26/+92
|
* vulkan: Implement gsk_renderer_render_texture()Benjamin Otte2016-12-238-24/+204
|
* gsk: Add gsk_texture_download() APIBenjamin Otte2016-12-234-3/+105
| | | | Now users can download pixels and make everything slooooooow.
* gsk: Rename to gsk_texture_download_surface()Benjamin Otte2016-12-235-12/+12
| | | | | I want to reuse the name gsk_texture_download() for downloading the actual bytes.
* gsk: Add gsk_renderer_render_texture()Benjamin Otte2016-12-234-18/+140
| | | | | | | | ... and implement it for the Cairo renderer. It's an API that instructs a renderer to render to a texture. So far this is mostly meant to be used for testing, but I could imagine it being useful for rendering DND icons.
* gskcairo: Don't store the viewport in the global structBenjamin Otte2016-12-231-7/+6
| | | | Just query it locally.
* gsk: Don't overdraw with transparentBenjamin Otte2016-12-231-6/+0
| | | | | | | That code doesn't do anything. And what the code should be doing (clearing the abckground) isn't necessary as cairo drawing is guaranteed to clear the surface.
* rendernode: Fix typoBenjamin Otte2016-12-231-1/+1
|
* gsk: Remove nonexisting functionsBenjamin Otte2016-12-231-8/+0
| | | | | The function was removed when gsk_render_node_draw() was and gsk_renderer_realize() was refactored respectively.
* gsk: Export gsk_render_node_get_bounds()Benjamin Otte2016-12-232-2/+3
| | | | I'll need it in tests/testsuite soon.
* gsk: Add gsk_render_node_serialize/deserialize()Benjamin Otte2016-12-234-0/+989
| | | | | | | This does a conversion to/from GBytes and is intended for writing tests. It's really crude but it works. And that probably means Alex will (ab)use it for broadway.
* gsk: Remove spread member from GskShadowBenjamin Otte2016-12-231-1/+0
| | | | | | | | I had originally thought I'd use GskShadow for box-shadow, but didn't in the end. So now it's only used for text-shadow and icon-shadow, and those don't have a spread.
* Fix distcheckMatthias Clasen2016-12-211-1/+1
|
* gsk: Fix build of 22110ef5a480fbddf9d20f510a64f4524a52718fRico Tzschichholz2016-12-211-2/+2
|
* GskRenderNode: Use C99 flexible arrays to avoid extra allocationAlexander Larsson2016-12-213-36/+28
| | | | | | | | | | | | Instead of a separate allocation for any arrays in the render node we allocate these as part of the render node itself, using C99 flexible arrays. This leads to less allocations, which is nice, but the major reason for this is that it allows us to change the allocation scheme further in the future. For instance, we want to do stack-like allocation so that all the render-nodes for an entire frame are allocated in one (or a few) chunks.
* gsk: Add bounds member to RenderNodeAlexander Larsson2016-12-215-255/+90
| | | | | | | | | | | Instead of constantly recalculating this (especially recursively for parents!) we do it only on construction, because everything is immutable anyway. Also, most nodes had a bounds already and can use the new parent member instead. We also do direct access to the node bounds rather than calling gsk_render_node_get_bounds in various places, which means we do less copying.
* gsk: Drop gsk_render_node_make_immutable, nodes are always immutableAlexander Larsson2016-12-214-153/+3
|
* gsk: Add GskOutsetShadowNodeBenjamin Otte2016-12-203-3/+226
|
* gsk: Add GskInsetShadowNodeBenjamin Otte2016-12-203-0/+479
| | | | | And again lots of shadow code gets copied to GSK. But we're now almost at a stage where widget-factory does not use cairo nodes anymore.
* gsk: Add contains/intersect functions for GskRoundedRectBenjamin Otte2016-12-202-2/+129
| | | | ... and use them.
* gsk: Add GskShadowNodeBenjamin Otte2016-12-206-1/+318
| | | | | | | ... and make the icon rendering code use it. This requires moving even more shadow renering code into GSK, but so be it. At least the "shadows not implemented" warning is now gone!
* gsk: Move gtk/gtkcairoblur.c to gsk/gskcairoblur.cBenjamin Otte2016-12-203-0/+330
|
* gsk: Add GskBorderNodeBenjamin Otte2016-12-204-0/+197
| | | | | | | | The node draws a solid CSS border, which can be used to cover everything but dashed and dotted borders (double, groove, inset, ...). For different border styles, we overlay multiple nodes and set their colors to transparent for sides with non-matching styles.
* gsk: Add gsk_rounded_rect_shrink()Benjamin Otte2016-12-202-0/+78
| | | | | ... and replace _gtk_rounded_box_grow() and _gtk_rounded_box_shrink() with it.
* vulkan: Get rid of color in push constantsBenjamin Otte2016-12-202-5/+0
| | | | | The color comes in instance data now, no need to abuse push constants for it.
* vulkan: Remove color from push constantsBenjamin Otte2016-12-203-39/+7
| | | | It's now handled by the color pipeline.
* vulkan: Pass color rects in instance dataBenjamin Otte2016-12-207-26/+49
| | | | | This way, we don't need push constants or per-vertex data, we can render colored rectangles completely via instance data.
* vulkan: Don't pass texture coordinates to the color pipelineBenjamin Otte2016-12-205-21/+7
|
* vulkan: Get vertex description from pipeline subclassBenjamin Otte2016-12-204-26/+82
|
* vulkan: Split color and blend pipelinesBenjamin Otte2016-12-205-10/+165
|
* vulkan: Move vertex data tracking to the pipeline subclassBenjamin Otte2016-12-207-69/+133
| | | | That way, different pipelines can draw different kinds of data.
* vulkan: Add GskVulkanBlendPipelineBenjamin Otte2016-12-206-6/+71
| | | | So far that's just a simple pipeline that doesn't do anything.
* vulkan: Make GskVulkanPipeline derivableBenjamin Otte2016-12-202-17/+31
|
* gsk: Add cross-fade nodeBenjamin Otte2016-12-204-1/+148
| | | | And implement stack crossfades with it.
* vulkan: Batch upload image barriers togetherBenjamin Otte2016-12-203-161/+199
| | | | Doesn't seem to help much though...
* vulkan: Add GskVulkanUploaderBenjamin Otte2016-12-207-60/+108
| | | | It's the thing that makes sure pixels end up on the GPU.
* vulkan: Split out command poolBenjamin Otte2016-12-2010-117/+210
| | | | | | This way we can pass the command pool around. And that allows us to allocate and submitcustom buffers. And that is necessary to make staging images work.
* vulkan: Implement staging-buffer image uploadBenjamin Otte2016-12-205-9/+152
| | | | | This is not enabled by default. Use GSK_RENDERING_MODE=staging-buffer to use the code.
* gsk: Check for NULL in calls to gsk_cairo_node_get_surface()Benjamin Otte2016-12-202-3/+9
| | | | | That function does actually sometimes return NULL and is documented to do so, so handle that case in the renderers (by omitting the node).
* gsk: Implement linear gradient render nodesBenjamin Otte2016-12-203-0/+181
|
* gsk: Add blend nodesBenjamin Otte2016-12-206-52/+188
| | | | Implement blend mode support in GTK background compositing with it.
* gsk: Add missing blend modesBenjamin Otte2016-12-201-1/+9
| | | | This brings GSK blend modes in line with the CSS spec.
* vulkan: Add infrastructure for multiple pipelinesBenjamin Otte2016-12-207-8/+102
| | | | And use it to draw solid colors with a 2nd pipeline.
* vulkan: Split PipelineLayout into its own objectBenjamin Otte2016-12-205-64/+129
| | | | This way, we can share the layout between different pipelines.