@@ -552,6 +552,9 @@ namespace DX12
552552 size_t size;
553553 };
554554 std::list<update_data> update_list;
555+
556+ update_tiling_info updates;
557+
555558 public:
556559
557560 typename StructuredBuffer<Type>::ptr buffer;
@@ -577,7 +580,7 @@ namespace DX12
577580 TypedHandle<T> result = Base::Allocate (n);
578581
579582
580- buffer->map_buffer_part (result.get_offset () * sizeof (T), n * sizeof (T));
583+ buffer->map_buffer_part (updates, result.get_offset () * sizeof (T), n * sizeof (T));
581584 return result;
582585 }
583586
@@ -587,7 +590,7 @@ namespace DX12
587590
588591 result.Free ();
589592 result = Base::Allocate (n);
590- buffer->map_buffer_part ( result.get_offset () * sizeof (T), n * sizeof (T));
593+ buffer->map_buffer_part (updates, result.get_offset () * sizeof (T), n * sizeof (T));
591594 }
592595 /*
593596 T* map_elements(size_t offset, size_t size = 1)
@@ -601,7 +604,10 @@ namespace DX12
601604 void reserve (CommandList& list, size_t offset)
602605 {
603606 std::lock_guard<std::mutex> g (m);
604- buffer->map_buffer_part ( 0 , offset * sizeof (T));
607+ buffer->map_buffer_part (updates, 0 , offset * sizeof (T));
608+
609+ updates.resource = buffer.get ();
610+ list.update_tilings (std::move (updates));
605611 }
606612
607613
@@ -634,6 +640,8 @@ namespace DX12
634640 {
635641 std::lock_guard<std::mutex> g (m);
636642
643+ updates.resource = buffer.get ();
644+ list->update_tilings (std::move (updates));
637645 for (auto & elems : update_list)
638646 {
639647 buffer->set_data (list, (UINT)elems.offset * sizeof (T), elems.data .data (), (UINT)elems.size );
0 commit comments