Skip to content

Commit e063032

Browse files
authored
fix cvk_rectangle_copier constructor (#753)
row_pitch and slice_pitch can be set to '0', which means that it needs to be computed from region values.
1 parent b4c9ab0 commit e063032

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/queue.hpp

+12-3
Original file line numberDiff line numberDiff line change
@@ -538,9 +538,14 @@ struct cvk_rectangle_copier {
538538
const size_t* region, size_t a_row_pitch,
539539
size_t a_slice_pitch, size_t b_row_pitch,
540540
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]);
544549

545550
m_a_origin[0] = a_origin[0];
546551
m_a_origin[1] = a_origin[1];
@@ -567,6 +572,10 @@ struct cvk_rectangle_copier {
567572
void do_copy(direction dir, void* src_base, void* dst_base);
568573

569574
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+
570579
std::array<size_t, 3> m_a_origin;
571580
size_t m_a_row_pitch;
572581
size_t m_a_slice_pitch;

0 commit comments

Comments
 (0)