mirror of
https://github.com/dingusdev/dingusppc.git
synced 2024-12-24 12:30:05 +00:00
atimach64gx: Don't recalculate if nothing changed.
This commit is contained in:
parent
0a63e2946d
commit
bcd057d45b
@ -506,17 +506,30 @@ void AtiMach64Gx::crtc_update()
|
||||
if (!bit_set(this->regs[ATI_CRTC_GEN_CNTL], ATI_CRTC_EXT_DISP_EN))
|
||||
ABORT_F("%s: Current mode is VGA which is not supported", this->name.c_str());
|
||||
|
||||
bool need_recalc = false;
|
||||
|
||||
new_width = (extract_bits<uint32_t>(this->regs[ATI_CRTC_H_TOTAL_DISP], ATI_CRTC_H_DISP, ATI_CRTC_H_DISP_size) + 1) * 8;
|
||||
new_height = extract_bits<uint32_t>(this->regs[ATI_CRTC_V_TOTAL_DISP], ATI_CRTC_V_DISP, ATI_CRTC_V_DISP_size) + 1;
|
||||
|
||||
if (new_width != this->active_width || new_height != this->active_height) {
|
||||
this->create_display_window(new_width, new_height);
|
||||
need_recalc = true;
|
||||
}
|
||||
|
||||
// calculate display refresh rate
|
||||
this->hori_total = (extract_bits<uint32_t>(this->regs[ATI_CRTC_H_TOTAL_DISP], ATI_CRTC_H_TOTAL, ATI_CRTC_H_TOTAL_size) + 1) * 8;
|
||||
this->vert_total = extract_bits<uint32_t>(this->regs[ATI_CRTC_V_TOTAL_DISP], ATI_CRTC_V_TOTAL, ATI_CRTC_V_TOTAL_size) + 1;
|
||||
uint32_t new_htotal, new_vtotal;
|
||||
new_htotal = (extract_bits<uint32_t>(this->regs[ATI_CRTC_H_TOTAL_DISP], ATI_CRTC_H_TOTAL, ATI_CRTC_H_TOTAL_size) + 1) * 8;
|
||||
new_vtotal = extract_bits<uint32_t>(this->regs[ATI_CRTC_V_TOTAL_DISP], ATI_CRTC_V_TOTAL, ATI_CRTC_V_TOTAL_size) + 1;
|
||||
|
||||
if (new_htotal != this->hori_total || new_vtotal != this->vert_total) {
|
||||
this->hori_total = new_htotal;
|
||||
this->vert_total = new_vtotal;
|
||||
need_recalc = true;
|
||||
}
|
||||
|
||||
if (!need_recalc)
|
||||
return;
|
||||
|
||||
// calculate display refresh rate
|
||||
this->refresh_rate = this->pixel_clock / this->hori_total / this->vert_total;
|
||||
|
||||
// specify framebuffer converter
|
||||
|
Loading…
Reference in New Issue
Block a user