|
|
@ -184,12 +184,8 @@ void MaxwellDMA::CopyBlockLinearToPitch() {
|
|
|
|
const size_t src_size =
|
|
|
|
const size_t src_size =
|
|
|
|
CalculateSize(true, bytes_per_pixel, width, height, depth, block_height, block_depth);
|
|
|
|
CalculateSize(true, bytes_per_pixel, width, height, depth, block_height, block_depth);
|
|
|
|
|
|
|
|
|
|
|
|
if (read_buffer.size() < src_size) {
|
|
|
|
|
|
|
|
read_buffer.resize(src_size);
|
|
|
|
read_buffer.resize(src_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (write_buffer.size() < dst_size) {
|
|
|
|
|
|
|
|
write_buffer.resize(dst_size);
|
|
|
|
write_buffer.resize(dst_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
memory_manager.ReadBlock(regs.offset_in, read_buffer.data(), src_size);
|
|
|
|
memory_manager.ReadBlock(regs.offset_in, read_buffer.data(), src_size);
|
|
|
|
memory_manager.ReadBlock(regs.offset_out, write_buffer.data(), dst_size);
|
|
|
|
memory_manager.ReadBlock(regs.offset_out, write_buffer.data(), dst_size);
|
|
|
@ -235,12 +231,8 @@ void MaxwellDMA::CopyPitchToBlockLinear() {
|
|
|
|
CalculateSize(true, bytes_per_pixel, width, height, depth, block_height, block_depth);
|
|
|
|
CalculateSize(true, bytes_per_pixel, width, height, depth, block_height, block_depth);
|
|
|
|
const size_t src_size = static_cast<size_t>(regs.pitch_in) * regs.line_count;
|
|
|
|
const size_t src_size = static_cast<size_t>(regs.pitch_in) * regs.line_count;
|
|
|
|
|
|
|
|
|
|
|
|
if (read_buffer.size() < src_size) {
|
|
|
|
|
|
|
|
read_buffer.resize(src_size);
|
|
|
|
read_buffer.resize(src_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (write_buffer.size() < dst_size) {
|
|
|
|
|
|
|
|
write_buffer.resize(dst_size);
|
|
|
|
write_buffer.resize(dst_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
memory_manager.ReadBlock(regs.offset_in, read_buffer.data(), src_size);
|
|
|
|
memory_manager.ReadBlock(regs.offset_in, read_buffer.data(), src_size);
|
|
|
|
if (Settings::IsGPULevelExtreme()) {
|
|
|
|
if (Settings::IsGPULevelExtreme()) {
|
|
|
@ -269,12 +261,8 @@ void MaxwellDMA::FastCopyBlockLinearToPitch() {
|
|
|
|
pos_x = pos_x % x_in_gob;
|
|
|
|
pos_x = pos_x % x_in_gob;
|
|
|
|
pos_y = pos_y % 8;
|
|
|
|
pos_y = pos_y % 8;
|
|
|
|
|
|
|
|
|
|
|
|
if (read_buffer.size() < src_size) {
|
|
|
|
|
|
|
|
read_buffer.resize(src_size);
|
|
|
|
read_buffer.resize(src_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (write_buffer.size() < dst_size) {
|
|
|
|
|
|
|
|
write_buffer.resize(dst_size);
|
|
|
|
write_buffer.resize(dst_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Settings::IsGPULevelExtreme()) {
|
|
|
|
if (Settings::IsGPULevelExtreme()) {
|
|
|
|
memory_manager.ReadBlock(regs.offset_in + offset, read_buffer.data(), src_size);
|
|
|
|
memory_manager.ReadBlock(regs.offset_in + offset, read_buffer.data(), src_size);
|
|
|
@ -333,12 +321,8 @@ void MaxwellDMA::CopyBlockLinearToBlockLinear() {
|
|
|
|
const u32 pitch = x_elements * bytes_per_pixel;
|
|
|
|
const u32 pitch = x_elements * bytes_per_pixel;
|
|
|
|
const size_t mid_buffer_size = pitch * regs.line_count;
|
|
|
|
const size_t mid_buffer_size = pitch * regs.line_count;
|
|
|
|
|
|
|
|
|
|
|
|
if (read_buffer.size() < src_size) {
|
|
|
|
|
|
|
|
read_buffer.resize(src_size);
|
|
|
|
read_buffer.resize(src_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (write_buffer.size() < dst_size) {
|
|
|
|
|
|
|
|
write_buffer.resize(dst_size);
|
|
|
|
write_buffer.resize(dst_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
intermediate_buffer.resize(mid_buffer_size);
|
|
|
|
intermediate_buffer.resize(mid_buffer_size);
|
|
|
|
|
|
|
|
|
|
|
|