Commit: 99e5f4000c5d6dcca44fe4018c87d37f1a833ea3 Author: Miguel Pozo Date: Thu Jan 19 16:58:51 2023 +0100 Branches: tmp-workbench-rewrite2 https://developer.blender.org/rB99e5f4000c5d6dcca44fe4018c87d37f1a833ea3
Add texture usage flags =================================================================== M source/blender/draw/engines/workbench/workbench_effect_antialiasing.cc M source/blender/draw/engines/workbench/workbench_effect_dof.cc M source/blender/draw/engines/workbench/workbench_engine.cc M source/blender/draw/engines/workbench/workbench_mesh_passes.cc M source/blender/draw/engines/workbench/workbench_resources.cc =================================================================== diff --git a/source/blender/draw/engines/workbench/workbench_effect_antialiasing.cc b/source/blender/draw/engines/workbench/workbench_effect_antialiasing.cc index 39b46c7ac1e..6b0b2e75c27 100644 --- a/source/blender/draw/engines/workbench/workbench_effect_antialiasing.cc +++ b/source/blender/draw/engines/workbench/workbench_effect_antialiasing.cc @@ -112,11 +112,12 @@ AntiAliasingPass::AntiAliasingPass() smaa_aa_weight_sh_ = GPU_shader_create_from_info_name("workbench_smaa_stage_1"); smaa_resolve_sh_ = GPU_shader_create_from_info_name("workbench_smaa_stage_2"); - smaa_search_tx_.ensure_2d(GPU_R8, {SEARCHTEX_WIDTH, SEARCHTEX_HEIGHT}); + smaa_search_tx_.ensure_2d( + GPU_R8, {SEARCHTEX_WIDTH, SEARCHTEX_HEIGHT}, GPU_TEXTURE_USAGE_SHADER_READ); GPU_texture_update(smaa_search_tx_, GPU_DATA_UBYTE, searchTexBytes); GPU_texture_filter_mode(smaa_search_tx_, true); - smaa_area_tx_.ensure_2d(GPU_RG8, {AREATEX_WIDTH, AREATEX_HEIGHT}); + smaa_area_tx_.ensure_2d(GPU_RG8, {AREATEX_WIDTH, AREATEX_HEIGHT}, GPU_TEXTURE_USAGE_SHADER_READ); GPU_texture_update(smaa_area_tx_, GPU_DATA_UBYTE, areaTexBytes); GPU_texture_filter_mode(smaa_area_tx_, true); } @@ -144,8 +145,11 @@ void AntiAliasingPass::sync(SceneResources &resources, int2 resolution) return; } - taa_accumulation_tx_.ensure_2d(GPU_RGBA16F, resolution); - sample0_depth_tx_.ensure_2d(GPU_DEPTH24_STENCIL8, resolution); + taa_accumulation_tx_.ensure_2d( + GPU_RGBA16F, resolution, GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT); + sample0_depth_tx_.ensure_2d(GPU_DEPTH24_STENCIL8, + resolution, + GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT); taa_accumulation_ps_.init(); taa_accumulation_ps_.state_set(sample_ == 0 ? DRW_STATE_WRITE_COLOR : @@ -279,13 +283,15 @@ void AntiAliasingPass::draw(Manager &manager, } if (!DRW_state_is_image_render() || last_sample) { - smaa_weight_tx_.acquire(resolution, GPU_RGBA8); + smaa_weight_tx_.acquire( + resolution, GPU_RGBA8, GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT); smaa_mix_factor_ = 1.0f - clamp_f(sample_ / 4.0f, 0.0f, 1.0f); smaa_viewport_metrics_ = float4(float2(1.0f / float2(resolution)), resolution); /* After a certain point SMAA is no longer necessary. */ if (smaa_mix_factor_ > 0.0f) { - smaa_edge_tx_.acquire(resolution, GPU_RG8); + smaa_edge_tx_.acquire( + resolution, GPU_RG8, GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT); smaa_edge_fb_.ensure(GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE(smaa_edge_tx_)); smaa_edge_fb_.bind(); manager.submit(smaa_edge_detect_ps_, view); diff --git a/source/blender/draw/engines/workbench/workbench_effect_dof.cc b/source/blender/draw/engines/workbench/workbench_effect_dof.cc index 582adeb4ed9..7d46703ad35 100644 --- a/source/blender/draw/engines/workbench/workbench_effect_dof.cc +++ b/source/blender/draw/engines/workbench/workbench_effect_dof.cc @@ -222,7 +222,8 @@ void DofPass::draw(Manager &manager, View &view, SceneResources &resources, int2 DRW_stats_group_start("Depth Of Field"); int2 half_res = {max_ii(resolution.x / 2, 1), max_ii(resolution.y / 2, 1)}; - blur_tx_.acquire(half_res, GPU_RGBA16F); + blur_tx_.acquire( + half_res, GPU_RGBA16F, GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT); downsample_fb_.ensure(GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE(source_tx_), diff --git a/source/blender/draw/engines/workbench/workbench_engine.cc b/source/blender/draw/engines/workbench/workbench_engine.cc index e917aa1e81e..a1167c75708 100644 --- a/source/blender/draw/engines/workbench/workbench_engine.cc +++ b/source/blender/draw/engines/workbench/workbench_engine.cc @@ -62,7 +62,10 @@ class Instance { { const float2 viewport_size = DRW_viewport_size_get(); const int2 resolution = {int(viewport_size.x), int(viewport_size.y)}; - resources.depth_tx.ensure_2d(GPU_DEPTH24_STENCIL8, resolution); + resources.depth_tx.ensure_2d(GPU_DEPTH24_STENCIL8, + resolution, + GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT | + GPU_TEXTURE_USAGE_MIP_SWIZZLE_VIEW); opaque_ps.sync(scene_state, resources); transparent_ps.sync(scene_state, resources); @@ -325,10 +328,12 @@ class Instance { anti_aliasing_ps.setup_view(view, resolution); - resources.color_tx.acquire(resolution, GPU_RGBA16F); + resources.color_tx.acquire( + resolution, GPU_RGBA16F, GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT); resources.color_tx.clear(resources.world_buf.background_color); if (scene_state.draw_object_id) { - resources.object_id_tx.acquire(resolution, GPU_R16UI); + resources.object_id_tx.acquire( + resolution, GPU_R16UI, GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT); resources.object_id_tx.clear(uint4(0)); } @@ -338,7 +343,10 @@ class Instance { GPU_framebuffer_clear_depth_stencil(fb, 1.0f, 0x00); if (!transparent_ps.accumulation_in_front_ps_.is_empty()) { - resources.depth_in_front_tx.acquire(resolution, GPU_DEPTH24_STENCIL8); + resources.depth_in_front_tx.acquire(resolution, + GPU_DEPTH24_STENCIL8, + GPU_TEXTURE_USAGE_SHADER_READ | + GPU_TEXTURE_USAGE_ATTACHMENT); if (opaque_ps.gbuffer_in_front_ps_.is_empty()) { /* Clear only if it wont be overwitten by opaque_ps */ Framebuffer fb = Framebuffer("Workbench.Clear"); diff --git a/source/blender/draw/engines/workbench/workbench_mesh_passes.cc b/source/blender/draw/engines/workbench/workbench_mesh_passes.cc index d47a806b694..d8bc3702c17 100644 --- a/source/blender/draw/engines/workbench/workbench_mesh_passes.cc +++ b/source/blender/draw/engines/workbench/workbench_mesh_passes.cc @@ -155,8 +155,10 @@ void OpaquePass::draw(Manager &manager, if (is_empty()) { return; } - gbuffer_material_tx.acquire(resolution, GPU_RGBA16F); - gbuffer_normal_tx.acquire(resolution, GPU_RG16F); + gbuffer_material_tx.acquire( + resolution, GPU_RGBA16F, GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT); + gbuffer_normal_tx.acquire( + resolution, GPU_RG16F, GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT); GPUAttachment object_id_attachment = GPU_ATTACHMENT_NONE; if (resources.object_id_tx.is_valid()) { @@ -191,7 +193,11 @@ void OpaquePass::draw(Manager &manager, !accumulation_ps_is_empty; if (needs_stencil_copy) { - shadow_depth_stencil_tx.ensure_2d(GPU_DEPTH24_STENCIL8, resolution); + shadow_depth_stencil_tx.ensure_2d(GPU_DEPTH24_STENCIL8, + resolution, + GPU_TEXTURE_USAGE_SHADER_READ | + GPU_TEXTURE_USAGE_ATTACHMENT | + GPU_TEXTURE_USAGE_MIP_SWIZZLE_VIEW); GPU_texture_copy(shadow_depth_stencil_tx, resources.depth_tx); deferred_ps_stencil_tx = shadow_depth_stencil_tx.stencil_view(); @@ -280,8 +286,10 @@ void TransparentPass::draw(Manager &manager, if (is_empty()) { return; } - accumulation_tx.acquire(resolution, GPU_RGBA16F); - reveal_tx.acquire(resolution, GPU_R16F); + accumulation_tx.acquire( + resolution, GPU_RGBA16F, GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT); + reveal_tx.acquire( + resolution, GPU_R16F, GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT); resolve_fb.ensure(GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE(resources.color_tx)); diff --git a/source/blender/draw/engines/workbench/workbench_resources.cc b/source/blender/draw/engines/workbench/workbench_resources.cc index 84d624d22d5..98d3ca8f668 100644 --- a/source/blender/draw/engines/workbench/workbench_resources.cc +++ b/source/blender/draw/engines/workbench/workbench_resources.cc @@ -122,7 +122,7 @@ void SceneResources::init(const SceneState &scene_state) } } if (!matcap_tx.is_valid()) { - matcap_tx.ensure_2d_array(GPU_RGBA16F, int2(1), 1); + matcap_tx.ensure_2d_array(GPU_RGBA16F, int2(1), 1, GPU_TEXTURE_USAGE_SHADER_READ); } float4x4 world_shading_rotation = float4x4::identity(); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs