mirror of
https://github.com/holub/mame
synced 2025-04-26 10:13:37 +03:00
Hooray for templates.
This commit is contained in:
parent
2c2fc07d6b
commit
7d27b8c9ff
3815
src/emu/rendersw.c
3815
src/emu/rendersw.c
File diff suppressed because it is too large
Load Diff
@ -45,6 +45,7 @@
|
||||
#include "ui.h"
|
||||
#include "aviio.h"
|
||||
#include "crsshair.h"
|
||||
#include "rendersw.c"
|
||||
|
||||
#include "snap.lh"
|
||||
|
||||
@ -81,15 +82,6 @@ const UINT8 video_manager::s_skiptable[FRAMESKIP_LEVELS][FRAMESKIP_LEVELS] =
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// FUNCTION PROTOTYPES
|
||||
//**************************************************************************
|
||||
|
||||
// software rendering
|
||||
static void rgb888_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// VIDEO MANAGER
|
||||
//**************************************************************************
|
||||
@ -1076,7 +1068,7 @@ void video_manager::create_snapshot_bitmap(screen_device *screen)
|
||||
// render the screen there
|
||||
render_primitive_list &primlist = m_snap_target->get_primitives();
|
||||
primlist.acquire_lock();
|
||||
rgb888_draw_primitives(primlist, &m_snap_bitmap.pix32(0), width, height, m_snap_bitmap.rowpixels());
|
||||
software_renderer<UINT32, 0,0,0, 16,8,0, false, true>::draw_primitives(primlist, &m_snap_bitmap.pix32(0), width, height, m_snap_bitmap.rowpixels());
|
||||
primlist.release_lock();
|
||||
}
|
||||
|
||||
@ -1299,21 +1291,3 @@ bool video_assert_out_of_range_pixels(running_machine &machine, bitmap_ind16 &bi
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// SOFTWARE RENDERING
|
||||
//**************************************************************************
|
||||
|
||||
#define FUNC_PREFIX(x) rgb888_##x
|
||||
#define PIXEL_TYPE UINT32
|
||||
#define SRCSHIFT_R 0
|
||||
#define SRCSHIFT_G 0
|
||||
#define SRCSHIFT_B 0
|
||||
#define DSTSHIFT_R 16
|
||||
#define DSTSHIFT_G 8
|
||||
#define DSTSHIFT_B 0
|
||||
#define BILINEAR_FILTER 1
|
||||
|
||||
#include "rendersw.c"
|
||||
|
@ -16,6 +16,7 @@
|
||||
// MAME headers
|
||||
#include "emu.h"
|
||||
#include "ui.h"
|
||||
#include "rendersw.c"
|
||||
|
||||
// standard SDL headers
|
||||
#include "sdlinc.h"
|
||||
@ -115,13 +116,6 @@ static int drawsdl_xy_to_render_target(sdl_window_info *window, int x, int y, in
|
||||
static void setup_texture(sdl_window_info *window, int tempwidth, int tempheight);
|
||||
#endif
|
||||
|
||||
// soft rendering
|
||||
static void drawsdl_rgb888_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
static void drawsdl_bgr888_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
static void drawsdl_bgra888_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
static void drawsdl_rgb565_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
static void drawsdl_rgb555_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
|
||||
// YUV overlays
|
||||
|
||||
static void drawsdl_yuv_init(sdl_info *sdl);
|
||||
@ -810,23 +804,23 @@ static int drawsdl_window_draw(sdl_window_info *window, UINT32 dc, int update)
|
||||
switch (rmask)
|
||||
{
|
||||
case 0x0000ff00:
|
||||
drawsdl_bgra888_draw_primitives(*window->primlist, surfptr, mamewidth, mameheight, pitch / 4);
|
||||
software_renderer<UINT32, 0,0,0, 8,16,24>::draw_primitives(*window->primlist, surfptr, mamewidth, mameheight, pitch / 4);
|
||||
break;
|
||||
|
||||
case 0x00ff0000:
|
||||
drawsdl_rgb888_draw_primitives(*window->primlist, surfptr, mamewidth, mameheight, pitch / 4);
|
||||
software_renderer<UINT32, 0,0,0, 16,8,0>::draw_primitives(*window->primlist, surfptr, mamewidth, mameheight, pitch / 4);
|
||||
break;
|
||||
|
||||
case 0x000000ff:
|
||||
drawsdl_bgr888_draw_primitives(*window->primlist, surfptr, mamewidth, mameheight, pitch / 4);
|
||||
software_renderer<UINT32, 0,0,0, 0,8,16>::draw_primitives(*window->primlist, surfptr, mamewidth, mameheight, pitch / 4);
|
||||
break;
|
||||
|
||||
case 0xf800:
|
||||
drawsdl_rgb565_draw_primitives(*window->primlist, surfptr, mamewidth, mameheight, pitch / 2);
|
||||
software_renderer<UINT16, 3,2,3, 11,5,0>::draw_primitives(*window->primlist, surfptr, mamewidth, mameheight, pitch / 2);
|
||||
break;
|
||||
|
||||
case 0x7c00:
|
||||
drawsdl_rgb555_draw_primitives(*window->primlist, surfptr, mamewidth, mameheight, pitch / 2);
|
||||
software_renderer<UINT16, 3,3,3, 10,5,0>::draw_primitives(*window->primlist, surfptr, mamewidth, mameheight, pitch / 2);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -838,7 +832,7 @@ static int drawsdl_window_draw(sdl_window_info *window, UINT32 dc, int update)
|
||||
{
|
||||
assert (sdl->yuv_bitmap != NULL);
|
||||
assert (surfptr != NULL);
|
||||
drawsdl_rgb555_draw_primitives(*window->primlist, sdl->yuv_bitmap, sdl->hw_scale_width, sdl->hw_scale_height, sdl->hw_scale_width);
|
||||
software_renderer<UINT16, 3,3,3, 10,5,0>::draw_primitives(*window->primlist, sdl->yuv_bitmap, sdl->hw_scale_width, sdl->hw_scale_height, sdl->hw_scale_width);
|
||||
sm->yuv_blit((UINT16 *)sdl->yuv_bitmap, sdl, surfptr, pitch);
|
||||
}
|
||||
|
||||
@ -879,66 +873,6 @@ static int drawsdl_window_draw(sdl_window_info *window, UINT32 dc, int update)
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
//============================================================
|
||||
// SOFTWARE RENDERING
|
||||
//============================================================
|
||||
|
||||
#define FUNC_PREFIX(x) drawsdl_rgb888_##x
|
||||
#define PIXEL_TYPE UINT32
|
||||
#define SRCSHIFT_R 0
|
||||
#define SRCSHIFT_G 0
|
||||
#define SRCSHIFT_B 0
|
||||
#define DSTSHIFT_R 16
|
||||
#define DSTSHIFT_G 8
|
||||
#define DSTSHIFT_B 0
|
||||
|
||||
#include "rendersw.c"
|
||||
|
||||
#define FUNC_PREFIX(x) drawsdl_bgr888_##x
|
||||
#define PIXEL_TYPE UINT32
|
||||
#define SRCSHIFT_R 0
|
||||
#define SRCSHIFT_G 0
|
||||
#define SRCSHIFT_B 0
|
||||
#define DSTSHIFT_R 0
|
||||
#define DSTSHIFT_G 8
|
||||
#define DSTSHIFT_B 16
|
||||
|
||||
#include "rendersw.c"
|
||||
|
||||
#define FUNC_PREFIX(x) drawsdl_bgra888_##x
|
||||
#define PIXEL_TYPE UINT32
|
||||
#define SRCSHIFT_R 0
|
||||
#define SRCSHIFT_G 0
|
||||
#define SRCSHIFT_B 0
|
||||
#define DSTSHIFT_R 8
|
||||
#define DSTSHIFT_G 16
|
||||
#define DSTSHIFT_B 24
|
||||
|
||||
#include "rendersw.c"
|
||||
|
||||
#define FUNC_PREFIX(x) drawsdl_rgb565_##x
|
||||
#define PIXEL_TYPE UINT16
|
||||
#define SRCSHIFT_R 3
|
||||
#define SRCSHIFT_G 2
|
||||
#define SRCSHIFT_B 3
|
||||
#define DSTSHIFT_R 11
|
||||
#define DSTSHIFT_G 5
|
||||
#define DSTSHIFT_B 0
|
||||
|
||||
#include "rendersw.c"
|
||||
|
||||
#define FUNC_PREFIX(x) drawsdl_rgb555_##x
|
||||
#define PIXEL_TYPE UINT16
|
||||
#define SRCSHIFT_R 3
|
||||
#define SRCSHIFT_G 3
|
||||
#define SRCSHIFT_B 3
|
||||
#define DSTSHIFT_R 10
|
||||
#define DSTSHIFT_G 5
|
||||
#define DSTSHIFT_B 0
|
||||
|
||||
#include "rendersw.c"
|
||||
|
||||
//============================================================
|
||||
// YUV Blitting
|
||||
//============================================================
|
||||
|
@ -51,6 +51,7 @@
|
||||
#include "render.h"
|
||||
#include "rendutil.h"
|
||||
#include "options.h"
|
||||
#include "rendersw.c"
|
||||
|
||||
// MAMEOS headers
|
||||
#include "winmain.h"
|
||||
@ -59,24 +60,6 @@
|
||||
|
||||
|
||||
|
||||
//============================================================
|
||||
// DEBUGGING
|
||||
//============================================================
|
||||
|
||||
|
||||
|
||||
//============================================================
|
||||
// CONSTANTS
|
||||
//============================================================
|
||||
|
||||
|
||||
|
||||
//============================================================
|
||||
// MACROS
|
||||
//============================================================
|
||||
|
||||
|
||||
|
||||
//============================================================
|
||||
// TYPE DEFINITIONS
|
||||
//============================================================
|
||||
@ -200,16 +183,6 @@ static int config_adapter_mode(win_window_info *window);
|
||||
static void get_adapter_for_monitor(dd_info *dd, win_monitor_info *monitor);
|
||||
static void pick_best_mode(win_window_info *window);
|
||||
|
||||
// rendering
|
||||
static void drawdd_rgb888_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
static void drawdd_bgr888_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
static void drawdd_rgb565_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
static void drawdd_rgb555_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
static void drawdd_rgb888_nr_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
static void drawdd_bgr888_nr_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
static void drawdd_rgb565_nr_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
static void drawdd_rgb555_nr_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
|
||||
|
||||
|
||||
//============================================================
|
||||
@ -407,10 +380,10 @@ static int drawdd_window_draw(win_window_info *window, HDC dc, int update)
|
||||
// based on the target format, use one of our standard renderers
|
||||
switch (dd->blitdesc.ddpfPixelFormat.dwRBitMask)
|
||||
{
|
||||
case 0x00ff0000: drawdd_rgb888_draw_primitives(*window->primlist, dd->membuffer, dd->blitwidth, dd->blitheight, dd->blitwidth); break;
|
||||
case 0x000000ff: drawdd_bgr888_draw_primitives(*window->primlist, dd->membuffer, dd->blitwidth, dd->blitheight, dd->blitwidth); break;
|
||||
case 0xf800: drawdd_rgb565_draw_primitives(*window->primlist, dd->membuffer, dd->blitwidth, dd->blitheight, dd->blitwidth); break;
|
||||
case 0x7c00: drawdd_rgb555_draw_primitives(*window->primlist, dd->membuffer, dd->blitwidth, dd->blitheight, dd->blitwidth); break;
|
||||
case 0x00ff0000: software_renderer<UINT32, 0,0,0, 16,8,0>::draw_primitives(*window->primlist, dd->membuffer, dd->blitwidth, dd->blitheight, dd->blitwidth); break;
|
||||
case 0x000000ff: software_renderer<UINT32, 0,0,0, 0,8,16>::draw_primitives(*window->primlist, dd->membuffer, dd->blitwidth, dd->blitheight, dd->blitwidth); break;
|
||||
case 0xf800: software_renderer<UINT16, 3,2,3, 11,5,0>::draw_primitives(*window->primlist, dd->membuffer, dd->blitwidth, dd->blitheight, dd->blitwidth); break;
|
||||
case 0x7c00: software_renderer<UINT16, 3,3,3, 10,5,0>::draw_primitives(*window->primlist, dd->membuffer, dd->blitwidth, dd->blitheight, dd->blitwidth); break;
|
||||
default:
|
||||
mame_printf_verbose("DirectDraw: Unknown target mode: R=%08X G=%08X B=%08X\n", (int)dd->blitdesc.ddpfPixelFormat.dwRBitMask, (int)dd->blitdesc.ddpfPixelFormat.dwGBitMask, (int)dd->blitdesc.ddpfPixelFormat.dwBBitMask);
|
||||
break;
|
||||
@ -443,10 +416,10 @@ static int drawdd_window_draw(win_window_info *window, HDC dc, int update)
|
||||
// based on the target format, use one of our standard renderers
|
||||
switch (dd->blitdesc.ddpfPixelFormat.dwRBitMask)
|
||||
{
|
||||
case 0x00ff0000: drawdd_rgb888_nr_draw_primitives(*window->primlist, dd->blitdesc.lpSurface, dd->blitwidth, dd->blitheight, dd->blitdesc.lPitch / 4); break;
|
||||
case 0x000000ff: drawdd_bgr888_nr_draw_primitives(*window->primlist, dd->blitdesc.lpSurface, dd->blitwidth, dd->blitheight, dd->blitdesc.lPitch / 4); break;
|
||||
case 0xf800: drawdd_rgb565_nr_draw_primitives(*window->primlist, dd->blitdesc.lpSurface, dd->blitwidth, dd->blitheight, dd->blitdesc.lPitch / 2); break;
|
||||
case 0x7c00: drawdd_rgb555_nr_draw_primitives(*window->primlist, dd->blitdesc.lpSurface, dd->blitwidth, dd->blitheight, dd->blitdesc.lPitch / 2); break;
|
||||
case 0x00ff0000: software_renderer<UINT32, 0,0,0, 16,8,0, true>::draw_primitives(*window->primlist, dd->blitdesc.lpSurface, dd->blitwidth, dd->blitheight, dd->blitdesc.lPitch / 4); break;
|
||||
case 0x000000ff: software_renderer<UINT32, 0,0,0, 0,8,16, true>::draw_primitives(*window->primlist, dd->blitdesc.lpSurface, dd->blitwidth, dd->blitheight, dd->blitdesc.lPitch / 4); break;
|
||||
case 0xf800: software_renderer<UINT32, 3,2,3, 11,5,0, true>::draw_primitives(*window->primlist, dd->blitdesc.lpSurface, dd->blitwidth, dd->blitheight, dd->blitdesc.lPitch / 2); break;
|
||||
case 0x7c00: software_renderer<UINT32, 3,3,3, 10,5,0, true>::draw_primitives(*window->primlist, dd->blitdesc.lpSurface, dd->blitwidth, dd->blitheight, dd->blitdesc.lPitch / 2); break;
|
||||
default:
|
||||
mame_printf_verbose("DirectDraw: Unknown target mode: R=%08X G=%08X B=%08X\n", (int)dd->blitdesc.ddpfPixelFormat.dwRBitMask, (int)dd->blitdesc.ddpfPixelFormat.dwGBitMask, (int)dd->blitdesc.ddpfPixelFormat.dwBBitMask);
|
||||
break;
|
||||
@ -1359,107 +1332,3 @@ static void pick_best_mode(win_window_info *window)
|
||||
if (result != DD_OK) mame_printf_verbose("DirectDraw: Error %08X during EnumDisplayModes call\n", (int)result);
|
||||
mame_printf_verbose("DirectDraw: Mode selected = %4dx%4d@%3dHz\n", dd->width, dd->height, dd->refresh);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//============================================================
|
||||
// SOFTWARE RENDERING
|
||||
//============================================================
|
||||
|
||||
#define FUNC_PREFIX(x) drawdd_rgb888_##x
|
||||
#define PIXEL_TYPE UINT32
|
||||
#define SRCSHIFT_R 0
|
||||
#define SRCSHIFT_G 0
|
||||
#define SRCSHIFT_B 0
|
||||
#define DSTSHIFT_R 16
|
||||
#define DSTSHIFT_G 8
|
||||
#define DSTSHIFT_B 0
|
||||
|
||||
#include "rendersw.c"
|
||||
|
||||
#define FUNC_PREFIX(x) drawdd_bgr888_##x
|
||||
#define PIXEL_TYPE UINT32
|
||||
#define SRCSHIFT_R 0
|
||||
#define SRCSHIFT_G 0
|
||||
#define SRCSHIFT_B 0
|
||||
#define DSTSHIFT_R 0
|
||||
#define DSTSHIFT_G 8
|
||||
#define DSTSHIFT_B 16
|
||||
|
||||
#include "rendersw.c"
|
||||
|
||||
#define FUNC_PREFIX(x) drawdd_rgb565_##x
|
||||
#define PIXEL_TYPE UINT16
|
||||
#define SRCSHIFT_R 3
|
||||
#define SRCSHIFT_G 2
|
||||
#define SRCSHIFT_B 3
|
||||
#define DSTSHIFT_R 11
|
||||
#define DSTSHIFT_G 5
|
||||
#define DSTSHIFT_B 0
|
||||
|
||||
#include "rendersw.c"
|
||||
|
||||
#define FUNC_PREFIX(x) drawdd_rgb555_##x
|
||||
#define PIXEL_TYPE UINT16
|
||||
#define SRCSHIFT_R 3
|
||||
#define SRCSHIFT_G 3
|
||||
#define SRCSHIFT_B 3
|
||||
#define DSTSHIFT_R 10
|
||||
#define DSTSHIFT_G 5
|
||||
#define DSTSHIFT_B 0
|
||||
|
||||
#include "rendersw.c"
|
||||
|
||||
|
||||
|
||||
//============================================================
|
||||
// SOFTWARE RENDERING -- NO READING VARIANTS
|
||||
//============================================================
|
||||
|
||||
#define FUNC_PREFIX(x) drawdd_rgb888_nr_##x
|
||||
#define PIXEL_TYPE UINT32
|
||||
#define SRCSHIFT_R 0
|
||||
#define SRCSHIFT_G 0
|
||||
#define SRCSHIFT_B 0
|
||||
#define DSTSHIFT_R 16
|
||||
#define DSTSHIFT_G 8
|
||||
#define DSTSHIFT_B 0
|
||||
#define NO_DEST_READ 1
|
||||
|
||||
#include "rendersw.c"
|
||||
|
||||
#define FUNC_PREFIX(x) drawdd_bgr888_nr_##x
|
||||
#define PIXEL_TYPE UINT32
|
||||
#define SRCSHIFT_R 0
|
||||
#define SRCSHIFT_G 0
|
||||
#define SRCSHIFT_B 0
|
||||
#define DSTSHIFT_R 0
|
||||
#define DSTSHIFT_G 8
|
||||
#define DSTSHIFT_B 16
|
||||
#define NO_DEST_READ 1
|
||||
|
||||
#include "rendersw.c"
|
||||
|
||||
#define FUNC_PREFIX(x) drawdd_rgb565_nr_##x
|
||||
#define PIXEL_TYPE UINT16
|
||||
#define SRCSHIFT_R 3
|
||||
#define SRCSHIFT_G 2
|
||||
#define SRCSHIFT_B 3
|
||||
#define DSTSHIFT_R 11
|
||||
#define DSTSHIFT_G 5
|
||||
#define DSTSHIFT_B 0
|
||||
#define NO_DEST_READ 1
|
||||
|
||||
#include "rendersw.c"
|
||||
|
||||
#define FUNC_PREFIX(x) drawdd_rgb555_nr_##x
|
||||
#define PIXEL_TYPE UINT16
|
||||
#define SRCSHIFT_R 3
|
||||
#define SRCSHIFT_G 3
|
||||
#define SRCSHIFT_B 3
|
||||
#define DSTSHIFT_R 10
|
||||
#define DSTSHIFT_G 5
|
||||
#define DSTSHIFT_B 0
|
||||
#define NO_DEST_READ 1
|
||||
|
||||
#include "rendersw.c"
|
||||
|
@ -45,6 +45,7 @@
|
||||
|
||||
// MAME headers
|
||||
#include "emu.h"
|
||||
#include "rendersw.c"
|
||||
|
||||
// MAMEOS headers
|
||||
#include "window.h"
|
||||
@ -78,9 +79,6 @@ static void drawgdi_window_destroy(win_window_info *window);
|
||||
static render_primitive_list *drawgdi_window_get_primitives(win_window_info *window);
|
||||
static int drawgdi_window_draw(win_window_info *window, HDC dc, int update);
|
||||
|
||||
// rendering
|
||||
static void drawgdi_rgb888_draw_primitives(const render_primitive_list &primlist, void *dstdata, UINT32 width, UINT32 height, UINT32 pitch);
|
||||
|
||||
|
||||
|
||||
//============================================================
|
||||
@ -216,7 +214,7 @@ static int drawgdi_window_draw(win_window_info *window, HDC dc, int update)
|
||||
|
||||
// draw the primitives to the bitmap
|
||||
window->primlist->acquire_lock();
|
||||
drawgdi_rgb888_draw_primitives(*window->primlist, gdi->bmdata, width, height, pitch);
|
||||
software_renderer<UINT32, 0,0,0, 16,8,0>::draw_primitives(*window->primlist, gdi->bmdata, width, height, pitch);
|
||||
window->primlist->release_lock();
|
||||
|
||||
// fill in bitmap-specific info
|
||||
@ -230,20 +228,3 @@ static int drawgdi_window_draw(win_window_info *window, HDC dc, int update)
|
||||
gdi->bmdata, &gdi->bminfo, DIB_RGB_COLORS, SRCCOPY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//============================================================
|
||||
// SOFTWARE RENDERING
|
||||
//============================================================
|
||||
|
||||
#define FUNC_PREFIX(x) drawgdi_rgb888_##x
|
||||
#define PIXEL_TYPE UINT32
|
||||
#define SRCSHIFT_R 0
|
||||
#define SRCSHIFT_G 0
|
||||
#define SRCSHIFT_B 0
|
||||
#define DSTSHIFT_R 16
|
||||
#define DSTSHIFT_G 8
|
||||
#define DSTSHIFT_B 0
|
||||
|
||||
#include "rendersw.c"
|
||||
|
Loading…
Reference in New Issue
Block a user