From 7a806957ae63d974c14162d84136242a094637f4 Mon Sep 17 00:00:00 2001 From: firewave Date: Sun, 12 Jan 2020 01:39:30 +0100 Subject: rendersw.hxx: cleanups (nw) --- src/emu/rendersw.hxx | 479 ++++++++++++++++++++++++--------------------------- 1 file changed, 224 insertions(+), 255 deletions(-) diff --git a/src/emu/rendersw.hxx b/src/emu/rendersw.hxx index b1a032258d1..896d7dbfe18 100644 --- a/src/emu/rendersw.hxx +++ b/src/emu/rendersw.hxx @@ -603,12 +603,8 @@ private: // rasterization of a 16bpp palettized texture //------------------------------------------------- - static void draw_quad_palette16_none(const render_primitive &prim, _PixelType *dstdata, u32 pitch, quad_setup_data &setup) + static void draw_quad_palette16_none(const render_primitive &prim, _PixelType *dstdata, u32 pitch, const quad_setup_data &setup) { - s32 dudx = setup.dudx; - s32 dvdx = setup.dvdx; - s32 endx = setup.endx; - // ensure all parameters are valid assert(prim.texture.palette != nullptr); @@ -623,12 +619,12 @@ private: s32 curv = setup.startv + (y - setup.starty) * setup.dvdy; // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_palette16(prim.texture, curu, curv); + const u32 pix = get_texel_palette16(prim.texture, curu, curv); *dest++ = source32_to_dest(pix); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -653,16 +649,16 @@ private: s32 curv = setup.startv + (y - setup.starty) * setup.dvdy; // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_palette16(prim.texture, curu, curv); - u32 r = (source32_r(pix) * sr) >> 8; - u32 g = (source32_g(pix) * sg) >> 8; - u32 b = (source32_b(pix) * sb) >> 8; + const u32 pix = get_texel_palette16(prim.texture, curu, curv); + const u32 r = (source32_r(pix) * sr) >> 8; + const u32 g = (source32_g(pix) * sg) >> 8; + const u32 b = (source32_b(pix) * sb) >> 8; *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -689,17 +685,17 @@ private: s32 curv = setup.startv + (y - setup.starty) * setup.dvdy; // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_palette16(prim.texture, curu, curv); - u32 dpix = _NoDestRead ? 0 : *dest; - u32 r = (source32_r(pix) * sr + dest_r(dpix) * invsa) >> 8; - u32 g = (source32_g(pix) * sg + dest_g(dpix) * invsa) >> 8; - u32 b = (source32_b(pix) * sb + dest_b(dpix) * invsa) >> 8; + const u32 pix = get_texel_palette16(prim.texture, curu, curv); + const u32 dpix = _NoDestRead ? 0 : *dest; + const u32 r = (source32_r(pix) * sr + dest_r(dpix) * invsa) >> 8; + const u32 g = (source32_g(pix) * sg + dest_g(dpix) * invsa) >> 8; + const u32 b = (source32_b(pix) * sb + dest_b(dpix) * invsa) >> 8; *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -711,12 +707,8 @@ private: // rasterization of a 16bpp palettized texture //------------------------------------------------- - static void draw_quad_palette16_add(const render_primitive &prim, _PixelType *dstdata, u32 pitch, quad_setup_data &setup) + static void draw_quad_palette16_add(const render_primitive &prim, _PixelType *dstdata, u32 pitch, const quad_setup_data&setup) { - s32 dudx = setup.dudx; - s32 dvdx = setup.dvdx; - s32 endx = setup.endx; - // ensure all parameters are valid assert(prim.texture.palette != nullptr); @@ -731,12 +723,12 @@ private: s32 curv = setup.startv + (y - setup.starty) * setup.dvdy; // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_palette16(prim.texture, curu, curv); + const u32 pix = get_texel_palette16(prim.texture, curu, curv); if ((pix & 0xffffff) != 0) { - u32 dpix = _NoDestRead ? 0 : *dest; + const u32 dpix = _NoDestRead ? 0 : *dest; u32 r = source32_r(pix) + dest_r(dpix); u32 g = source32_g(pix) + dest_g(dpix); u32 b = source32_b(pix) + dest_b(dpix); @@ -746,8 +738,8 @@ private: *dest = dest_assemble_rgb(r, g, b); } dest++; - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -772,12 +764,12 @@ private: s32 curv = setup.startv + (y - setup.starty) * setup.dvdy; // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_palette16(prim.texture, curu, curv); + const u32 pix = get_texel_palette16(prim.texture, curu, curv); if ((pix & 0xffffff) != 0) { - u32 dpix = _NoDestRead ? 0 : *dest; + const u32 dpix = _NoDestRead ? 0 : *dest; u32 r = ((source32_r(pix) * sr) >> 8) + dest_r(dpix); u32 g = ((source32_g(pix) * sg) >> 8) + dest_g(dpix); u32 b = ((source32_b(pix) * sb) >> 8) + dest_b(dpix); @@ -785,8 +777,8 @@ private: g = (g | -(g >> (8 - _SrcShiftG))) & (0xff >> _SrcShiftG); b = (b | -(b >> (8 - _SrcShiftB))) & (0xff >> _SrcShiftB); *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -804,12 +796,8 @@ private: // rasterization of a 16bpp YUY image //------------------------------------------------- - static void draw_quad_yuy16_none(const render_primitive &prim, _PixelType *dstdata, u32 pitch, quad_setup_data &setup) + static void draw_quad_yuy16_none(const render_primitive &prim, _PixelType *dstdata, u32 pitch, const quad_setup_data&setup) { - s32 dudx = setup.dudx; - s32 dvdx = setup.dvdx; - s32 endx = setup.endx; - // fast case: no coloring, no alpha if (prim.color.r >= 1.0f && prim.color.g >= 1.0f && prim.color.b >= 1.0f && is_opaque(prim.color.a)) { @@ -821,12 +809,12 @@ private: s32 curv = setup.startv + (y - setup.starty) * setup.dvdy; // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); + const u32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); *dest++ = source32_to_dest(pix); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -851,16 +839,16 @@ private: s32 curv = setup.startv + (y - setup.starty) * setup.dvdy; // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); - u32 r = (source32_r(pix) * sr) >> 8; - u32 g = (source32_g(pix) * sg) >> 8; - u32 b = (source32_b(pix) * sb) >> 8; + const u32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); + const u32 r = (source32_r(pix) * sr) >> 8; + const u32 g = (source32_g(pix) * sg) >> 8; + const u32 b = (source32_b(pix) * sb) >> 8; *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -887,17 +875,17 @@ private: s32 curv = setup.startv + (y - setup.starty) * setup.dvdy; // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); - u32 dpix = _NoDestRead ? 0 : *dest; - u32 r = (source32_r(pix) * sr + dest_r(dpix) * invsa) >> 8; - u32 g = (source32_g(pix) * sg + dest_g(dpix) * invsa) >> 8; - u32 b = (source32_b(pix) * sb + dest_b(dpix) * invsa) >> 8; + const u32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); + const u32 dpix = _NoDestRead ? 0 : *dest; + const u32 r = (source32_r(pix) * sr + dest_r(dpix) * invsa) >> 8; + const u32 g = (source32_g(pix) * sg + dest_g(dpix) * invsa) >> 8; + const u32 b = (source32_b(pix) * sb + dest_b(dpix) * invsa) >> 8; *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -910,12 +898,8 @@ private: // conversion //------------------------------------------------- - static void draw_quad_yuy16_add(const render_primitive &prim, _PixelType *dstdata, u32 pitch, quad_setup_data &setup) + static void draw_quad_yuy16_add(const render_primitive &prim, _PixelType *dstdata, u32 pitch, const quad_setup_data&setup) { - s32 dudx = setup.dudx; - s32 dvdx = setup.dvdx; - s32 endx = setup.endx; - // simply can't do this without reading from the dest if (_NoDestRead) return; @@ -931,10 +915,10 @@ private: s32 curv = setup.startv + (y - setup.starty) * setup.dvdy; // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); - u32 dpix = _NoDestRead ? 0 : *dest; + const u32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); + const u32 dpix = _NoDestRead ? 0 : *dest; u32 r = source32_r(pix) + dest_r(dpix); u32 g = source32_g(pix) + dest_g(dpix); u32 b = source32_b(pix) + dest_b(dpix); @@ -942,8 +926,8 @@ private: g = (g | -(g >> (8 - _SrcShiftG))) & (0xff >> _SrcShiftG); b = (b | -(b >> (8 - _SrcShiftB))) & (0xff >> _SrcShiftB); *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -970,10 +954,10 @@ private: s32 curv = setup.startv + (y - setup.starty) * setup.dvdy; // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); - u32 dpix = _NoDestRead ? 0 : *dest; + const u32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); + const u32 dpix = _NoDestRead ? 0 : *dest; u32 r = ((source32_r(pix) * sr * sa) >> 16) + dest_r(dpix); u32 g = ((source32_g(pix) * sg * sa) >> 16) + dest_g(dpix); u32 b = ((source32_b(pix) * sb * sa) >> 16) + dest_b(dpix); @@ -981,8 +965,8 @@ private: g = (g | -(g >> (8 - _SrcShiftG))) & (0xff >> _SrcShiftG); b = (b | -(b >> (8 - _SrcShiftB))) & (0xff >> _SrcShiftB); *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -998,12 +982,9 @@ private: // a 32bpp RGB texture //------------------------------------------------- - static void draw_quad_rgb32(const render_primitive &prim, _PixelType *dstdata, u32 pitch, quad_setup_data &setup) + static void draw_quad_rgb32(const render_primitive &prim, _PixelType *dstdata, u32 pitch, const quad_setup_data&setup) { const rgb_t *palbase = prim.texture.palette; - s32 dudx = setup.dudx; - s32 dvdx = setup.dvdx; - s32 endx = setup.endx; // fast case: no coloring, no alpha if (prim.color.r >= 1.0f && prim.color.g >= 1.0f && prim.color.b >= 1.0f && is_opaque(prim.color.a)) @@ -1019,12 +1000,12 @@ private: if (palbase == nullptr) { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_rgb32(prim.texture, curu, curv); + const u32 pix = get_texel_rgb32(prim.texture, curu, curv); *dest++ = source32_to_dest(pix); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } @@ -1032,16 +1013,16 @@ private: else { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_rgb32(prim.texture, curu, curv); - u32 r = palbase[(pix >> 16) & 0xff] >> _SrcShiftR; - u32 g = palbase[(pix >> 8) & 0xff] >> _SrcShiftG; - u32 b = palbase[(pix >> 0) & 0xff] >> _SrcShiftB; + const u32 pix = get_texel_rgb32(prim.texture, curu, curv); + const u32 r = palbase[(pix >> 16) & 0xff] >> _SrcShiftR; + const u32 g = palbase[(pix >> 8) & 0xff] >> _SrcShiftG; + const u32 b = palbase[(pix >> 0) & 0xff] >> _SrcShiftB; *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -1070,16 +1051,16 @@ private: if (palbase == nullptr) { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_rgb32(prim.texture, curu, curv); - u32 r = (source32_r(pix) * sr) >> 8; - u32 g = (source32_g(pix) * sg) >> 8; - u32 b = (source32_b(pix) * sb) >> 8; + const u32 pix = get_texel_rgb32(prim.texture, curu, curv); + const u32 r = (source32_r(pix) * sr) >> 8; + const u32 g = (source32_g(pix) * sg) >> 8; + const u32 b = (source32_b(pix) * sb) >> 8; *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } @@ -1087,16 +1068,16 @@ private: else { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_rgb32(prim.texture, curu, curv); - u32 r = (palbase[(pix >> 16) & 0xff] * sr) >> (8 + _SrcShiftR); - u32 g = (palbase[(pix >> 8) & 0xff] * sg) >> (8 + _SrcShiftG); - u32 b = (palbase[(pix >> 0) & 0xff] * sb) >> (8 + _SrcShiftB); + const u32 pix = get_texel_rgb32(prim.texture, curu, curv); + const u32 r = (palbase[(pix >> 16) & 0xff] * sr) >> (8 + _SrcShiftR); + const u32 g = (palbase[(pix >> 8) & 0xff] * sg) >> (8 + _SrcShiftG); + const u32 b = (palbase[(pix >> 0) & 0xff] * sb) >> (8 + _SrcShiftB); *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -1127,17 +1108,17 @@ private: if (palbase == nullptr) { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_rgb32(prim.texture, curu, curv); - u32 dpix = _NoDestRead ? 0 : *dest; - u32 r = (source32_r(pix) * sr + dest_r(dpix) * invsa) >> 8; - u32 g = (source32_g(pix) * sg + dest_g(dpix) * invsa) >> 8; - u32 b = (source32_b(pix) * sb + dest_b(dpix) * invsa) >> 8; + const u32 pix = get_texel_rgb32(prim.texture, curu, curv); + const u32 dpix = _NoDestRead ? 0 : *dest; + const u32 r = (source32_r(pix) * sr + dest_r(dpix) * invsa) >> 8; + const u32 g = (source32_g(pix) * sg + dest_g(dpix) * invsa) >> 8; + const u32 b = (source32_b(pix) * sb + dest_b(dpix) * invsa) >> 8; *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } @@ -1145,17 +1126,17 @@ private: else { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_rgb32(prim.texture, curu, curv); - u32 dpix = _NoDestRead ? 0 : *dest; - u32 r = ((palbase[(pix >> 16) & 0xff] >> _SrcShiftR) * sr + dest_r(dpix) * invsa) >> 8; - u32 g = ((palbase[(pix >> 8) & 0xff] >> _SrcShiftG) * sg + dest_g(dpix) * invsa) >> 8; - u32 b = ((palbase[(pix >> 0) & 0xff] >> _SrcShiftB) * sb + dest_b(dpix) * invsa) >> 8; + const u32 pix = get_texel_rgb32(prim.texture, curu, curv); + const u32 dpix = _NoDestRead ? 0 : *dest; + const u32 r = ((palbase[(pix >> 16) & 0xff] >> _SrcShiftR) * sr + dest_r(dpix) * invsa) >> 8; + const u32 g = ((palbase[(pix >> 8) & 0xff] >> _SrcShiftG) * sg + dest_g(dpix) * invsa) >> 8; + const u32 b = ((palbase[(pix >> 0) & 0xff] >> _SrcShiftB) * sb + dest_b(dpix) * invsa) >> 8; *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -1168,12 +1149,9 @@ private: // rasterization by using RGB add //------------------------------------------------- - static void draw_quad_rgb32_add(const render_primitive &prim, _PixelType *dstdata, u32 pitch, quad_setup_data &setup) + static void draw_quad_rgb32_add(const render_primitive &prim, _PixelType *dstdata, u32 pitch, const quad_setup_data&setup) { const rgb_t *palbase = prim.texture.palette; - s32 dudx = setup.dudx; - s32 dvdx = setup.dvdx; - s32 endx = setup.endx; // simply can't do this without reading from the dest if (_NoDestRead) @@ -1193,10 +1171,10 @@ private: if (palbase == nullptr) { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 dpix = _NoDestRead ? 0 : *dest; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 dpix = _NoDestRead ? 0 : *dest; u32 r = source32_r(pix) + dest_r(dpix); u32 g = source32_g(pix) + dest_g(dpix); u32 b = source32_b(pix) + dest_b(dpix); @@ -1204,8 +1182,8 @@ private: g = (g | -(g >> (8 - _SrcShiftG))) & (0xff >> _SrcShiftG); b = (b | -(b >> (8 - _SrcShiftB))) & (0xff >> _SrcShiftB); *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } @@ -1213,10 +1191,10 @@ private: else { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 dpix = _NoDestRead ? 0 : *dest; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 dpix = _NoDestRead ? 0 : *dest; u32 r = (palbase[(pix >> 16) & 0xff] >> _SrcShiftR) + dest_r(dpix); u32 g = (palbase[(pix >> 8) & 0xff] >> _SrcShiftG) + dest_g(dpix); u32 b = (palbase[(pix >> 0) & 0xff] >> _SrcShiftB) + dest_b(dpix); @@ -1224,8 +1202,8 @@ private: g = (g | -(g >> (8 - _SrcShiftG))) & (0xff >> _SrcShiftG); b = (b | -(b >> (8 - _SrcShiftB))) & (0xff >> _SrcShiftB); *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -1256,10 +1234,10 @@ private: if (palbase == nullptr) { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 dpix = _NoDestRead ? 0 : *dest; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 dpix = _NoDestRead ? 0 : *dest; u32 r = ((source32_r(pix) * sr * sa) >> 16) + dest_r(dpix); u32 g = ((source32_g(pix) * sg * sa) >> 16) + dest_g(dpix); u32 b = ((source32_b(pix) * sb * sa) >> 16) + dest_b(dpix); @@ -1267,8 +1245,8 @@ private: g = (g | -(g >> (8 - _SrcShiftG))) & (0xff >> _SrcShiftG); b = (b | -(b >> (8 - _SrcShiftB))) & (0xff >> _SrcShiftB); *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } @@ -1276,10 +1254,10 @@ private: else { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 dpix = _NoDestRead ? 0 : *dest; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 dpix = _NoDestRead ? 0 : *dest; u32 r = ((palbase[(pix >> 16) & 0xff] * sr * sa) >> (16 + _SrcShiftR)) + dest_r(dpix); u32 g = ((palbase[(pix >> 8) & 0xff] * sr * sa) >> (16 + _SrcShiftR)) + dest_g(dpix); u32 b = ((palbase[(pix >> 0) & 0xff] * sr * sa) >> (16 + _SrcShiftR)) + dest_b(dpix); @@ -1287,8 +1265,8 @@ private: g = (g | -(g >> (8 - _SrcShiftG))) & (0xff >> _SrcShiftG); b = (b | -(b >> (8 - _SrcShiftB))) & (0xff >> _SrcShiftB); *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -1301,12 +1279,9 @@ private: // rasterization using RGB multiply //------------------------------------------------- - static void draw_quad_rgb32_multiply(const render_primitive &prim, _PixelType *dstdata, u32 pitch, quad_setup_data &setup) + static void draw_quad_rgb32_multiply(const render_primitive &prim, _PixelType *dstdata, u32 pitch, const quad_setup_data&setup) { const rgb_t *palbase = prim.texture.palette; - s32 dudx = setup.dudx; - s32 dvdx = setup.dvdx; - s32 endx = setup.endx; // simply can't do this without reading from the dest if (_NoDestRead) @@ -1326,33 +1301,33 @@ private: if (palbase == nullptr) { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 dpix = _NoDestRead ? 0 : *dest; - u32 r = (source32_r(pix) * dest_r(dpix)) >> (8 - _SrcShiftR); - u32 g = (source32_g(pix) * dest_g(dpix)) >> (8 - _SrcShiftG); - u32 b = (source32_b(pix) * dest_b(dpix)) >> (8 - _SrcShiftB); + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 dpix = _NoDestRead ? 0 : *dest; + const u32 r = (source32_r(pix) * dest_r(dpix)) >> (8 - _SrcShiftR); + const u32 g = (source32_g(pix) * dest_g(dpix)) >> (8 - _SrcShiftG); + const u32 b = (source32_b(pix) * dest_b(dpix)) >> (8 - _SrcShiftB); *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } else { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 dpix = _NoDestRead ? 0 : *dest; - u32 r = (palbase[(pix >> 16) & 0xff] * dest_r(dpix)) >> 8; - u32 g = (palbase[(pix >> 8) & 0xff] * dest_g(dpix)) >> 8; - u32 b = (palbase[(pix >> 0) & 0xff] * dest_b(dpix)) >> 8; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 dpix = _NoDestRead ? 0 : *dest; + const u32 r = (palbase[(pix >> 16) & 0xff] * dest_r(dpix)) >> 8; + const u32 g = (palbase[(pix >> 8) & 0xff] * dest_g(dpix)) >> 8; + const u32 b = (palbase[(pix >> 0) & 0xff] * dest_b(dpix)) >> 8; *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -1381,33 +1356,33 @@ private: if (palbase == nullptr) { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 dpix = _NoDestRead ? 0 : *dest; - u32 r = (source32_r(pix) * sr * dest_r(dpix)) >> (16 - _SrcShiftR); - u32 g = (source32_g(pix) * sg * dest_g(dpix)) >> (16 - _SrcShiftG); - u32 b = (source32_b(pix) * sb * dest_b(dpix)) >> (16 - _SrcShiftB); + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 dpix = _NoDestRead ? 0 : *dest; + const u32 r = (source32_r(pix) * sr * dest_r(dpix)) >> (16 - _SrcShiftR); + const u32 g = (source32_g(pix) * sg * dest_g(dpix)) >> (16 - _SrcShiftG); + const u32 b = (source32_b(pix) * sb * dest_b(dpix)) >> (16 - _SrcShiftB); *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } else { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 dpix = _NoDestRead ? 0 : *dest; - u32 r = (palbase[(pix >> 16) & 0xff] * sr * dest_r(dpix)) >> 16; - u32 g = (palbase[(pix >> 8) & 0xff] * sg * dest_g(dpix)) >> 16; - u32 b = (palbase[(pix >> 0) & 0xff] * sb * dest_b(dpix)) >> 16; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 dpix = _NoDestRead ? 0 : *dest; + const u32 r = (palbase[(pix >> 16) & 0xff] * sr * dest_r(dpix)) >> 16; + const u32 g = (palbase[(pix >> 8) & 0xff] * sg * dest_g(dpix)) >> 16; + const u32 b = (palbase[(pix >> 0) & 0xff] * sb * dest_b(dpix)) >> 16; *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -1424,12 +1399,9 @@ private: // rasterization using standard alpha blending //------------------------------------------------- - static void draw_quad_argb32_alpha(const render_primitive &prim, _PixelType *dstdata, u32 pitch, quad_setup_data &setup) + static void draw_quad_argb32_alpha(const render_primitive &prim, _PixelType *dstdata, u32 pitch, const quad_setup_data&setup) { const rgb_t *palbase = prim.texture.palette; - s32 dudx = setup.dudx; - s32 dvdx = setup.dvdx; - s32 endx = setup.endx; // fast case: no coloring, no alpha if (prim.color.r >= 1.0f && prim.color.g >= 1.0f && prim.color.b >= 1.0f && is_opaque(prim.color.a)) @@ -1445,23 +1417,23 @@ private: if (palbase == nullptr) { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 ta = pix >> 24; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 ta = pix >> 24; if (ta != 0) { - u32 dpix = _NoDestRead ? 0 : *dest; - u32 invta = 0x100 - ta; - u32 r = (source32_r(pix) * ta + dest_r(dpix) * invta) >> 8; - u32 g = (source32_g(pix) * ta + dest_g(dpix) * invta) >> 8; - u32 b = (source32_b(pix) * ta + dest_b(dpix) * invta) >> 8; + const u32 dpix = _NoDestRead ? 0 : *dest; + const u32 invta = 0x100 - ta; + const u32 r = (source32_r(pix) * ta + dest_r(dpix) * invta) >> 8; + const u32 g = (source32_g(pix) * ta + dest_g(dpix) * invta) >> 8; + const u32 b = (source32_b(pix) * ta + dest_b(dpix) * invta) >> 8; *dest = dest_assemble_rgb(r, g, b); } dest++; - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } @@ -1469,23 +1441,23 @@ private: else { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 ta = pix >> 24; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 ta = pix >> 24; if (ta != 0) { - u32 dpix = _NoDestRead ? 0 : *dest; - u32 invta = 0x100 - ta; - u32 r = ((palbase[(pix >> 16) & 0xff] >> _SrcShiftR) * ta + dest_r(dpix) * invta) >> 8; - u32 g = ((palbase[(pix >> 8) & 0xff] >> _SrcShiftG) * ta + dest_g(dpix) * invta) >> 8; - u32 b = ((palbase[(pix >> 0) & 0xff] >> _SrcShiftB) * ta + dest_b(dpix) * invta) >> 8; + const u32 dpix = _NoDestRead ? 0 : *dest; + const u32 invta = 0x100 - ta; + const u32 r = ((palbase[(pix >> 16) & 0xff] >> _SrcShiftR) * ta + dest_r(dpix) * invta) >> 8; + const u32 g = ((palbase[(pix >> 8) & 0xff] >> _SrcShiftG) * ta + dest_g(dpix) * invta) >> 8; + const u32 b = ((palbase[(pix >> 0) & 0xff] >> _SrcShiftB) * ta + dest_b(dpix) * invta) >> 8; *dest = dest_assemble_rgb(r, g, b); } dest++; - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -1516,23 +1488,23 @@ private: if (palbase == nullptr) { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 ta = (pix >> 24) * sa; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 ta = (pix >> 24) * sa; if (ta != 0) { - u32 dpix = _NoDestRead ? 0 : *dest; - u32 invsta = (0x10000 - ta) << 8; - u32 r = (source32_r(pix) * sr * ta + dest_r(dpix) * invsta) >> 24; - u32 g = (source32_g(pix) * sg * ta + dest_g(dpix) * invsta) >> 24; - u32 b = (source32_b(pix) * sb * ta + dest_b(dpix) * invsta) >> 24; + const u32 dpix = _NoDestRead ? 0 : *dest; + const u32 invsta = (0x10000 - ta) << 8; + const u32 r = (source32_r(pix) * sr * ta + dest_r(dpix) * invsta) >> 24; + const u32 g = (source32_g(pix) * sg * ta + dest_g(dpix) * invsta) >> 24; + const u32 b = (source32_b(pix) * sb * ta + dest_b(dpix) * invsta) >> 24; *dest = dest_assemble_rgb(r, g, b); } dest++; - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } @@ -1541,23 +1513,23 @@ private: else { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 ta = (pix >> 24) * sa; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 ta = (pix >> 24) * sa; if (ta != 0) { - u32 dpix = _NoDestRead ? 0 : *dest; - u32 invsta = (0x10000 - ta) << 8; - u32 r = ((palbase[(pix >> 16) & 0xff] >> _SrcShiftR) * sr * ta + dest_r(dpix) * invsta) >> 24; - u32 g = ((palbase[(pix >> 8) & 0xff] >> _SrcShiftG) * sg * ta + dest_g(dpix) * invsta) >> 24; - u32 b = ((palbase[(pix >> 0) & 0xff] >> _SrcShiftB) * sb * ta + dest_b(dpix) * invsta) >> 24; + const u32 dpix = _NoDestRead ? 0 : *dest; + const u32 invsta = (0x10000 - ta) << 8; + const u32 r = ((palbase[(pix >> 16) & 0xff] >> _SrcShiftR) * sr * ta + dest_r(dpix) * invsta) >> 24; + const u32 g = ((palbase[(pix >> 8) & 0xff] >> _SrcShiftG) * sg * ta + dest_g(dpix) * invsta) >> 24; + const u32 b = ((palbase[(pix >> 0) & 0xff] >> _SrcShiftB) * sb * ta + dest_b(dpix) * invsta) >> 24; *dest = dest_assemble_rgb(r, g, b); } dest++; - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -1570,12 +1542,9 @@ private: // rasterization by using RGB add //------------------------------------------------- - static void draw_quad_argb32_add(const render_primitive &prim, _PixelType *dstdata, u32 pitch, quad_setup_data &setup) + static void draw_quad_argb32_add(const render_primitive &prim, _PixelType *dstdata, u32 pitch, const quad_setup_data&setup) { const rgb_t *palbase = prim.texture.palette; - s32 dudx = setup.dudx; - s32 dvdx = setup.dvdx; - s32 endx = setup.endx; // simply can't do this without reading from the dest if (_NoDestRead) @@ -1595,13 +1564,13 @@ private: if (palbase == nullptr) { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 ta = pix >> 24; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 ta = pix >> 24; if (ta != 0) { - u32 dpix = _NoDestRead ? 0 : *dest; + const u32 dpix = _NoDestRead ? 0 : *dest; u32 r = ((source32_r(pix) * ta) >> 8) + dest_r(dpix); u32 g = ((source32_g(pix) * ta) >> 8) + dest_g(dpix); u32 b = ((source32_b(pix) * ta) >> 8) + dest_b(dpix); @@ -1611,8 +1580,8 @@ private: *dest = dest_assemble_rgb(r, g, b); } dest++; - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } @@ -1620,13 +1589,13 @@ private: else { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 ta = pix >> 24; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 ta = pix >> 24; if (ta != 0) { - u32 dpix = _NoDestRead ? 0 : *dest; + const u32 dpix = _NoDestRead ? 0 : *dest; u32 r = ((palbase[(pix >> 16) & 0xff] * ta) >> (8 + _SrcShiftR)) + dest_r(dpix); u32 g = ((palbase[(pix >> 8) & 0xff] * ta) >> (8 + _SrcShiftG)) + dest_g(dpix); u32 b = ((palbase[(pix >> 0) & 0xff] * ta) >> (8 + _SrcShiftB)) + dest_b(dpix); @@ -1636,8 +1605,8 @@ private: *dest = dest_assemble_rgb(r, g, b); } dest++; - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } @@ -1668,13 +1637,13 @@ private: if (palbase == nullptr) { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 ta = (pix >> 24) * sa; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 ta = (pix >> 24) * sa; if (ta != 0) { - u32 dpix = _NoDestRead ? 0 : *dest; + const u32 dpix = _NoDestRead ? 0 : *dest; u32 r = ((source32_r(pix) * sr * ta) >> 24) + dest_r(dpix); u32 g = ((source32_g(pix) * sg * ta) >> 24) + dest_g(dpix); u32 b = ((source32_b(pix) * sb * ta) >> 24) + dest_b(dpix); @@ -1684,8 +1653,8 @@ private: *dest = dest_assemble_rgb(r, g, b); } dest++; - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } @@ -1693,13 +1662,13 @@ private: else { // loop over cols - for (s32 x = setup.startx; x < endx; x++) + for (s32 x = setup.startx; x < setup.endx; x++) { - u32 pix = get_texel_argb32(prim.texture, curu, curv); - u32 ta = (pix >> 24) * sa; + const u32 pix = get_texel_argb32(prim.texture, curu, curv); + const u32 ta = (pix >> 24) * sa; if (ta != 0) { - u32 dpix = _NoDestRead ? 0 : *dest; + const u32 dpix = _NoDestRead ? 0 : *dest; u32 r = ((palbase[(pix >> 16) & 0xff] * sr * ta) >> (24 + _SrcShiftR)) + dest_r(dpix); u32 g = ((palbase[(pix >> 8) & 0xff] * sr * ta) >> (24 + _SrcShiftR)) + dest_g(dpix); u32 b = ((palbase[(pix >> 0) & 0xff] * sr * ta) >> (24 + _SrcShiftR)) + dest_b(dpix); @@ -1709,8 +1678,8 @@ private: *dest = dest_assemble_rgb(r, g, b); } dest++; - curu += dudx; - curv += dvdx; + curu += setup.dudx; + curv += setup.dvdx; } } } -- cgit v1.2.3