[Bf-blender-cvs] [fd5c1972cd5] master: Revert "DRW: Refactor to support draw call batching"
Clément Foucault
noreply at git.blender.org
Fri Sep 13 23:03:17 CEST 2019
Commit: fd5c1972cd5c8a826c0d40effb0e2d367389666a
Author: Clément Foucault
Date: Fri Sep 13 23:02:45 2019 +0200
Branches: master
https://developer.blender.org/rBfd5c1972cd5c8a826c0d40effb0e2d367389666a
Revert "DRW: Refactor to support draw call batching"
This reverts commit ce34a6b0d727bbde6ae373afa8ec6c42bc8980ce.
===================================================================
M source/blender/blenlib/BLI_memblock.h
M source/blender/blenlib/intern/BLI_memblock.c
M source/blender/draw/engines/eevee/eevee_materials.c
M source/blender/draw/engines/gpencil/gpencil_draw_utils.c
M source/blender/draw/engines/gpencil/gpencil_engine.c
M source/blender/draw/engines/gpencil/gpencil_engine.h
M source/blender/draw/engines/gpencil/gpencil_render.c
M source/blender/draw/engines/gpencil/shaders/gpencil_edit_point_vert.glsl
M source/blender/draw/engines/gpencil/shaders/gpencil_fill_vert.glsl
M source/blender/draw/engines/gpencil/shaders/gpencil_point_vert.glsl
M source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl
M source/blender/draw/engines/workbench/shaders/workbench_forward_depth_frag.glsl
M source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl
M source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl
M source/blender/draw/engines/workbench/shaders/workbench_prepass_vert.glsl
M source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl
M source/blender/draw/engines/workbench/shaders/workbench_volume_vert.glsl
M source/blender/draw/engines/workbench/workbench_deferred.c
M source/blender/draw/engines/workbench/workbench_forward.c
M source/blender/draw/engines/workbench/workbench_materials.c
M source/blender/draw/engines/workbench/workbench_private.h
M source/blender/draw/engines/workbench/workbench_volume.c
M source/blender/draw/intern/DRW_render.h
M source/blender/draw/intern/draw_anim_viz.c
M source/blender/draw/intern/draw_common.c
M source/blender/draw/intern/draw_hair.c
M source/blender/draw/intern/draw_instance_data.c
M source/blender/draw/intern/draw_instance_data.h
M source/blender/draw/intern/draw_manager.c
M source/blender/draw/intern/draw_manager.h
M source/blender/draw/intern/draw_manager_data.c
M source/blender/draw/intern/draw_manager_exec.c
M source/blender/draw/modes/edit_curve_mode.c
M source/blender/draw/modes/object_mode.c
M source/blender/draw/modes/overlay_mode.c
M source/blender/draw/modes/shaders/common_view_lib.glsl
M source/blender/draw/modes/shaders/object_lightprobe_grid_vert.glsl
M source/blender/draw/modes/shaders/object_outline_detect_frag.glsl
M source/blender/draw/modes/shaders/object_outline_prepass_frag.glsl
M source/blender/draw/modes/shaders/object_outline_prepass_geom.glsl
M source/blender/draw/modes/shaders/object_outline_prepass_vert.glsl
M source/blender/editors/mesh/editmesh_intersect.c
M source/blender/gpu/CMakeLists.txt
M source/blender/gpu/GPU_batch.h
M source/blender/gpu/GPU_shader_interface.h
M source/blender/gpu/GPU_viewport.h
M source/blender/gpu/intern/gpu_batch.c
M source/blender/gpu/intern/gpu_codegen.c
M source/blender/gpu/intern/gpu_shader.c
M source/blender/gpu/intern/gpu_shader_interface.c
M source/blender/gpu/intern/gpu_viewport.c
D source/blender/gpu/shaders/gpu_shader_common_obinfos_lib.glsl
M source/blender/gpu/shaders/gpu_shader_instance_camera_vert.glsl
M source/blender/gpu/shaders/gpu_shader_instance_distance_line_vert.glsl
M source/blender/gpu/shaders/gpu_shader_instance_variying_size_variying_color_vert.glsl
M source/blender/gpu/shaders/gpu_shader_instance_variying_size_variying_id_vert.glsl
M source/blender/gpu/shaders/gpu_shader_instance_vert.glsl
===================================================================
diff --git a/source/blender/blenlib/BLI_memblock.h b/source/blender/blenlib/BLI_memblock.h
index 8bd8642a4e8..c5ef26ffb91 100644
--- a/source/blender/blenlib/BLI_memblock.h
+++ b/source/blender/blenlib/BLI_memblock.h
@@ -30,20 +30,16 @@ extern "C" {
#include "BLI_compiler_attrs.h"
-#define BLI_MEM_BLOCK_CHUNK_SIZE (1 << 15) /* 32KiB */
-
struct BLI_memblock;
typedef struct BLI_memblock BLI_memblock;
typedef void (*MemblockValFreeFP)(void *val);
-BLI_memblock *BLI_memblock_create_ex(uint elem_size, uint chunk_size) ATTR_WARN_UNUSED_RESULT;
-void *BLI_memblock_alloc(BLI_memblock *mblk) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1);
+BLI_memblock *BLI_memblock_create(uint elem_size) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT;
+void *BLI_memblock_alloc(BLI_memblock *mblk) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1);
void BLI_memblock_clear(BLI_memblock *mblk, MemblockValFreeFP valfreefp) ATTR_NONNULL(1);
void BLI_memblock_destroy(BLI_memblock *mblk, MemblockValFreeFP free_callback) ATTR_NONNULL(1);
-#define BLI_memblock_create(elem_size) BLI_memblock_create_ex(elem_size, BLI_MEM_BLOCK_CHUNK_SIZE)
-
typedef struct BLI_memblock_iter {
void **chunk_list;
int cur_index;
@@ -57,9 +53,6 @@ typedef struct BLI_memblock_iter {
void BLI_memblock_iternew(BLI_memblock *pool, BLI_memblock_iter *iter) ATTR_NONNULL();
void *BLI_memblock_iterstep(BLI_memblock_iter *iter) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
-void *BLI_memblock_elem_get(BLI_memblock *mblk, int chunk, int elem) ATTR_WARN_UNUSED_RESULT
- ATTR_NONNULL();
-
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenlib/intern/BLI_memblock.c b/source/blender/blenlib/intern/BLI_memblock.c
index f7239f1b9d1..f26860afe77 100644
--- a/source/blender/blenlib/intern/BLI_memblock.c
+++ b/source/blender/blenlib/intern/BLI_memblock.c
@@ -37,6 +37,7 @@
#include "BLI_strict_flags.h" /* keep last */
+#define BLI_MEM_BLOCK_CHUNK_SIZE (1 << 15) /* 32KiB */
#define CHUNK_LIST_SIZE 16
struct BLI_memblock {
@@ -60,19 +61,18 @@ struct BLI_memblock {
int chunk_len;
};
-BLI_memblock *BLI_memblock_create_ex(uint elem_size, uint chunk_size)
+BLI_memblock *BLI_memblock_create(uint elem_size)
{
- BLI_assert(elem_size < chunk_size);
+ BLI_assert(elem_size < BLI_MEM_BLOCK_CHUNK_SIZE);
BLI_memblock *mblk = MEM_mallocN(sizeof(BLI_memblock), "BLI_memblock");
mblk->elem_size = (int)elem_size;
mblk->elem_next = 0;
mblk->elem_last = -1;
- mblk->chunk_size = (int)chunk_size;
+ mblk->chunk_size = BLI_MEM_BLOCK_CHUNK_SIZE;
mblk->chunk_len = CHUNK_LIST_SIZE;
mblk->chunk_list = MEM_callocN(sizeof(void *) * (uint)mblk->chunk_len, "chunk list");
- mblk->chunk_list[0] = MEM_mallocN_aligned((uint)mblk->chunk_size, 32, "BLI_memblock chunk");
- memset(mblk->chunk_list[0], 0x0, (uint)mblk->chunk_size);
+ mblk->chunk_list[0] = MEM_callocN((uint)mblk->chunk_size, "BLI_memblock chunk");
mblk->chunk_max_ofs = (mblk->chunk_size / mblk->elem_size) * mblk->elem_size;
mblk->elem_next_ofs = 0;
mblk->chunk_next = 0;
@@ -143,9 +143,8 @@ void *BLI_memblock_alloc(BLI_memblock *mblk)
}
if (UNLIKELY(mblk->chunk_list[mblk->chunk_next] == NULL)) {
- mblk->chunk_list[mblk->chunk_next] = MEM_mallocN_aligned(
- (uint)mblk->chunk_size, 32, "BLI_memblock chunk");
- memset(mblk->chunk_list[mblk->chunk_next], 0x0, (uint)mblk->chunk_size);
+ mblk->chunk_list[mblk->chunk_next] = MEM_callocN((uint)mblk->chunk_size,
+ "BLI_memblock chunk");
}
}
return ptr;
@@ -181,11 +180,3 @@ void *BLI_memblock_iterstep(BLI_memblock_iter *iter)
}
return ptr;
}
-
-/* Direct access. elem is element index inside the chosen chunk. */
-void *BLI_memblock_elem_get(BLI_memblock *mblk, int chunk, int elem)
-{
- BLI_assert(chunk < mblk->chunk_len);
- BLI_assert(elem < (mblk->chunk_size / mblk->elem_size));
- return (char *)(mblk->chunk_list[chunk]) + mblk->elem_size * elem;
-}
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c
index 2158d395d84..712bcc43f52 100644
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@ -48,9 +48,6 @@ static struct {
char *frag_shader_lib;
char *vert_shader_str;
char *vert_shadow_shader_str;
- char *vert_background_shader_str;
- char *vert_volume_shader_str;
- char *geom_volume_shader_str;
char *volume_shader_lib;
struct GPUShader *default_prepass_sh;
@@ -568,15 +565,6 @@ void EEVEE_materials_init(EEVEE_ViewLayerData *sldata,
e_data.vert_shadow_shader_str = BLI_string_joinN(
datatoc_common_view_lib_glsl, datatoc_common_hair_lib_glsl, datatoc_shadow_vert_glsl);
- e_data.vert_background_shader_str = BLI_string_joinN(datatoc_common_view_lib_glsl,
- datatoc_background_vert_glsl);
-
- e_data.vert_volume_shader_str = BLI_string_joinN(datatoc_common_view_lib_glsl,
- datatoc_volumetric_vert_glsl);
-
- e_data.geom_volume_shader_str = BLI_string_joinN(datatoc_common_view_lib_glsl,
- datatoc_volumetric_geom_glsl);
-
e_data.default_background = DRW_shader_create_with_lib(datatoc_background_vert_glsl,
NULL,
datatoc_default_world_frag_glsl,
@@ -649,7 +637,7 @@ struct GPUMaterial *EEVEE_material_world_lightprobe_get(struct Scene *scene, Wor
wo,
engine,
options,
- e_data.vert_background_shader_str,
+ datatoc_background_vert_glsl,
NULL,
e_data.frag_shader_lib,
SHADER_DEFINES "#define PROBE_CAPTURE\n",
@@ -669,7 +657,7 @@ struct GPUMaterial *EEVEE_material_world_background_get(struct Scene *scene, Wor
wo,
engine,
options,
- e_data.vert_background_shader_str,
+ datatoc_background_vert_glsl,
NULL,
e_data.frag_shader_lib,
SHADER_DEFINES "#define WORLD_BACKGROUND\n",
@@ -692,8 +680,8 @@ struct GPUMaterial *EEVEE_material_world_volume_get(struct Scene *scene, World *
wo,
engine,
options,
- e_data.vert_volume_shader_str,
- e_data.geom_volume_shader_str,
+ datatoc_volumetric_vert_glsl,
+ datatoc_volumetric_geom_glsl,
e_data.volume_shader_lib,
defines,
true);
@@ -753,8 +741,8 @@ struct GPUMaterial *EEVEE_material_mesh_volume_get(struct Scene *scene, Material
ma,
engine,
options,
- e_data.vert_volume_shader_str,
- e_data.geom_volume_shader_str,
+ datatoc_volumetric_vert_glsl,
+ datatoc_volumetric_geom_glsl,
e_data.volume_shader_lib,
defines,
true);
@@ -1350,24 +1338,6 @@ static void material_transparent(Material *ma,
const float *spec_p = &ma->spec;
const float *rough_p = &ma->roughness;
- const bool use_prepass = ((ma->blend_flag & MA_BL_HIDE_BACKFACE) != 0);
-
- DRWState cur_state;
- DRWState all_state = (DRW_STATE_WRITE_DEPTH | DRW_STATE_WRITE_COLOR | DRW_STATE_CULL_BACK |
- DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_DEPTH_EQUAL |
- DRW_STATE_BLEND_CUSTOM);
-
- /* Depth prepass */
- if (use_prepass) {
- *shgrp_depth = DRW_shgroup_create(e_data.default_prepass_clip_sh, psl->transparent_pass);
-
- cur_state = DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL;
- cur_state |= (do_cull) ? DRW_STATE_CULL_BACK : 0;
-
- DRW_shgroup_state_disable(*shgrp_depth, all_state);
- DRW_shgroup_state_enable(*shgrp_depth, cur_state);
- }
-
if (ma->use_nodes && ma->nodetree) {
static float error_col[3] = {1.0f, 0.0f, 1.0f};
static float compile_col[3] = {0.5f, 0.5f, 0.5f};
@@ -1424,13 +1394,30 @@ static void material_transparent(Material *ma,
DRW_shgroup_uniform_float(*shgrp, "roughness", rough_p, 1);
}
- cur_state = DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND_CUSTOM;
+ const bool use_prepass = ((ma->blend_flag & MA_BL_HIDE_BACKFACE) != 0);
+
+ DRWState all_state = (DRW_STATE_WRITE_DEPTH | DRW_STATE_WRITE_COLOR | DRW_STATE_CULL_BACK |
+ DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_DEPTH_EQUAL |
+ DRW_STATE_BLEND_CUSTOM);
+
+ DRWState cur_state = DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND_CUSTOM;
cur_state |= (use_prepass) ? DRW_STATE_DEPTH_EQUAL : DRW_STATE_DEPTH_LESS_EQUAL;
cur_state |= (do_cull) ? DRW_STATE_CULL_BACK : 0;
/* Disable other blend modes and use the one we want. */
DRW_shgroup_state_disable(*shgrp, all_state);
DRW_shgroup_state_enable(*shgrp, cur_state);
+
+ /* Depth prepass */
+ if (use_prepass) {
+ *shgrp_depth = DRW_shgroup_create(e_data.default_prepass_clip_sh, psl->transparent_pass);
+
+ cur_state = DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL;
+ cur_state |= (do_cull) ? DRW_STATE_CULL_BACK : 0;
+
+ DRW_shgroup_state_
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list