diff --git a/src/wx/filters.h b/src/wx/filters.h index fe8bd5d8..86cddcdb 100644 --- a/src/wx/filters.h +++ b/src/wx/filters.h @@ -62,6 +62,11 @@ void hq4x32(u8 *src, u32 spitch, u8 *, u8 *dst, u32 dstp, int w, int h); void hq4x32_32(u8 *src, u32 spitch, u8 *, u8 *dst, u32 dstp, int w, int h); void hq4x16(u8 *src, u32 spitch, u8 *, u8 *dst, u32 dstp, int w, int h); +void xbrz2x32(u8 *src, u32 spitch, u8 *, u8 *dst, u32 dstp, int w, int h); +void xbrz3x32(u8 *src, u32 spitch, u8 *, u8 *dst, u32 dstp, int w, int h); +void xbrz4x32(u8 *src, u32 spitch, u8 *, u8 *dst, u32 dstp, int w, int h); +void xbrz5x32(u8 *src, u32 spitch, u8 *, u8 *dst, u32 dstp, int w, int h); + // call ifc to ignore previous frame / when starting new void InterframeCleanup(); // all 4 are MMX-accelerated if enabled diff --git a/src/wx/opts.cpp b/src/wx/opts.cpp index 4f82a74c..dfcb9670 100644 --- a/src/wx/opts.cpp +++ b/src/wx/opts.cpp @@ -133,7 +133,7 @@ opt_desc opts[] = { ENUMOPT("Display/Filter", wxTRANSLATE("Full-screen filter to apply"), gopts.filter, wxTRANSLATE("none|2xsai|super2xsai|supereagle|pixelate|advmame|" L"bilinear|bilinearplus|scanlines|tvmode|hq2x|lq2x|" - L"simple2x|simple3x|hq3x|simple4x|hq4x|xbrz|plugin")), + L"simple2x|simple3x|hq3x|simple4x|hq4x|xbrz2x|xbrz3x|xbrz4x|xbrz5x|plugin")), STROPT ("Display/FilterPlugin", wxTRANSLATE("Filter plugin library"), gopts.filter_plugin), ENUMOPT("Display/IFB", wxTRANSLATE("Interframe blending function"), gopts.ifb, wxTRANSLATE("none|smart|motionblur")), INTOPT ("Display/MaxThreads", wxTRANSLATE("Maximum number of threads to run filters in"), gopts.max_threads, 1, 8), diff --git a/src/wx/panel.cpp b/src/wx/panel.cpp index 545aa2c0..be10378f 100644 --- a/src/wx/panel.cpp +++ b/src/wx/panel.cpp @@ -1037,15 +1037,6 @@ DrawingPanel::DrawingPanel(int _width, int _height) : } while(0); } else { scale = builtin_ff_scale(gopts.filter); -#ifndef NO_ASM - // while there is a 32->16 frontend for these, it's probably more - // efficient to just use 16 to start with - // unfortunately, this also means that the 32-bit output needs to - // be sensed in lower code - if(gopts.filter == FF_HQ3X || gopts.filter == FF_HQ4X) - systemColorDepth = 16; - else -#endif #define out_16 (systemColorDepth == 16) systemColorDepth = 32; } @@ -1230,21 +1221,23 @@ public: hq2x32(src, instride, delta, dst, outstride, width, height); break; case FF_HQ3X: - hq3x32(src, instride, delta, dst, outstride, width, height); + hq3x32_32(src, instride, delta, dst, outstride, width, height); break; case FF_HQ4X: - hq4x32(src, instride, delta, dst, outstride, width, height); + hq4x32_32(src, instride, delta, dst, outstride, width, height); break; -/* Placeholder for xbrz support case FF_XBRZ2X: - break; + xbrz2x32(src, instride, delta, dst, outstride, width, height); + break; case FF_XBRZ3X: - break; + xbrz3x32(src, instride, delta, dst, outstride, width, height); + break; case FF_XBRZ4X: - break; + xbrz4x32(src, instride, delta, dst, outstride, width, height); + break; case FF_XBRZ5X: - break; -*/ + xbrz5x32(src, instride, delta, dst, outstride, width, height); + break; case FF_PLUGIN: // MFC interface did not do plugins in parallel // Probably because it's almost certain they carry state or do diff --git a/src/wx/wxvbam.h b/src/wx/wxvbam.h index 2e694773..5d091d3d 100644 --- a/src/wx/wxvbam.h +++ b/src/wx/wxvbam.h @@ -309,11 +309,12 @@ enum filtfunc { FF_NONE, FF_2XSAI, FF_SUPER2XSAI, FF_SUPEREAGLE, FF_PIXELATE, FF_ADVMAME, FF_BILINEAR, FF_BILINEARPLUS, FF_SCANLINES, FF_TV, FF_HQ2X, FF_LQ2X, FF_SIMPLE2X, FF_SIMPLE3X, FF_HQ3X, FF_SIMPLE4X, - FF_HQ4X, FF_PLUGIN // plugin must always be last + FF_HQ4X, FF_XBRZ2X, FF_XBRZ3X, FF_XBRZ4X, FF_XBRZ5X, FF_PLUGIN // plugin must always be last }; #define builtin_ff_scale(x) \ - ((x == FF_HQ4X || x == FF_SIMPLE4X) ? 4 : \ - (x == FF_HQ3X || x == FF_SIMPLE3X) ? 3 : \ + ((x == FF_XBRZ5X) ? 5 : \ + (x == FF_XBRZ4X || x == FF_HQ4X || x == FF_SIMPLE4X) ? 4 : \ + (x == FF_XBRZ3X || x == FF_HQ3X || x == FF_SIMPLE3X) ? 3 : \ x == FF_PLUGIN ? 0 : x == FF_NONE ? 1 : 2) enum ifbfunc { diff --git a/src/wx/xrc/DisplayConfig.xrc b/src/wx/xrc/DisplayConfig.xrc index 34f3349d..fedcb961 100644 --- a/src/wx/xrc/DisplayConfig.xrc +++ b/src/wx/xrc/DisplayConfig.xrc @@ -280,15 +280,15 @@ TV Mode HQ 2x LQ 2x - Simple 2X + Simple 2x Simple 3x HQ 3x Simple 4x HQ 4x - XBRz 2x (note: Not available yet) - XBRz 3x (note: Not available yet) - XBRz 4x (note: Not available yet) - XBRz 5x (note: Not available yet) + xBRZ 2x + xBRZ 3x + xBRZ 4x + xBRZ 5x Plugin