summaryrefslogtreecommitdiff
path: root/gsk
Commit message (Collapse)AuthorAgeFilesLines
* Add a forgotten renameMatthias Clasen2017-09-301-3/+3
| | | | | When I renamed blend to texture, I overlooked that the color text pipeline also uses this shader. Fix it.
* Reshuffle things a little bitMatthias Clasen2017-09-303-41/+24
| | | | | | | | | | Instead of having a function with lots of arguments in GskVulkanRender that we call from GskVulkanRenderPass which then just calls back into GskVulkanRenderPass, just create the new render pass object locally, and an api to add it to the list that GskVulkanRender keeps. This makes it a lot easier to preserve all the relevant parameters from the parent render pass.
* Small simplificationMatthias Clasen2017-09-301-9/+6
| | | | | Just keep the viewport as a graphene_rect_t, we don't need to use the Vulkan type here.
* vulkan: Add a counter for intermediate texturesMatthias Clasen2017-09-302-0/+15
| | | | | Count how many pixels of intermediate textures we create. If we can count it, we can optimize it.
* CosmeticsMatthias Clasen2017-09-301-11/+15
| | | | Factor out a helper function.
* Fix a doc commentMatthias Clasen2017-09-301-1/+3
| | | | It was missing a return.
* Support repeat nodes in vulkanMatthias Clasen2017-09-291-5/+51
| | | | We can use the texture pipeline for this, with a repeating sampler.
* vulkan: Add a repeating samplerMatthias Clasen2017-09-293-9/+35
| | | | None of the render ops use it, yet.
* vulkan: Move sampler creation downMatthias Clasen2017-09-293-52/+72
| | | | This is in preparation of allowing multiple samplers.
* vulkan: Rename blend pipeline to textureMatthias Clasen2017-09-2919-178/+178
| | | | | This is what it does, and the name blend is easily confused with blend-mode.
* vulkan: Allow to control scaling in the blend pipelineMatthias Clasen2017-09-293-6/+9
| | | | | | Pass in a second rect that defines the size of the texture. Update the sole caller to pass in the same rect, for unchanged behavior.
* vulkan: Fix setup for dependent render passesMatthias Clasen2017-09-294-12/+29
| | | | We were not correctly preserving the modelview transform.
* gsk: Fix a typoMatthias Clasen2017-09-281-1/+1
| | | | | Repeating linear gradient nodes share most of the implementation with linear gradient nodes, but they shouldn't share the class name.
* gsk: remove gsk_blend_node_get_blend_mode from public apiMatthias Clasen2017-09-282-4/+1
| | | | | We don't have any other such getters in the public api at this point, so leave this one out as well.
* vulkan: Measure gpu timeMatthias Clasen2017-09-282-0/+16
| | | | | | Since this value is only meaningful if we wait for the rendering to end, we only keep this timer if GSK_RENDERING_MODE=sync is enabled.
* gsk: Change the profiler setupMatthias Clasen2017-09-281-8/+0
| | | | | | Move away from the idea of intra-frame sampling, since we only push samples once per frame, anyway. Instead, make the profiler keep a rolling average of the last n frames.
* gsk: Redo the sampling in the profilerMatthias Clasen2017-09-281-11/+25
| | | | | | Reset the min/max/average counters before calculating, and only print the values if we have samples. In addition, print the number of samples.
* gsk: Add a profile counter for vulkan render passesMatthias Clasen2017-09-282-0/+18
| | | | This is interesting now that we have multiple render passes.
* vulkan: Implement multiple render passesMatthias Clasen2017-09-285-170/+324
| | | | | | | | | Whenever we need a node as a texture, we now start a new render pass that renders the node into a new intermediate texture, and set up a semaphore to make the current render pass wait for it. As part of this reorganization, much of the setup and drawing code moved from gskvulkanrender.c to gskvulkanrenderpass.c.
* Add an api to get the vertex data for a render passMatthias Clasen2017-09-284-3/+27
|
* Add semaphores to the command buffer submit apiMatthias Clasen2017-09-284-18/+25
| | | | | | | | | Allow to pass in semaphores to wait for before executing and to signal after executing the command buffer. This just exposes the capabilities of the underlying Vulkan api. Update all callers to pass no semaphores, for now. We will use this in the future.
* Add an api to create intermediate texturesMatthias Clasen2017-09-282-3/+29
| | | | | The new function creates a vulkan image that is suitable for use as a framebuffer to render to and as a texture to read from.
* vulkan: Update the outset-shadow fragment shadersMatthias Clasen2017-09-263-0/+0
| | | | | These were missing the blur-radius parameter that is written by the vertex shader, causing Vulkan validation to complain.
* gsk: Fix Vulkan validation errors for image uploadMatthias Clasen2017-09-261-12/+4
| | | | | | I've finally figured out the right combination of src and dest stage and access flags to make all validation warnings go away. This commit only fixes the direct upload code.
* gsk: report fallback pixels as a profile counterMatthias Clasen2017-09-252-8/+28
| | | | | | This makes the value show up in the inspector without any extra work. We report the number per-frame, since that makes the most sense.
* gsk: Add a way to reset profiler countersMatthias Clasen2017-09-252-1/+28
| | | | | It is often useful to count things per-frame, and reset the counter afterwards.
* vulkan: add a frame counter to the profilerMatthias Clasen2017-09-251-0/+8
| | | | | This is just to match the gl renderer and to learn how counters work.
* gsk: Make profiler counters more usefulMatthias Clasen2017-09-252-2/+12
| | | | | Make it possible to have counters that get incremented by values other than 1.
* gsk: count fallback pixelsMatthias Clasen2017-09-251-2/+9
| | | | Always helps to have some measure of progress.
* gsk: Some g-i annotation fixesRico Tzschichholz2017-09-252-3/+3
|
* gsk: Documentation additionsMatthias Clasen2017-09-245-13/+120
| | | | | Document newly added apis, and ensure that all public apis are listed in the docs.
* Plug a memory leakMatthias Clasen2017-09-241-1/+2
| | | | | A function with ensure in the name would better check if the thing it is supposed to ensure already exists.
* gsk: Fix a prefix mishapMatthias Clasen2017-09-233-6/+6
| | | | There shouldn't be any gst_ functions in here...
* CosmeticsMatthias Clasen2017-09-231-71/+57
| | | | | Go back to a single GskVulkanOpRender that can handle 0, 1 or 2 sources.
* vulkan: Implement nonseparable blendmodesMatthias Clasen2017-09-235-7/+125
| | | | This is a directly-from-the-spec, unoptimized implementation.
* vulkan: Implement blend modesMatthias Clasen2017-09-2317-1/+515
| | | | | | | This is another example for a 2-texture shader. So far, only separable blend modes are implemented. The implementation is not optimized, with an if-else cascade in the shader.
* vulkan: fix a clip handling problemMatthias Clasen2017-09-221-1/+1
| | | | | | | | | We were looking at uninitialized memory here, instead of the type of the source clip, as we should. This showed up as mispositioned clip in the first frame of a crossfade stack transition, and also as overdraw in sliding stack transitions.
* vulkan: Implement crossfadeMatthias Clasen2017-09-2217-6/+373
| | | | This is the first shader using two textures. It almost works.
* vulkan: Drop GskVulkanPipelineLayoutMatthias Clasen2017-09-2223-149/+101
| | | | | | | We already move the descriptor set layout out of it, so we can just as well keep the pipeline layouts in the render object as well, and get rid of this extra object. Update all callers.
* Allow different pipeline layoutsMatthias Clasen2017-09-225-47/+62
| | | | | These are differentiated by the number of textures; currently we have shaders with 0 and 1 textures.
* Add a getter to the pipeline layout directly from the pipelineMatthias Clasen2017-09-222-0/+9
| | | | This is a step towards allowing multiple pipeline layouts.
* vulkan: Move descriptor set layout to the render objectMatthias Clasen2017-09-223-38/+29
| | | | | We want to maintain a single descriptor set layout while introducing multiple pipeline layouts, so split this off.
* gsk: vulkan: Drop an unused apiMatthias Clasen2017-09-212-29/+0
| | | | | We don't use the upload-single-region api anymore. No need to keep it around.
* vulkan: Batch uploads from the glyph cacheMatthias Clasen2017-09-211-22/+51
| | | | | This uses the new api that was introduced in the previous commit.
* vulkan: Add an api to update multiple image regionsMatthias Clasen2017-09-212-26/+77
| | | | | | | Instead of doing multiple copy commands with a tiny buffer for each glyph, we can just batch them all together. This also avoids the issue of creating multiple barriers for the same image.
* vulkan: Quiet another validation warningMatthias Clasen2017-09-211-0/+1
| | | | | It complains if a vertex shader has an out that is not matched to an in of the fragment shader.
* vulkan: Quiet another validation errorMatthias Clasen2017-09-201-2/+0
|
* Cosmetic changeMatthias Clasen2017-09-201-4/+2
|
* gsk: Make repeat nodes deserializableMatthias Clasen2017-09-201-1/+2
| | | | This was just a simple oversight.
* gsk: Fix serialization of text nodesMatthias Clasen2017-09-201-5/+7
|