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