9
9
#include " nbl/video/decl/IBackendObject.h"
10
10
#include " nbl/video/IGPUPipelineLayout.h"
11
11
12
+ #include " nbl/asset/ICPUCommandBuffer.h"
13
+
12
14
namespace nbl ::video
13
15
{
14
16
class IGPUCommandBuffer ;
@@ -425,19 +427,19 @@ class IGPUCommandPool::CBeginRenderPassCmd : public IGPUCommandPool::IFixedSizeC
425
427
class IGPUCommandPool ::CPipelineBarrierCmd : public IGPUCommandPool::ICommand
426
428
{
427
429
public:
428
- CPipelineBarrierCmd (const uint32_t bufferCount, const core::smart_refctd_ptr< const IGPUBuffer>* buffers , const uint32_t imageCount, const core::smart_refctd_ptr< const IGPUImage>* images )
429
- : ICommand(calc_size(bufferCount, buffers , imageCount, images )), m_resourceCount(bufferCount+imageCount)
430
+ CPipelineBarrierCmd (const uint32_t bufferCount, const asset::ICPUCommandBuffer::SBufferMemoryBarrier* bufferMemoryBarriers , const uint32_t imageCount, const asset::ICPUCommandBuffer::SImageMemoryBarrier* imageMemoryBarriers )
431
+ : ICommand(calc_size(bufferCount, bufferMemoryBarriers , imageCount, imageMemoryBarriers )), m_resourceCount(bufferCount+imageCount)
430
432
{
431
433
auto barrierResources = getBarrierResources ();
432
434
std::uninitialized_default_construct_n (barrierResources, m_resourceCount);
433
435
434
436
uint32_t k = 0 ;
435
437
436
438
for (auto i = 0 ; i < bufferCount; ++i)
437
- barrierResources[k++] = buffers [i];
439
+ barrierResources[k++] = bufferMemoryBarriers [i]. buffer ;
438
440
439
441
for (auto i = 0 ; i < imageCount; ++i)
440
- barrierResources[k++] = images [i];
442
+ barrierResources[k++] = imageMemoryBarriers [i]. image ;
441
443
}
442
444
443
445
~CPipelineBarrierCmd ()
@@ -447,7 +449,7 @@ class IGPUCommandPool::CPipelineBarrierCmd : public IGPUCommandPool::ICommand
447
449
barrierResources[i].~smart_refctd_ptr ();
448
450
}
449
451
450
- static uint32_t calc_size (const uint32_t bufferCount, const core::smart_refctd_ptr< const IGPUBuffer>* buffers , const uint32_t imageCount, const core::smart_refctd_ptr< const IGPUImage>* images )
452
+ static uint32_t calc_size (const uint32_t bufferCount, const asset::ICPUCommandBuffer::SBufferMemoryBarrier* bufferMemoryBarriers , const uint32_t imageCount, const asset::ICPUCommandBuffer::SImageMemoryBarrier* imageMemoryBarriers )
451
453
{
452
454
return core::alignUp (sizeof (CPipelineBarrierCmd) + (bufferCount+imageCount)*sizeof (core::smart_refctd_ptr<const core::IReferenceCounted>), alignof (CPipelineBarrierCmd));
453
455
}
@@ -461,11 +463,14 @@ class IGPUCommandPool::CPipelineBarrierCmd : public IGPUCommandPool::ICommand
461
463
class IGPUCommandPool ::CBindDescriptorSetsCmd : public IGPUCommandPool::IFixedSizeCommand<CBindDescriptorSetsCmd>
462
464
{
463
465
public:
464
- CBindDescriptorSetsCmd (core::smart_refctd_ptr<const IGPUPipelineLayout>&& pipelineLayout, const uint32_t setCount, const core::smart_refctd_ptr< const IGPUDescriptorSet>* sets)
466
+ CBindDescriptorSetsCmd (core::smart_refctd_ptr<const IGPUPipelineLayout>&& pipelineLayout, const uint32_t setCount, const IGPUDescriptorSet* const * const sets)
465
467
: m_layout(std::move(pipelineLayout))
466
468
{
467
469
for (auto i = 0 ; i < setCount; ++i)
468
- m_sets[i] = sets[i];
470
+ {
471
+ assert (i < IGPUPipelineLayout::DESCRIPTOR_SET_COUNT);
472
+ m_sets[i] = core::smart_refctd_ptr<const video::IGPUDescriptorSet>(sets[i]);
473
+ }
469
474
}
470
475
471
476
private:
0 commit comments