Cleanup: clang-format
[blender.git] / source / blender / draw / DRW_engine.h
index d790cee48bbef72b96f60be3b74a9e74bbc3d764..5919e100dddab0b10ef9d71f161c3931ebf5020d 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * Copyright 2016, Blender Foundation.
- *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
- * Contributor(s): Blender Institute
- *
+ * Copyright 2016, Blender Foundation.
  */
 
-/** \file DRW_engine.h
- *  \ingroup draw
+/** \file
+ * \ingroup draw
  */
 
 #ifndef __DRW_ENGINE_H__
 #define __DRW_ENGINE_H__
 
-#include "BLI_sys_types.h"  /* for bool */
+#include "BLI_sys_types.h" /* for bool */
 
 struct ARegion;
-struct CollectionEngineSettings;
-struct Depsgraph;
-struct DRWPass;
 struct DRWInstanceDataList;
-struct Main;
-struct Material;
-struct Scene;
+struct DRWPass;
+struct Depsgraph;
 struct DrawEngineType;
-struct ID;
-struct IDProperty;
-struct bContext;
-struct Object;
-struct ViewLayer;
-struct ViewContext;
-struct ViewportEngineData;
-struct View3D;
-struct rcti;
 struct GPUMaterial;
 struct GPUOffScreen;
 struct GPUViewport;
+struct ID;
+struct IDProperty;
+struct Main;
+struct Material;
+struct Object;
+struct RegionView3D;
 struct RenderEngine;
 struct RenderEngineType;
+struct Scene;
+struct View3D;
+struct ViewContext;
+struct ViewLayer;
+struct ViewportEngineData;
 struct WorkSpace;
+struct bContext;
+struct rcti;
 
 #include "DNA_object_enums.h"
 
 /* Buffer and textures used by the viewport by default */
 typedef struct DefaultFramebufferList {
-       struct GPUFrameBuffer *default_fb;
-       struct GPUFrameBuffer *color_only_fb;
-       struct GPUFrameBuffer *depth_only_fb;
-       struct GPUFrameBuffer *multisample_fb;
+  struct GPUFrameBuffer *default_fb;
+  struct GPUFrameBuffer *color_only_fb;
+  struct GPUFrameBuffer *depth_only_fb;
+  struct GPUFrameBuffer *multisample_fb;
 } DefaultFramebufferList;
 
 typedef struct DefaultTextureList {
-       struct GPUTexture *color;
-       struct GPUTexture *depth;
-       struct GPUTexture *multisample_color;
-       struct GPUTexture *multisample_depth;
+  struct GPUTexture *color;
+  struct GPUTexture *depth;
+  struct GPUTexture *multisample_color;
+  struct GPUTexture *multisample_depth;
 } DefaultTextureList;
 
 void DRW_engines_register(void);
@@ -76,56 +73,82 @@ void DRW_engines_free(void);
 bool DRW_engine_render_support(struct DrawEngineType *draw_engine_type);
 void DRW_engine_register(struct DrawEngineType *draw_engine_type);
 void DRW_engine_viewport_data_size_get(
-        const void *engine_type,
-        int *r_fbl_len, int *r_txl_len, int *r_psl_len, int *r_stl_len);
+    const void *engine_type, int *r_fbl_len, int *r_txl_len, int *r_psl_len, int *r_stl_len);
 
 typedef struct DRWUpdateContext {
-       struct Main *bmain;
-       struct Depsgraph *depsgraph;
-       struct Scene *scene;
-       struct ViewLayer *view_layer;
-       struct ARegion *ar;
-       struct View3D *v3d;
-       struct RenderEngineType *engine_type;
+  struct Main *bmain;
+  struct Depsgraph *depsgraph;
+  struct Scene *scene;
+  struct ViewLayer *view_layer;
+  struct ARegion *ar;
+  struct View3D *v3d;
+  struct RenderEngineType *engine_type;
 } DRWUpdateContext;
 void DRW_notify_view_update(const DRWUpdateContext *update_ctx);
 
-
-typedef enum eDRWSelectStage { DRW_SELECT_PASS_PRE = 1, DRW_SELECT_PASS_POST, } eDRWSelectStage;
-typedef bool (*DRW_SelectPassFn)(
-        eDRWSelectStage stage, void *user_data);
-typedef bool (*DRW_ObjectFilterFn)(
-        struct Object *ob, void *user_data);
+typedef enum eDRWSelectStage {
+  DRW_SELECT_PASS_PRE = 1,
+  DRW_SELECT_PASS_POST,
+} eDRWSelectStage;
+typedef bool (*DRW_SelectPassFn)(eDRWSelectStage stage, void *user_data);
+typedef bool (*DRW_ObjectFilterFn)(struct Object *ob, void *user_data);
 
 void DRW_draw_view(const struct bContext *C);
 void DRW_draw_region_engine_info(int xoffset, int yoffset);
 
