gtk/gsk
Matthias Clasen 3aaea0ef40 Clip intermediate textures
In some cases, we were creating gigantic intermediate textures
only to clip out a small section afterwards (e.g. in the listbox
example in gtk4-demo). This is wasteful if we apply effects on
the texture, such as blur or color-matrix. So, clip the dimensions
of the intermediate texture with the current clip. To make this
feasible, we move the texture coordinate computation out of the
pipeline setup functions into the node_as_texture function where
this clipping happens.

One extra complication we encounter is that the node might get
clipped away completely. Since Vulkan does not allow to create
empty images, we bail out in this case and not draw anything.

With these changes, the listbox example in gtk4-demo goes from
32M pixels of intermediate texture to 320000.
2017-10-01 19:22:04 -04:00
..
resources vulkan: Rename blend pipeline to texture 2017-09-29 23:08:09 -04:00
gen-gsk-gresources-xml.py build: Rename GSK resource generator script 2017-05-03 15:10:57 +01:00
gsk.h gsk: Add GskRoundedRect 2016-12-20 18:01:10 +01:00
gskcairoblur.c gsk: Add GskShadowNode 2016-12-20 18:01:12 +01:00
gskcairoblurprivate.h gsk: Add GskShadowNode 2016-12-20 18:01:12 +01:00
gskcairorenderer.c gsk: Add gsk_renderer_render_texture() 2016-12-23 08:11:01 +01:00
gskcairorendererprivate.h cairorenderer: Remove nonexisting function from header 2016-11-30 15:15:08 +01:00
gskdebug.c Add some debug output for the glyph cache 2017-09-20 23:26:14 -04:00
gskdebugprivate.h Add some debug output for the glyph cache 2017-09-20 23:26:14 -04:00
gskenums.h Cosmetic change 2017-09-20 23:26:15 -04:00
gskenumtypes.c.template
gskenumtypes.h.template
gskgldriver.c gsk: Rename to gsk_texture_download_surface() 2016-12-23 08:11:01 +01:00
gskgldriverprivate.h gsktexture: Allow attaching render data to textures 2016-11-16 17:36:33 +01:00
gskglprofiler.c gsk: Bind GL context to the GL profiler 2016-10-18 11:49:10 +01:00
gskglprofilerprivate.h gsk: Bind GL context to the GL profiler 2016-10-18 11:49:10 +01:00
gskglrenderer.c glrenderer: Reuse the GArray for render items 2017-03-31 09:50:39 +02:00
gskglrendererprivate.h
gskprivate.c More work on text nodes 2017-09-10 14:36:26 -04:00
gskprivate.h Add an api to get the vertex data for a render pass 2017-09-28 08:39:22 -04:00
gskprofiler.c gsk: Redo the sampling in the profiler 2017-09-28 10:25:49 -04:00
gskprofilerprivate.h gsk: Add a way to reset profiler counters 2017-09-25 20:58:10 -04:00
gskrenderer.c gsk: Change the profiler setup 2017-09-28 10:26:01 -04:00
gskrenderer.h gsk: Add gsk_renderer_render_texture() 2016-12-23 08:11:01 +01:00
gskrendererprivate.h gsk: Add gsk_renderer_render_texture() 2016-12-23 08:11:01 +01:00
gskrendernode.c gsk: Documentation additions 2017-09-24 22:26:39 -04:00
gskrendernode.h gsk: remove gsk_blend_node_get_blend_mode from public api 2017-09-28 19:39:16 -04:00
gskrendernodeimpl.c Fix a doc comment 2017-09-30 17:58:23 -04:00
gskrendernodeprivate.h gsk: remove gsk_blend_node_get_blend_mode from public api 2017-09-28 19:39:16 -04:00
gskroundedrect.c gsk: Documentation additions 2017-09-24 22:26:39 -04:00
gskroundedrect.h GSK: Fix a bunch of warnings from the GIR scanner 2017-03-27 20:22:07 +01:00
gskroundedrectprivate.h vulkan: Fold clip into push constants 2016-12-24 06:19:16 +01:00
gskshaderbuilder.c GtkShaderBuilder Fix copy/paste error in precondition 2017-03-17 18:35:43 +01:00
gskshaderbuilderprivate.h gsk: Consolidate program creation and storage 2016-10-18 11:49:07 +01:00
gsktexture.c gsk: Some g-i annotation fixes 2017-09-25 11:15:14 +02:00
gsktexture.h gsk: Turn GskTexture into a GObject 2017-01-01 19:53:36 +01:00
gsktextureprivate.h gsk: Turn GskTexture into a GObject 2017-01-01 19:53:36 +01:00
gsktypes.h gsk: Add GskTexture 2016-11-08 20:31:34 +01:00
gskvulkanblendmodepipeline.c Clip intermediate textures 2017-10-01 19:22:04 -04:00
gskvulkanblendmodepipelineprivate.h vulkan: Implement blend modes 2017-09-23 01:59:50 -04:00
gskvulkanblurpipeline.c Clip intermediate textures 2017-10-01 19:22:04 -04:00
gskvulkanblurpipelineprivate.h Clip intermediate textures 2017-10-01 19:22:04 -04:00
gskvulkanborderpipeline.c vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkanborderpipelineprivate.h vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkanboxshadowpipeline.c vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkanboxshadowpipelineprivate.h vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkanbuffer.c vulkan: Implement gsk_renderer_render_texture() 2016-12-23 08:11:01 +01:00
gskvulkanbufferprivate.h vulkan: Implement gsk_renderer_render_texture() 2016-12-23 08:11:01 +01:00
gskvulkanclip.c vulkan: fix a clip handling problem 2017-09-22 22:16:10 -04:00
gskvulkanclipprivate.h Typo fix 2017-09-04 23:32:31 -04:00
gskvulkancolorpipeline.c vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkancolorpipelineprivate.h vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkancolortextpipeline.c vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkancolortextpipelineprivate.h vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkancommandpool.c Add semaphores to the command buffer submit api 2017-09-28 08:39:22 -04:00
gskvulkancommandpoolprivate.h Add semaphores to the command buffer submit api 2017-09-28 08:39:22 -04:00
gskvulkancrossfadepipeline.c Clip intermediate textures 2017-10-01 19:22:04 -04:00
gskvulkancrossfadepipelineprivate.h vulkan: Implement crossfade 2017-09-22 22:16:10 -04:00
gskvulkaneffectpipeline.c Clip intermediate textures 2017-10-01 19:22:04 -04:00
gskvulkaneffectpipelineprivate.h Clip intermediate textures 2017-10-01 19:22:04 -04:00
gskvulkanglyphcache.c vulkan: Batch uploads from the glyph cache 2017-09-21 13:45:01 -04:00
gskvulkanglyphcacheprivate.h Add simple aging for the glyph cache 2017-09-20 23:26:14 -04:00
gskvulkanimage.c Add semaphores to the command buffer submit api 2017-09-28 08:39:22 -04:00
gskvulkanimageprivate.h Add an api to create intermediate textures 2017-09-28 08:39:22 -04:00
gskvulkanlineargradientpipeline.c vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkanlineargradientpipelineprivate.h vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkanmemory.c gsk: Loads of work on Vulkan backend 2016-12-09 18:35:51 +01:00
gskvulkanmemoryprivate.h gsk: Loads of work on Vulkan backend 2016-12-09 18:35:51 +01:00
gskvulkanpipeline.c vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkanpipelineprivate.h vulkan: Implement crossfade 2017-09-22 22:16:10 -04:00
gskvulkanpushconstants.c gsk: Fix a prefix mishap 2017-09-23 13:15:30 -04:00
gskvulkanpushconstantsprivate.h gsk: Fix a prefix mishap 2017-09-23 13:15:30 -04:00
gskvulkanrender.c Add a forgotten rename 2017-09-30 17:58:23 -04:00
gskvulkanrenderer.c vulkan: Add a counter for intermediate textures 2017-09-30 17:58:23 -04:00
gskvulkanrendererprivate.h Add simple aging for the glyph cache 2017-09-20 23:26:14 -04:00
gskvulkanrenderpass.c Clip intermediate textures 2017-10-01 19:22:04 -04:00
gskvulkanrenderpassprivate.h vulkan: Fix setup for dependent render passes 2017-09-29 15:58:16 -04:00
gskvulkanrenderprivate.h Reshuffle things a little bit 2017-09-30 17:58:23 -04:00
gskvulkanshader.c gsk: Loads of work on Vulkan backend 2016-12-09 18:35:51 +01:00
gskvulkanshaderprivate.h gsk: Loads of work on Vulkan backend 2016-12-09 18:35:51 +01:00
gskvulkantextpipeline.c vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkantextpipelineprivate.h vulkan: Drop GskVulkanPipelineLayout 2017-09-22 22:16:09 -04:00
gskvulkantexturepipeline.c Clip intermediate textures 2017-10-01 19:22:04 -04:00
gskvulkantexturepipelineprivate.h vulkan: Rename blend pipeline to texture 2017-09-29 23:08:09 -04:00
meson.build vulkan: Rename blend pipeline to texture 2017-09-29 23:08:09 -04:00