Big video changes of the day (October 26th, 2024)
8514/A/Mach8/32: Reworked the acceleration a bit as well as the mode switches from VGA to ATI/8514/A mode and viceversa based on the documentation. Fixes the Linux GUI fonts using the Mach32 driver (possibly Mach8 too) and other anomalies (still needs more work on the acceleration though). PVGA: Minor fixes to the banking. S3-based (Pre-ViRGE): 1. Made the chip class use its own banking so that the Enhanced Mode mapping (equivalent to 64K-based A0000) is taken into account (per bit 3 of CRTC31, which forces the mapping to be 64K A0000, regardless of the GDCREG6 bits). Fixes NT 3.1 347.1's S3 driver. 2. Initial rework on 15bpp/16bpp accelerated mode of the 911/924 chips (currently not 100% bug free, I need help with this chips). XGA-1/2: Get rid of the linear endian reverse variable hack used by OS/2 and, instead, use the already declared ones more wisely, fixes OS/2 2.1 reversed fonts and keeps everything else working as it should. Misc: Added the BT481 RAMDAC for future card use.
This commit is contained in:
@@ -52,7 +52,7 @@ typedef struct ibm8514_t {
|
||||
int type;
|
||||
int local;
|
||||
int bpp;
|
||||
int on[2];
|
||||
int on;
|
||||
int accel_bpp;
|
||||
|
||||
uint32_t vram_size;
|
||||
@@ -102,6 +102,8 @@ typedef struct ibm8514_t {
|
||||
uint16_t frgd_mix;
|
||||
uint16_t multifunc_cntl;
|
||||
uint16_t multifunc[16];
|
||||
uint16_t clip_right;
|
||||
uint16_t clip_bottom;
|
||||
int16_t clip_left;
|
||||
int16_t clip_top;
|
||||
uint8_t pix_trans[2];
|
||||
@@ -112,8 +114,6 @@ typedef struct ibm8514_t {
|
||||
int x3;
|
||||
int y1;
|
||||
int y2;
|
||||
int sys_cnt;
|
||||
int sys_cnt2;
|
||||
int temp_cnt;
|
||||
int16_t cx;
|
||||
int16_t cx_back;
|
||||
@@ -127,20 +127,14 @@ typedef struct ibm8514_t {
|
||||
int16_t err;
|
||||
uint32_t src;
|
||||
uint32_t dest;
|
||||
uint32_t newsrc_blt;
|
||||
uint32_t newdest_blt;
|
||||
uint32_t newdest_in;
|
||||
uint32_t newdest_out;
|
||||
uint8_t *writemono;
|
||||
uint8_t *nibbleset;
|
||||
int x_count;
|
||||
int xx_count;
|
||||
int y_count;
|
||||
int input;
|
||||
int input2;
|
||||
int output;
|
||||
int output2;
|
||||
|
||||
uint16_t cur_x_bit12;
|
||||
uint16_t cur_y_bit12;
|
||||
int ssv_len;
|
||||
uint8_t ssv_dir;
|
||||
uint8_t ssv_draw;
|
||||
@@ -156,7 +150,6 @@ typedef struct ibm8514_t {
|
||||
} accel;
|
||||
|
||||
uint16_t test;
|
||||
int vendor_mode[2];
|
||||
int h_blankstart;
|
||||
int h_blank_end_val;
|
||||
int hblankstart;
|
||||
@@ -227,6 +220,11 @@ typedef struct ibm8514_t {
|
||||
int ext_pitch;
|
||||
int ext_crt_pitch;
|
||||
int extensions;
|
||||
int linear;
|
||||
int _4bpp;
|
||||
uint32_t vram_amount;
|
||||
int vram_512k_8514;
|
||||
PALETTE _8514pal;
|
||||
|
||||
latch8514_t latch;
|
||||
} ibm8514_t;
|
||||
|
||||
@@ -41,8 +41,6 @@ typedef struct mach_t {
|
||||
int ramdac_type;
|
||||
int old_mode;
|
||||
|
||||
uint32_t memory;
|
||||
|
||||
uint16_t config1;
|
||||
uint16_t config2;
|
||||
|
||||
@@ -73,9 +71,7 @@ typedef struct mach_t {
|
||||
uint8_t bank_r;
|
||||
uint16_t shadow_set;
|
||||
uint16_t shadow_cntl;
|
||||
int ext_on[2];
|
||||
int extended_mode;
|
||||
int compat_mode;
|
||||
int override_resolution;
|
||||
|
||||
struct {
|
||||
uint8_t line_idx;
|
||||
@@ -84,6 +80,12 @@ typedef struct mach_t {
|
||||
uint8_t patt_len;
|
||||
uint8_t pix_trans[2];
|
||||
uint8_t eeprom_control;
|
||||
uint8_t alu_bg_fn;
|
||||
uint8_t alu_fg_fn;
|
||||
uint16_t clip_left;
|
||||
uint16_t clip_right;
|
||||
uint16_t clip_top;
|
||||
uint16_t clip_bottom;
|
||||
uint16_t dest_x_end;
|
||||
uint16_t dest_x_start;
|
||||
uint16_t dest_y_end;
|
||||
@@ -102,14 +104,14 @@ typedef struct mach_t {
|
||||
uint16_t ge_offset_hi;
|
||||
uint16_t linedraw_opt;
|
||||
uint16_t max_waitstates;
|
||||
uint8_t patt_data_idx;
|
||||
uint8_t patt_data[0x18];
|
||||
uint16_t scan_to_x;
|
||||
uint16_t scratch0;
|
||||
uint16_t scratch1;
|
||||
uint16_t test;
|
||||
uint16_t pattern;
|
||||
uint16_t test2;
|
||||
int patt_data_idx_reg;
|
||||
int patt_data_idx;
|
||||
int src_y_dir;
|
||||
int cmd_type;
|
||||
int block_write_mono_pattern_enable;
|
||||
@@ -144,9 +146,8 @@ typedef struct mach_t {
|
||||
int stepx;
|
||||
int stepy;
|
||||
int src_stepx;
|
||||
uint8_t color_pattern[16];
|
||||
uint8_t color_pattern_full[32];
|
||||
uint16_t color_pattern_word[8];
|
||||
uint8_t mono_pattern_normal[16];
|
||||
uint8_t color_pattern[32];
|
||||
int mono_pattern[8][8];
|
||||
uint32_t ge_offset;
|
||||
uint32_t crt_offset;
|
||||
|
||||
@@ -369,6 +369,7 @@ uint32_t svga_mask_addr(uint32_t addr, svga_t *svga);
|
||||
uint32_t svga_mask_changedaddr(uint32_t addr, svga_t *svga);
|
||||
|
||||
void svga_doblit(int wx, int wy, svga_t *svga);
|
||||
void svga_poll(void *priv);
|
||||
|
||||
enum {
|
||||
RAMDAC_6BIT = 0,
|
||||
@@ -396,6 +397,9 @@ extern void att498_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *priv
|
||||
extern uint8_t att498_ramdac_in(uint16_t addr, int rs2, void *priv, svga_t *svga);
|
||||
extern float av9194_getclock(int clock, void *priv);
|
||||
|
||||
extern void bt481_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *priv, svga_t *svga);
|
||||
extern uint8_t bt481_ramdac_in(uint16_t addr, int rs2, void *priv, svga_t *svga);
|
||||
|
||||
extern void bt48x_ramdac_out(uint16_t addr, int rs2, int rs3, uint8_t val, void *priv, svga_t *svga);
|
||||
extern uint8_t bt48x_ramdac_in(uint16_t addr, int rs2, int rs3, void *priv, svga_t *svga);
|
||||
extern void bt48x_recalctimings(void *priv, svga_t *svga);
|
||||
@@ -452,6 +456,7 @@ extern const device_t att491_ramdac_device;
|
||||
extern const device_t att492_ramdac_device;
|
||||
extern const device_t att498_ramdac_device;
|
||||
extern const device_t av9194_device;
|
||||
extern const device_t bt481_ramdac_device;
|
||||
extern const device_t bt484_ramdac_device;
|
||||
extern const device_t att20c504_ramdac_device;
|
||||
extern const device_t bt485_ramdac_device;
|
||||
|
||||
@@ -31,13 +31,11 @@ typedef struct xga_hwcursor_t {
|
||||
} xga_hwcursor_t;
|
||||
|
||||
typedef struct xga_t {
|
||||
mem_mapping_t membios_mapping;
|
||||
mem_mapping_t memio_mapping;
|
||||
mem_mapping_t linear_mapping;
|
||||
mem_mapping_t video_mapping;
|
||||
rom_t bios_rom;
|
||||
rom_t membios_rom;
|
||||
rom_t vga_bios_rom;
|
||||
rom_t bios_rom2;
|
||||
xga_hwcursor_t hwcursor;
|
||||
xga_hwcursor_t hwcursor_latch;
|
||||
PALETTE extpal;
|
||||
@@ -153,6 +151,7 @@ typedef struct xga_t {
|
||||
int a5_test;
|
||||
int type;
|
||||
int bus;
|
||||
int busy;
|
||||
|
||||
uint32_t linear_base;
|
||||
uint32_t linear_size;
|
||||
|
||||
Reference in New Issue
Block a user