-void DRW_draw_render_loop_ex(
-        struct Depsgraph *depsgraph,
-        struct RenderEngineType *engine_type,
-        struct ARegion *ar, struct View3D *v3d,
-        struct GPUViewport *viewport,
-        const struct bContext *evil_C);
-void DRW_draw_render_loop(
-        struct Depsgraph *depsgraph,
-        struct ARegion *ar, struct View3D *v3d,
-        struct GPUViewport *viewport);
-void DRW_draw_render_loop_offscreen(
-        struct Depsgraph *depsgraph,
-        struct RenderEngineType *engine_type,
-        struct ARegion *ar, struct View3D *v3d,
-        const bool draw_background,
-        struct GPUOffScreen *ofs,
-        struct GPUViewport *viewport);
-void DRW_draw_select_loop(
-        struct Depsgraph *depsgraph,
-        struct ARegion *ar, struct View3D *v3d,
-        bool use_obedit_skip, bool draw_surface, bool use_nearest, const struct rcti *rect,
-        DRW_SelectPassFn select_pass_fn, void *select_pass_user_data,
-        DRW_ObjectFilterFn object_filter_fn, void *object_filter_user_data);
-void DRW_draw_depth_loop(
-        struct Depsgraph *depsgraph,
-        struct ARegion *ar, struct View3D *v3d);
+void DRW_draw_render_loop_ex(struct Depsgraph *depsgraph,
+                             struct RenderEngineType *engine_type,
+                             struct ARegion *ar,
+                             struct View3D *v3d,
+                             struct GPUViewport *viewport,
+                             const struct bContext *evil_C);
+void DRW_draw_render_loop(struct Depsgraph *depsgraph,
+                          struct ARegion *ar,
+                          struct View3D *v3d,
+                          struct GPUViewport *viewport);
+void DRW_draw_render_loop_offscreen(struct Depsgraph *depsgraph,
+                                    struct RenderEngineType *engine_type,
+                                    struct ARegion *ar,
+                                    struct View3D *v3d,
+                                    const bool draw_background,
+                                    const bool do_color_management,
+                                    struct GPUOffScreen *ofs,
+                                    struct GPUViewport *viewport);
+void DRW_draw_select_loop(struct Depsgraph *depsgraph,
+                          struct ARegion *ar,
+                          struct View3D *v3d,
+                          bool use_obedit_skip,
+                          bool draw_surface,
+                          bool use_nearest,
+                          const struct rcti *rect,
+                          DRW_SelectPassFn select_pass_fn,
+                          void *select_pass_user_data,
+                          DRW_ObjectFilterFn object_filter_fn,
+                          void *object_filter_user_data);
+void DRW_draw_depth_loop(struct Depsgraph *depsgraph,
+                         struct ARegion *ar,
+                         struct View3D *v3d,
+                         struct GPUViewport *viewport);
+void DRW_draw_depth_loop_gpencil(struct Depsgraph *depsgraph,
+                                 struct ARegion *ar,
+                                 struct View3D *v3d,
+                                 struct GPUViewport *viewport);
+void DRW_draw_depth_object(struct ARegion *ar,
+                           struct GPUViewport *viewport,
+                           struct Object *object);
+void DRW_draw_select_id_object(struct Scene *scene,
+                               struct RegionView3D *rv3d,
+                               struct Object *ob,
+                               short select_mode,
+                               bool draw_facedot,
+                               uint initial_offset,
+                               uint *r_vert_offset,
+                               uint *r_edge_offset,
+                               uint *r_face_offset);
+
+void DRW_framebuffer_select_id_setup(struct ARegion *ar, const bool clear);
+void DRW_framebuffer_select_id_release(struct ARegion *ar);
+void DRW_framebuffer_select_id_read(const struct rcti *rect, uint *r_buf);
 
 /* grease pencil render */
 bool DRW_render_check_grease_pencil(struct Depsgraph *depsgraph);
@@ -133,7 +156,6 @@ void DRW_render_gpencil(struct RenderEngine *engine, struct Depsgraph *depsgraph
 void DRW_gpencil_freecache(struct Object *ob);
 
 /* This is here because GPUViewport needs it */
-void DRW_pass_free(struct DRWPass *pass);
 struct DRWInstanceDataList *DRW_instance_data_list_create(void);
 void DRW_instance_data_list_free(struct DRWInstanceDataList *idatalist);
 
@@ -142,6 +164,9 @@ void DRW_opengl_context_destroy(void);
 void DRW_opengl_context_enable(void);
 void DRW_opengl_context_disable(void);
 
+/* For garbage collection */
+void DRW_cache_free_old_batches(struct Main *bmain);
+
 /* Never use this. Only for closing blender. */
 void DRW_opengl_context_enable_ex(bool restore);
 void DRW_opengl_context_disable_ex(bool restore);