mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-25 13:11:13 +00:00
70c9521cae
Renderpasses get recreated every frame, but we keep render objects around. So if we keep the vertex buffer in the render object, we can also keep it around and just reuse it. Also, we only need one buffer for all the render passes, which is another bonus. The initial buffer size is chosen at 128kB. Maximized Nautilus, gnome-text-editor with an open file and widget-factory take ~100kB when doing a full redraw. Other apps are between 30-50kB usually. So I chose a value that is not too big, but catches ~90% of cases.
33 lines
1.5 KiB
C
33 lines
1.5 KiB
C
#pragma once
|
|
|
|
#include <gdk/gdk.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
typedef struct _GskVulkanBuffer GskVulkanBuffer;
|
|
|
|
typedef enum
|
|
{
|
|
GSK_VULKAN_READ = (1 << 0),
|
|
GSK_VULKAN_WRITE = (1 << 1),
|
|
GSK_VULKAN_READWRITE = GSK_VULKAN_READ | GSK_VULKAN_WRITE
|
|
} GskVulkanMapMode;
|
|
|
|
GskVulkanBuffer * gsk_vulkan_buffer_new (GdkVulkanContext *context,
|
|
gsize size);
|
|
GskVulkanBuffer * gsk_vulkan_buffer_new_storage (GdkVulkanContext *context,
|
|
gsize size);
|
|
GskVulkanBuffer * gsk_vulkan_buffer_new_map (GdkVulkanContext *context,
|
|
gsize size,
|
|
GskVulkanMapMode mode);
|
|
void gsk_vulkan_buffer_free (GskVulkanBuffer *buffer);
|
|
|
|
VkBuffer gsk_vulkan_buffer_get_buffer (GskVulkanBuffer *self);
|
|
gsize gsk_vulkan_buffer_get_size (GskVulkanBuffer *self);
|
|
|
|
guchar * gsk_vulkan_buffer_map (GskVulkanBuffer *self);
|
|
void gsk_vulkan_buffer_unmap (GskVulkanBuffer *self);
|
|
|
|
G_END_DECLS
|
|
|