mirror of
https://github.com/dingusdev/dingusppc.git
synced 2024-12-27 00:29:18 +00:00
atirage: Add VBL callback.
This commit is contained in:
parent
b168459007
commit
5a049642ea
@ -801,6 +801,35 @@ void ATIRage::get_cursor_position(int& x, int& y) {
|
|||||||
y = extract_bits<uint32_t>(this->regs[ATI_CUR_HORZ_VERT_POSN], ATI_CUR_VERT_POSN, ATI_CUR_VERT_POSN_size);
|
y = extract_bits<uint32_t>(this->regs[ATI_CUR_HORZ_VERT_POSN], ATI_CUR_VERT_POSN, ATI_CUR_VERT_POSN_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ATIRage::device_postinit()
|
||||||
|
{
|
||||||
|
this->vbl_cb = [this](uint8_t irq_line_state) {
|
||||||
|
insert_bits<uint32_t>(this->regs[ATI_CRTC_INT_CNTL], irq_line_state, ATI_CRTC_VBLANK, 1);
|
||||||
|
if (irq_line_state) {
|
||||||
|
set_bit(this->regs[ATI_CRTC_INT_CNTL], ATI_CRTC_VBLANK_INT);
|
||||||
|
set_bit(this->regs[ATI_CRTC_INT_CNTL], ATI_CRTC_VLINE_INT);
|
||||||
|
#if 1
|
||||||
|
#else
|
||||||
|
set_bit(this->regs[ATI_CRTC_GEN_CNTL], ATI_CRTC_VSYNC_INT);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool do_interrupt =
|
||||||
|
bit_set(this->regs[ATI_CRTC_INT_CNTL], ATI_CRTC_VBLANK_INT_EN) ||
|
||||||
|
bit_set(this->regs[ATI_CRTC_INT_CNTL], ATI_CRTC_VLINE_INT_EN) ||
|
||||||
|
#if 1
|
||||||
|
#else
|
||||||
|
bit_set(this->regs[ATI_CRTC_GEN_CNTL], ATI_CRTC_VSYNC_INT_EN) ||
|
||||||
|
#endif
|
||||||
|
0;
|
||||||
|
|
||||||
|
if (do_interrupt) {
|
||||||
|
this->pci_interrupt(irq_line_state);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const PropMap AtiRage_Properties = {
|
static const PropMap AtiRage_Properties = {
|
||||||
{"gfxmem_size",
|
{"gfxmem_size",
|
||||||
new IntProperty( 2, vector<uint32_t>({2, 4, 6}))},
|
new IntProperty( 2, vector<uint32_t>({2, 4, 6}))},
|
||||||
|
@ -55,6 +55,9 @@ public:
|
|||||||
return std::unique_ptr<ATIRage>(new ATIRage(ATI_RAGE_PRO_DEV_ID));
|
return std::unique_ptr<ATIRage>(new ATIRage(ATI_RAGE_PRO_DEV_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HWComponent methods
|
||||||
|
int device_postinit();
|
||||||
|
|
||||||
// MMIODevice methods
|
// MMIODevice methods
|
||||||
uint32_t read(uint32_t rgn_start, uint32_t offset, int size);
|
uint32_t read(uint32_t rgn_start, uint32_t offset, int size);
|
||||||
void write(uint32_t rgn_start, uint32_t offset, uint32_t value, int size);
|
void write(uint32_t rgn_start, uint32_t offset, uint32_t value, int size);
|
||||||
|
Loading…
Reference in New Issue
Block a user