Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/draw/intern/DRW_render.h')
-rw-r--r--source/blender/draw/intern/DRW_render.h59
1 files changed, 50 insertions, 9 deletions
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index 8c56d21746d..d531d8ad9f8 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -66,6 +66,15 @@
extern "C" {
#endif
+/* Uncomment to track unused resource bindings. */
+// #define DRW_UNUSED_RESOURCE_TRACKING
+
+#ifdef DRW_UNUSED_RESOURCE_TRACKING
+# define DRW_DEBUG_FILE_LINE_ARGS , const char *file, int line
+#else
+# define DRW_DEBUG_FILE_LINE_ARGS
+#endif
+
struct GPUBatch;
struct GPUMaterial;
struct GPUShader;
@@ -468,6 +477,10 @@ void DRW_shgroup_call_compute(DRWShadingGroup *shgroup,
int groups_x_len,
int groups_y_len,
int groups_z_len);
+/**
+ * \warning this keeps the ref to groups_ref until it actually dispatch.
+ */
+void DRW_shgroup_call_compute_ref(DRWShadingGroup *shgroup, int groups_ref[3]);
void DRW_shgroup_call_procedural_points(DRWShadingGroup *sh, Object *ob, uint point_count);
void DRW_shgroup_call_procedural_lines(DRWShadingGroup *sh, Object *ob, uint line_count);
void DRW_shgroup_call_procedural_triangles(DRWShadingGroup *sh, Object *ob, uint tri_count);
@@ -534,6 +547,11 @@ void DRW_shgroup_stencil_set(DRWShadingGroup *shgroup,
void DRW_shgroup_stencil_mask(DRWShadingGroup *shgroup, uint mask);
/**
+ * Issue a barrier command.
+ */
+void DRW_shgroup_barrier(DRWShadingGroup *shgroup, eGPUBarrier type);
+
+/**
* Issue a clear command.
*/
void DRW_shgroup_clear_framebuffer(DRWShadingGroup *shgroup,
@@ -559,12 +577,12 @@ void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup,
void DRW_shgroup_uniform_texture_ref(DRWShadingGroup *shgroup,
const char *name,
struct GPUTexture **tex);
-void DRW_shgroup_uniform_block(DRWShadingGroup *shgroup,
- const char *name,
- const struct GPUUniformBuf *ubo);
-void DRW_shgroup_uniform_block_ref(DRWShadingGroup *shgroup,
- const char *name,
- struct GPUUniformBuf **ubo);
+void DRW_shgroup_uniform_block_ex(DRWShadingGroup *shgroup,
+ const char *name,
+ const struct GPUUniformBuf *ubo DRW_DEBUG_FILE_LINE_ARGS);
+void DRW_shgroup_uniform_block_ref_ex(DRWShadingGroup *shgroup,
+ const char *name,
+ struct GPUUniformBuf **ubo DRW_DEBUG_FILE_LINE_ARGS);
void DRW_shgroup_uniform_float(DRWShadingGroup *shgroup,
const char *name,
const float *value,
@@ -624,9 +642,32 @@ void DRW_shgroup_uniform_vec4_array_copy(DRWShadingGroup *shgroup,
const char *name,
const float (*value)[4],
int arraysize);
-void DRW_shgroup_vertex_buffer(DRWShadingGroup *shgroup,
- const char *name,
- struct GPUVertBuf *vertex_buffer);
+void DRW_shgroup_vertex_buffer_ex(DRWShadingGroup *shgroup,
+ const char *name,
+ struct GPUVertBuf *vertex_buffer DRW_DEBUG_FILE_LINE_ARGS);
+void DRW_shgroup_vertex_buffer_ref_ex(DRWShadingGroup *shgroup,
+ const char *name,
+ struct GPUVertBuf **vertex_buffer DRW_DEBUG_FILE_LINE_ARGS);
+
+#ifdef DRW_UNUSED_RESOURCE_TRACKING
+# define DRW_shgroup_vertex_buffer(shgroup, name, vert) \
+ DRW_shgroup_vertex_buffer_ex(shgroup, name, vert, __FILE__, __LINE__)
+# define DRW_shgroup_vertex_buffer_ref(shgroup, name, vert) \
+ DRW_shgroup_vertex_buffer_ref_ex(shgroup, name, vert, __FILE__, __LINE__)
+# define DRW_shgroup_uniform_block(shgroup, name, ubo) \
+ DRW_shgroup_uniform_block_ex(shgroup, name, ubo, __FILE__, __LINE__)
+# define DRW_shgroup_uniform_block_ref(shgroup, name, ubo) \
+ DRW_shgroup_uniform_block_ref_ex(shgroup, name, ubo, __FILE__, __LINE__)
+#else
+# define DRW_shgroup_vertex_buffer(shgroup, name, vert) \
+ DRW_shgroup_vertex_buffer_ex(shgroup, name, vert)
+# define DRW_shgroup_vertex_buffer_ref(shgroup, name, vert) \
+ DRW_shgroup_vertex_buffer_ref_ex(shgroup, name, vert)
+# define DRW_shgroup_uniform_block(shgroup, name, ubo) \
+ DRW_shgroup_uniform_block_ex(shgroup, name, ubo)
+# define DRW_shgroup_uniform_block_ref(shgroup, name, ubo) \
+ DRW_shgroup_uniform_block_ref_ex(shgroup, name, ubo)
+#endif
bool DRW_shgroup_is_empty(DRWShadingGroup *shgroup);