From fea60278989402904d3a07114daee8575107e185 Mon Sep 17 00:00:00 2001 From: BearOso Date: Fri, 24 Mar 2023 17:44:45 -0500 Subject: [PATCH] Use alwaysinline with hq2x. --- filter/hq2x.cpp | 17 +++++++++-------- win32/wlanguage.h | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/filter/hq2x.cpp b/filter/hq2x.cpp index bd9fafd0..3ad42306 100644 --- a/filter/hq2x.cpp +++ b/filter/hq2x.cpp @@ -29,6 +29,7 @@ /* Modified to 16-bit R5G6B5 for Snes9x */ +#include "../port.h" #include #include @@ -62,12 +63,12 @@ static void init() } } -static inline uint32_t rgb2yuv(const uint32_t *table, uint16_t color) +static alwaysinline uint32_t rgb2yuv(const uint32_t *table, uint16_t color) { return (table[color]); } -static inline int yuv_diff(uint32_t yuv1, uint32_t yuv2) +static alwaysinline int yuv_diff(uint32_t yuv1, uint32_t yuv2) { #define YMASK 0xff0000 #define UMASK 0x00ff00 @@ -79,13 +80,13 @@ static inline int yuv_diff(uint32_t yuv1, uint32_t yuv2) ABSDIFF(yuv1 & VMASK, yuv2 & VMASK) > (6 << 0); } -static inline uint32_t interp_2px(uint16_t c1, int w1, uint16_t c2, int w2, int s) +static alwaysinline uint32_t interp_2px(uint16_t c1, int w1, uint16_t c2, int w2, int s) { return (((((c1 & 0x07e0) >> 5) * w1 + ((c2 & 0x07e0) >> 5) * w2) << (5 - s)) & 0x07e0) | (((((c1 & 0xf81f)) * w1 + ((c2 & 0xf81f)) * w2) >> s) & 0xf81f); } -static inline uint32_t interp_3px(uint16_t c1, int w1, uint16_t c2, int w2, uint16_t c3, int w3, int s) +static alwaysinline uint32_t interp_3px(uint16_t c1, int w1, uint16_t c2, int w2, uint16_t c3, int w3, int s) { return (((((c1 & 0x07e0) >> 5) * w1 + ((c2 & 0x07e0) >> 5) * w2 + ((c3 & 0x07e0) >> 5) * w3) << (5 - s)) & 0x07e0) | (((((c1 & 0xf81f)) * w1 + ((c2 & 0xf81f)) * w2 + ((c3 & 0xf81f)) * w3) >> s) & 0xf81f); @@ -119,7 +120,7 @@ static inline uint32_t interp_3px(uint16_t c1, int w1, uint16_t c2, int w2, uint /* Assuming p0..p8 is mapped to pixels 0..8, this function interpolates the * top-left pixel in the total of the 2x2 pixels to interpolates. The function * is also used for the 3 other pixels */ -static inline uint32_t hq2x_interp_1x1(const uint32_t *r2y, int k, +static alwaysinline uint32_t hq2x_interp_1x1(const uint32_t *r2y, int k, const uint16_t *w, int p0, int p1, int p2, int p3, int p4, int p5, @@ -170,7 +171,7 @@ static inline uint32_t hq2x_interp_1x1(const uint32_t *r2y, int k, * interpolates. The function is also used for the 3 other couples of pixels * defining the outline. The center pixel is not defined through this function, * since it's just the same as the original value. */ -static inline void hq3x_interp_2x1(uint16_t *dst, int dst_linesize, +static alwaysinline void hq3x_interp_2x1(uint16_t *dst, int dst_linesize, const uint32_t *r2y, int k, const uint16_t *w, int pos00, int pos01, @@ -239,7 +240,7 @@ static inline void hq3x_interp_2x1(uint16_t *dst, int dst_linesize, * top-left block of 2x2 pixels in the total of the 4x4 pixels (or 4 blocks) to * interpolates. The function is also used for the 3 other blocks of 2x2 * pixels. */ -static inline void hq4x_interp_2x2(uint16_t *dst, int dst_linesize, +static alwaysinline void hq4x_interp_2x2(uint16_t *dst, int dst_linesize, const uint32_t *r2y, int k, const uint16_t *w, int pos00, int pos01, @@ -389,7 +390,7 @@ static inline void hq4x_interp_2x2(uint16_t *dst, int dst_linesize, *dst11 = w4; } -static inline void hqx_filter(uint16_t *in, int in_pitch, uint16_t *out, int out_pitch, int width, int height, int n) +static alwaysinline void hqx_filter(uint16_t *in, int in_pitch, uint16_t *out, int out_pitch, int width, int height, int n) { int x, y; const uint32_t *r2y = yuvtable; diff --git a/win32/wlanguage.h b/win32/wlanguage.h index 51611112..47edd318 100644 --- a/win32/wlanguage.h +++ b/win32/wlanguage.h @@ -20,7 +20,7 @@ (c) Copyright 2001 - 2006 John Weidman\r\n\ (c) Copyright 2002 - 2010 Brad Jorsch, funkyass, Kris Bleakley, Nach, zones\r\n\ (c) Copyright 2006 - 2007 nitsuja\r\n\ -(c) Copyright 2009 - 2022 BearOso, OV2\r\n\r\n\ +(c) Copyright 2009 - 2023 BearOso, OV2\r\n\r\n\ Windows Port Authors: Matthew Kendora, funkyass, nitsuja, Nach, blip, OV2.\r\n\r\n\ Snes9x is a Super Nintendo Entertainment System\r\n\ emulator that allows you to play most games designed\r\n\