mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 10:50:10 +00:00
1b38cbd410
This makes the (currently single) storage buffer handled by GskGpuDescriptors. A side effect is that we now have support for multiple buffers in place. We just have to use it. Mixed into this commit is a complete rework of the pattern writer. Instead of writing straight into the buffer (complete with repeatedly backtracking when we have to do offscreens), write into a temporary buffer and copy into the storage buffer on committing.
62 lines
3.8 KiB
C
62 lines
3.8 KiB
C
#pragma once
|
|
|
|
#include "gskgputypesprivate.h"
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
#define GSK_TYPE_GPU_DESCRIPTORS (gsk_gpu_descriptors_get_type ())
|
|
#define GSK_GPU_DESCRIPTORS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSK_TYPE_GPU_DESCRIPTORS, GskGpuDescriptors))
|
|
#define GSK_GPU_DESCRIPTORS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GSK_TYPE_GPU_DESCRIPTORS, GskGpuDescriptorsClass))
|
|
#define GSK_IS_GPU_DESCRIPTORS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSK_TYPE_GPU_DESCRIPTORS))
|
|
#define GSK_IS_GPU_DESCRIPTORS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSK_TYPE_GPU_DESCRIPTORS))
|
|
#define GSK_GPU_DESCRIPTORS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSK_TYPE_GPU_DESCRIPTORS, GskGpuDescriptorsClass))
|
|
|
|
typedef struct _GskGpuDescriptorsClass GskGpuDescriptorsClass;
|
|
|
|
struct _GskGpuDescriptors
|
|
{
|
|
GObject parent_instance;
|
|
};
|
|
|
|
struct _GskGpuDescriptorsClass
|
|
{
|
|
GObjectClass parent_class;
|
|
|
|
gboolean (* add_image) (GskGpuDescriptors *self,
|
|
GskGpuImage *image,
|
|
GskGpuSampler sampler,
|
|
guint32 *out_id);
|
|
gboolean (* add_buffer) (GskGpuDescriptors *self,
|
|
GskGpuBuffer *buffer,
|
|
guint32 *out_id);
|
|
};
|
|
|
|
GType gsk_gpu_descriptors_get_type (void) G_GNUC_CONST;
|
|
|
|
gsize gsk_gpu_descriptors_get_n_images (GskGpuDescriptors *self);
|
|
gsize gsk_gpu_descriptors_get_n_buffers (GskGpuDescriptors *self);
|
|
void gsk_gpu_descriptors_set_size (GskGpuDescriptors *self,
|
|
gsize n_images,
|
|
gsize n_buffers);
|
|
GskGpuImage * gsk_gpu_descriptors_get_image (GskGpuDescriptors *self,
|
|
gsize id);
|
|
GskGpuSampler gsk_gpu_descriptors_get_sampler (GskGpuDescriptors *self,
|
|
gsize id);
|
|
gsize gsk_gpu_descriptors_find_image (GskGpuDescriptors *self,
|
|
guint32 descriptor);
|
|
GskGpuBuffer * gsk_gpu_descriptors_get_buffer (GskGpuDescriptors *self,
|
|
gsize id);
|
|
|
|
gboolean gsk_gpu_descriptors_add_image (GskGpuDescriptors *self,
|
|
GskGpuImage *image,
|
|
GskGpuSampler sampler,
|
|
guint32 *out_descriptor);
|
|
gboolean gsk_gpu_descriptors_add_buffer (GskGpuDescriptors *self,
|
|
GskGpuBuffer *buffer,
|
|
guint32 *out_descriptor);
|
|
|
|
|
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GskGpuDescriptors, g_object_unref)
|
|
|
|
G_END_DECLS
|