1
0
Fork 0

Opengl output support in SDL

Removed threading support in SDL
Rewrite of VGA Drawing to work line for line
Rewrite of VGA Text drawing using lookup tables
Rewrite of render function to handle the new line for line drawing.
Changed CGA/TANDY/Hercules to be more like their original hardware.


Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1611
This commit is contained in:
Sjoerd van der Berg 2004-01-28 14:39:05 +00:00
parent 2cfb92f5c6
commit 9bf1cd50f5
11 changed files with 714 additions and 610 deletions

View file

@ -16,7 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __RENDER_H
#define __RENDER_H
enum RENDER_Operation {
OP_None,
@ -25,11 +26,13 @@ enum RENDER_Operation {
OP_AdvMame2x,
};
typedef void (* RENDER_Part_Handler)(Bit8u * src,Bitu x,Bitu y,Bitu dx,Bitu dy);
typedef void (* RENDER_Draw_Handler)(RENDER_Part_Handler part_handler);
void RENDER_DoUpdate(void);
void RENDER_SetSize(Bitu width,Bitu height,Bitu bpp,Bitu pitch,double ratio,Bitu scalew,Bitu scaleh,RENDER_Draw_Handler draw_handler);
typedef void (* RENDER_Line_Handler)(Bit8u * src);
void RENDER_SetSize(Bitu width,Bitu height,Bitu bpp,Bitu pitch,double ratio,Bitu scalew,Bitu scaleh);
bool RENDER_StartUpdate(void);
void RENDER_EndUpdate(void);
void RENDER_SetPal(Bit8u entry,Bit8u red,Bit8u green,Bit8u blue);
extern RENDER_Line_Handler RENDER_DrawLine;
#endif

View file

@ -64,9 +64,6 @@ typedef struct {
bool chained; /* Enable or Disabled Chain 4 Mode */
bool blinking; /* Attribute bit 7 is blinking */
bool vline_double;
Bit8u vline_height;
/* Pixel Scrolling */
Bit8u pel_panning; /* Amount of pixels to skip when starting horizontal line */
Bit8u hlines_skip;
@ -94,19 +91,39 @@ typedef struct {
typedef struct {
bool resizing;
bool drawing;
Bitu width;
Bitu height;
Bitu pitch;
Bitu blank;
Bitu blocks;
Bitu panning;
Bitu address;
Bitu address_add;
Bitu address_line_total;
Bitu address_line;
Bitu lines_total;
Bitu lines_left;
Bitu lines_scaled;
Bitu split_line;
Bitu parts_total;
Bitu parts_lines;
Bitu parts_left;
struct {
Bitu vtotal;
Bitu vstart;
Bitu vend;
Bitu htotal;
Bitu hstart;
Bitu hend;
Bitu parts;
} micro;
Bitu scaleh;
bool double_width;
bool double_height;
Bitu lines;
bool double_scan;
bool double_scan_active;
Bit8u font_height;
Bit8u font[64*1024];
Bitu font1_start;
Bitu font2_start;
Bitu rows,cols;
struct {
Bit8u sline,eline;
Bit8u count,delay;
@ -302,6 +319,9 @@ extern Bit32u FillTable[16];
extern Bit32u CGA_2_Table[16];
extern Bit32u CGA_4_Table[256];
extern Bit32u CGA_16_Table[256];
extern Bit32u TXT_Font_Table[16];
extern Bit32u TXT_FG_Table[16];
extern Bit32u TXT_BG_Table[16];
extern Bit32u Expand16Table[4][16];
extern Bit32u Expand16BigTable[0x10000];

View file

@ -19,21 +19,8 @@
#ifndef __VIDEO_H
#define __VIDEO_H
enum GFX_MODES {
GFX_8BPP=0,
GFX_15BPP=1,
GFX_16BPP=2,
GFX_24BPP=3,
GFX_32BPP=4,
GFX_YUV=5,
GFX_MODE_SIZE=6
};
typedef void (* GFX_ResetCallBack)(void);
typedef void (* GFX_RenderCallBack)(Bit8u * data,Bitu pitch);
struct GFX_PalEntry {
Bit8u r;
Bit8u g;
@ -46,18 +33,16 @@ struct GFX_PalEntry {
void GFX_Events(void);
void GFX_SetPalette(Bitu start,Bitu count,GFX_PalEntry * entries);
GFX_MODES GFX_GetBestMode(Bitu bpp,Bitu & gfx_flags);
Bitu GFX_GetBestMode(Bitu bpp,Bitu & gfx_flags);
Bitu GFX_GetRGB(Bit8u red,Bit8u green,Bit8u blue);
void GFX_SetSize(Bitu width,Bitu height,GFX_MODES gfx_mode,double scalex,double scaley,GFX_ResetCallBack cb_reset, GFX_RenderCallBack cb_render);
void GFX_SetSize(Bitu width,Bitu height,Bitu bpp,double scalex,double scaley,GFX_ResetCallBack cb_reset);
void GFX_Start(void);
void GFX_Stop(void);
void GFX_SwitchFullScreen(void);
void GFX_Render_Blit(Bit8u * src,Bitu x,Bitu y,Bitu dx,Bitu dy);
void GFX_DoUpdate(void);
bool GFX_StartUpdate(Bit8u * & pixels,Bitu & pitch);
void GFX_EndUpdate(void);
#endif