@@ -538,9 +538,14 @@ struct cvk_rectangle_copier {
538
538
const size_t * region, size_t a_row_pitch,
539
539
size_t a_slice_pitch, size_t b_row_pitch,
540
540
size_t b_slice_pitch, size_t elem_size)
541
- : m_a_row_pitch(a_row_pitch), m_a_slice_pitch(a_slice_pitch),
542
- m_b_row_pitch (b_row_pitch), m_b_slice_pitch(b_slice_pitch),
543
- m_elem_size(elem_size) {
541
+ : m_elem_size(elem_size) {
542
+
543
+ m_a_row_pitch = initialize_pitch (a_row_pitch, region[0 ]);
544
+ m_b_row_pitch = initialize_pitch (b_row_pitch, region[0 ]);
545
+ m_a_slice_pitch =
546
+ initialize_pitch (a_slice_pitch, m_a_row_pitch * region[1 ]);
547
+ m_b_slice_pitch =
548
+ initialize_pitch (b_slice_pitch, m_b_row_pitch * region[1 ]);
544
549
545
550
m_a_origin[0 ] = a_origin[0 ];
546
551
m_a_origin[1 ] = a_origin[1 ];
@@ -567,6 +572,10 @@ struct cvk_rectangle_copier {
567
572
void do_copy (direction dir, void * src_base, void * dst_base);
568
573
569
574
private:
575
+ size_t initialize_pitch (size_t default_pitch, size_t region_pitch) {
576
+ return default_pitch == 0 ? region_pitch : default_pitch;
577
+ }
578
+
570
579
std::array<size_t , 3 > m_a_origin;
571
580
size_t m_a_row_pitch;
572
581
size_t m_a_slice_pitch;
0 commit comments