summaryrefslogtreecommitdiff
path: root/gsk/ngl/gskngldriverprivate.h
diff options
context:
space:
mode:
Diffstat (limited to 'gsk/ngl/gskngldriverprivate.h')
-rw-r--r--gsk/ngl/gskngldriverprivate.h251
1 files changed, 0 insertions, 251 deletions
diff --git a/gsk/ngl/gskngldriverprivate.h b/gsk/ngl/gskngldriverprivate.h
deleted file mode 100644
index 42b6263ec1..0000000000
--- a/gsk/ngl/gskngldriverprivate.h
+++ /dev/null
@@ -1,251 +0,0 @@
-/* gskngldriverprivate.h
- *
- * Copyright 2020 Christian Hergert <chergert@redhat.com>
- *
- * This file is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This file is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-#ifndef __GSK_NGL_DRIVER_PRIVATE_H__
-#define __GSK_NGL_DRIVER_PRIVATE_H__
-
-#include <gdk/gdkgltextureprivate.h>
-
-#include "gskngltypesprivate.h"
-#include "gskngltextureprivate.h"
-
-G_BEGIN_DECLS
-
-enum {
- UNIFORM_SHARED_ALPHA,
- UNIFORM_SHARED_SOURCE,
- UNIFORM_SHARED_CLIP_RECT,
- UNIFORM_SHARED_VIEWPORT,
- UNIFORM_SHARED_PROJECTION,
- UNIFORM_SHARED_MODELVIEW,
-
- UNIFORM_SHARED_LAST
-};
-
-enum {
- UNIFORM_CUSTOM_SIZE = UNIFORM_SHARED_LAST,
- UNIFORM_CUSTOM_TEXTURE1,
- UNIFORM_CUSTOM_TEXTURE2,
- UNIFORM_CUSTOM_TEXTURE3,
- UNIFORM_CUSTOM_TEXTURE4,
- UNIFORM_CUSTOM_ARG0,
- UNIFORM_CUSTOM_ARG1,
- UNIFORM_CUSTOM_ARG2,
- UNIFORM_CUSTOM_ARG3,
- UNIFORM_CUSTOM_ARG4,
- UNIFORM_CUSTOM_ARG5,
- UNIFORM_CUSTOM_ARG6,
- UNIFORM_CUSTOM_ARG7,
-
- UNIFORM_CUSTOM_LAST
-};
-
-typedef struct {
- gconstpointer pointer;
- float scale_x;
- float scale_y;
- int filter;
- int pointer_is_child;
- graphene_rect_t parent_rect; /* Valid when pointer_is_child */
-} GskTextureKey;
-
-#define GSK_NGL_NO_UNIFORMS CONCAT_EXPANDED(UNIFORM_INVALID_,__COUNTER__)
-#define CONCAT_EXPANDED(a,b) CONCAT_EXPANDED2(a,b)
-#define CONCAT_EXPANDED2(a,b) a##b
-#define GSK_NGL_ADD_UNIFORM(pos, KEY, name) UNIFORM_##KEY = UNIFORM_SHARED_LAST + pos,
-#define GSK_NGL_DEFINE_PROGRAM(name, resource, uniforms) enum { uniforms };
-# include "gsknglprograms.defs"
-#undef GSK_NGL_DEFINE_PROGRAM
-#undef GSK_NGL_ADD_UNIFORM
-#undef GSK_NGL_NO_UNIFORMS
-#undef CONCAT_EXPANDED
-#undef CONCAT_EXPANDED2
-
-#define GSK_TYPE_NGL_DRIVER (gsk_ngl_driver_get_type())
-
-G_DECLARE_FINAL_TYPE (GskNglDriver, gsk_ngl_driver, GSK, NGL_DRIVER, GObject)
-
-struct _GskNglRenderTarget
-{
- guint framebuffer_id;
- guint texture_id;
- int min_filter;
- int mag_filter;
- int format;
- int width;
- int height;
-};
-
-struct _GskNglDriver
-{
- GObject parent_instance;
-
- GskNglCommandQueue *shared_command_queue;
- GskNglCommandQueue *command_queue;
-
- GskNglGlyphLibrary *glyphs;
- GskNglIconLibrary *icons;
- GskNglShadowLibrary *shadows;
-
- GArray *texture_pool;
- GHashTable *textures;
- GHashTable *key_to_texture_id;
- GHashTable *texture_id_to_key;
-
- GPtrArray *atlases;
-
- GHashTable *shader_cache;
-
- GArray *autorelease_framebuffers;
- GPtrArray *render_targets;
-
-#define GSK_NGL_NO_UNIFORMS
-#define GSK_NGL_ADD_UNIFORM(pos, KEY, name)
-#define GSK_NGL_DEFINE_PROGRAM(name, resource, uniforms) \
- GskNglProgram *name ## _no_clip; \
- GskNglProgram *name ## _rect_clip; \
- GskNglProgram *name;
-# include "gsknglprograms.defs"
-#undef GSK_NGL_NO_UNIFORMS
-#undef GSK_NGL_ADD_UNIFORM
-#undef GSK_NGL_DEFINE_PROGRAM
-
- gint64 current_frame_id;
-
- /* Used to reduce number of comparisons */
- guint stamps[UNIFORM_SHARED_LAST];
-
- guint debug : 1;
- guint in_frame : 1;
-};
-
-GskNglDriver *gsk_ngl_driver_for_display (GdkDisplay *display,
- gboolean debug_shaders,
- GError **error);
-GskNglCommandQueue *gsk_ngl_driver_create_command_queue (GskNglDriver *self,
- GdkGLContext *context);
-GdkGLContext *gsk_ngl_driver_get_context (GskNglDriver *self);
-gboolean gsk_ngl_driver_create_render_target (GskNglDriver *self,
- int width,
- int height,
- int format,
- int min_filter,
- int mag_filter,
- GskNglRenderTarget **render_target);
-guint gsk_ngl_driver_release_render_target (GskNglDriver *self,
- GskNglRenderTarget *render_target,
- gboolean release_texture);
-void gsk_ngl_driver_begin_frame (GskNglDriver *self,
- GskNglCommandQueue *command_queue);
-void gsk_ngl_driver_end_frame (GskNglDriver *self);
-void gsk_ngl_driver_after_frame (GskNglDriver *self);
-GdkTexture *gsk_ngl_driver_create_gdk_texture (GskNglDriver *self,
- guint texture_id);
-void gsk_ngl_driver_cache_texture (GskNglDriver *self,
- const GskTextureKey *key,
- guint texture_id);
-guint gsk_ngl_driver_load_texture (GskNglDriver *self,
- GdkTexture *texture,
- int min_filter,
- int mag_filter);
-GskNglTexture *gsk_ngl_driver_create_texture (GskNglDriver *self,
- float width,
- float height,
- int format,
- int min_filter,
- int mag_filter);
-void gsk_ngl_driver_release_texture (GskNglDriver *self,
- GskNglTexture *texture);
-void gsk_ngl_driver_release_texture_by_id (GskNglDriver *self,
- guint texture_id);
-GskNglTexture *gsk_ngl_driver_mark_texture_permanent (GskNglDriver *self,
- guint texture_id);
-void gsk_ngl_driver_add_texture_slices (GskNglDriver *self,
- GdkTexture *texture,
- GskNglTextureSlice **out_slices,
- guint *out_n_slices);
-GskNglProgram *gsk_ngl_driver_lookup_shader (GskNglDriver *self,
- GskGLShader *shader,
- GError **error);
-GskNglTextureAtlas *gsk_ngl_driver_create_atlas (GskNglDriver *self);
-
-#ifdef G_ENABLE_DEBUG
-void gsk_ngl_driver_save_atlases_to_png (GskNglDriver *self,
- const char *directory);
-#endif
-
-static inline GskNglTexture *
-gsk_ngl_driver_get_texture_by_id (GskNglDriver *self,
- guint texture_id)
-{
- return g_hash_table_lookup (self->textures, GUINT_TO_POINTER (texture_id));
-}
-
-/**
- * gsk_ngl_driver_lookup_texture:
- * @self: a `GskNglDriver`
- * @key: the key for the texture
- *
- * Looks up a texture in the texture cache by @key.
- *
- * If the texture could not be found, then zero is returned.
- *
- * Returns: a positive integer if the texture was found; otherwise 0.
- */
-static inline guint
-gsk_ngl_driver_lookup_texture (GskNglDriver *self,
- const GskTextureKey *key)
-{
- gpointer id;
-
- if (g_hash_table_lookup_extended (self->key_to_texture_id, key, NULL, &id))
- {
- GskNglTexture *texture = g_hash_table_lookup (self->textures, id);
-
- if (texture != NULL)
- texture->last_used_in_frame = self->current_frame_id;
-
- return GPOINTER_TO_UINT (id);
- }
-
- return 0;
-}
-
-static inline void
-gsk_ngl_driver_slice_texture (GskNglDriver *self,
- GdkTexture *texture,
- GskNglTextureSlice **out_slices,
- guint *out_n_slices)
-{
- GskNglTexture *t;
-
- if ((t = gdk_texture_get_render_data (texture, self)))
- {
- *out_slices = t->slices;
- *out_n_slices = t->n_slices;
- return;
- }
-
- gsk_ngl_driver_add_texture_slices (self, texture, out_slices, out_n_slices);
-}
-
-G_END_DECLS
-
-#endif /* __GSK_NGL_DRIVER_PRIVATE_H__ */