Skip to content

Commit

Permalink
D3D12: Avoid validation warnings about zero-sized barrier groups
Browse files Browse the repository at this point in the history
  • Loading branch information
DarioSamo authored and RandomShaper committed Jul 25, 2024
1 parent f135f72 commit bb0a8e5
Showing 1 changed file with 25 additions and 10 deletions.
35 changes: 25 additions & 10 deletions drivers/d3d12/rendering_device_driver_d3d12.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2159,17 +2159,32 @@ void RenderingDeviceDriverD3D12::command_pipeline_barrier(CommandBufferID p_cmd_
}

// Define the barrier groups and execute.

D3D12_BARRIER_GROUP barrier_groups[3] = {};
barrier_groups[0].Type = D3D12_BARRIER_TYPE_GLOBAL;
barrier_groups[1].Type = D3D12_BARRIER_TYPE_BUFFER;
barrier_groups[2].Type = D3D12_BARRIER_TYPE_TEXTURE;
barrier_groups[0].NumBarriers = global_barriers.size();
barrier_groups[1].NumBarriers = buffer_barriers.size();
barrier_groups[2].NumBarriers = texture_barriers.size();
barrier_groups[0].pGlobalBarriers = global_barriers.ptr();
barrier_groups[1].pBufferBarriers = buffer_barriers.ptr();
barrier_groups[2].pTextureBarriers = texture_barriers.ptr();
cmd_list_7->Barrier(ARRAY_SIZE(barrier_groups), barrier_groups);
uint32_t barrier_groups_count = 0;

if (!global_barriers.is_empty()) {
D3D12_BARRIER_GROUP &barrier_group = barrier_groups[barrier_groups_count++];
barrier_group.Type = D3D12_BARRIER_TYPE_GLOBAL;
barrier_group.NumBarriers = global_barriers.size();
barrier_group.pGlobalBarriers = global_barriers.ptr();
}

if (!buffer_barriers.is_empty()) {
D3D12_BARRIER_GROUP &barrier_group = barrier_groups[barrier_groups_count++];
barrier_group.Type = D3D12_BARRIER_TYPE_BUFFER;
barrier_group.NumBarriers = buffer_barriers.size();
barrier_group.pBufferBarriers = buffer_barriers.ptr();
}

if (!texture_barriers.is_empty()) {
D3D12_BARRIER_GROUP &barrier_group = barrier_groups[barrier_groups_count++];
barrier_group.Type = D3D12_BARRIER_TYPE_TEXTURE;
barrier_group.NumBarriers = texture_barriers.size();
barrier_group.pTextureBarriers = texture_barriers.ptr();
}

cmd_list_7->Barrier(barrier_groups_count, barrier_groups);
}

/****************/
Expand Down

0 comments on commit bb0a8e5

Please sign in to comment.