Commit graph

350 commits

Author SHA1 Message Date
Walter Agazzi
1698b26bcb AGS: Freetype: remove unneeded files 2023-09-03 22:27:43 +02:00
Walter Agazzi
d2e445fc49 AGS: Freetype: apply autohinting in alfont glyph loader 2023-09-03 22:27:43 +02:00
Walter Agazzi
cee11c1b99 AGS: Freetype: Update alfont and enable compilation 2023-09-03 22:27:43 +02:00
Walter Agazzi
cc168a16dd AGS: Freetype: Disable uncompilable code in ahhint 2023-09-03 22:27:43 +02:00
Walter Agazzi
4843b18fb2 AGS: Freetype: Use FT_Memory in ah_hinter_new 2023-09-03 22:27:43 +02:00
Walter Agazzi
a0211934db AGS: Freetype: Fix headers/declarations ahhint 2023-09-03 22:27:43 +02:00
Walter Agazzi
b318122139 AGS: Freetype: Fix headers/declarations ahglyph 2023-09-03 22:27:43 +02:00
Walter Agazzi
35b82f7c8f AGS: Freetype: Cleanup ahglyph/ahhint/ahloader headers 2023-09-03 22:27:43 +02:00
Walter Agazzi
7b39ad094a AGS: Freetype: Fix includes in ahtypes 2023-09-03 22:27:43 +02:00
Walter Agazzi
5ea6b4c048 AGS: Freetype: Fix includes/declarations in ahangles / ahglobal 2023-09-03 22:27:43 +02:00
Walter Agazzi
c2ee3b8b34 AGS: Freetype: Add required FT_SubGlyph type to ftgloadr 2023-09-03 22:27:43 +02:00
Walter Agazzi
365e74d51f AGS: Freetype: Clean up ftgloadr.h/cpp 2023-09-03 22:27:43 +02:00
Walter Agazzi
4c020ac290 AGS: Freetype: Add minimal fterrors and cleanup ftutil 2023-09-03 22:27:43 +02:00
Walter Agazzi
63fd2b928a AGS: Import glyph loader and some helpers from freetype2.1.3 2023-09-03 22:27:43 +02:00
Walter Agazzi
e4548cf1d7 AGS: Import autohinter module from freetype2.1.3 2023-09-03 22:27:43 +02:00
Lars Sundström
db192eed39 AGS: Add SCUMMVM_NEON prepreocessor flag to surface_neon.cpp
The surface_neon.cpp file is only added to the project if the flag
SCUMMVM_NEON is defined. However some backends, e.g. iOS, adds the
definition of SCUMMVM_NEON in create_project so the file can be
added to the project during configuration.
The same backend can then unset the definition due to changing
build target, the iOS simulator in this example, which runs can
run on x86_64 hosts which doesn't support NEON.

Since the project still include the source file it will be compiled.
Make sure to not build the file if not SCUMMVM_NEON is defined at
compile time.
2023-09-03 22:26:37 +02:00
Le Philousophe
22b629eeaa AGS: Fix build
vceqq_f32 must be used when comparing float32x4_t
2023-08-30 13:38:13 +02:00
Wyatt Radkiewicz
487512b60f AGS: GRAPHICS: Fix NEON compiling errors on switch 2023-08-30 09:22:05 +03:00
Wyatt Radkiewicz
c925852209 AGS: GRAPHICS: Remove a32/a64 specific NEON code 2023-08-30 00:17:00 +02:00
Wyatt Radkiewicz
2c8c449001 AGS: GRAPHICS: Only use 32bit fp math for NEON
Change argbBlendSIMD to only use 32bit floating point math when
compiling for armv7 or under.
2023-08-29 21:51:36 +02:00
Eugene Sandulenko
3bf4795c20
AGS: Added missing license headers 2023-08-28 21:22:18 +02:00
Wyatt Radkiewicz
742f1f296d AGS: Fixed code formatting 2023-08-28 21:16:42 +02:00
wyatt-radkiewicz
b22e073e35 AGS: Added AVX2 support for blending functions 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
1cf3c7832a AGS: GRAPHICS: SIMD blending refactoring
Here I moved the simd paths to their own translation units and removed
their unessesary header files. I also made it so that less of the
translation units have template forward declarations.

I made it so that surface.cpp now chooses at runtime what simd path it
should take.
2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
1dfbaa35c5 AGS: GRAPHICS: Moved duplicate code to DrawInnerArgs 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
bc20c0185d AGS: GRAPHICS: Changed bending functions templates 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
153afb1081 AGS: Cleaned up blending funcs argument passing 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
a1858e31f0 AGS: JANITORIAL: Cleaned up old bliting files 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
6c353ba72b AGS: Use main SIMD detection features 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
29a0903e5b AGS: Holding off PowerPC blitting optimizations
I'm taking GSOC in a slightly different direction. I will finish the
PowerPC blending/blitting optimizations, but first I'm going to focus
on the general Graphics::Surface and Graphics::ManagedSurface code for
now.
2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
f88d3633b4 AGS: Still trying to get PPC to compile 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
ef265e68dd AGS: Still trying to get PPC to compile 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
89fef524b8 AGS: Fixed more compiling issues for blitting PPC
PowerPC's <altivec.h> header redefines bool to be __vector(4) __bool which
is weird, so I changed the prototypes of the functions to use int instead
of bool. Hopefully this fixes things.
2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
01fa027296 AGS: Still trying to get PPC blitting to compile 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
f5908486b9 AGS: Still trying to get PPC blitting to compile 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
0f6da5b299 AGS: Still fixing PowerPC blitting issues 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
ff72736c49 AGS: PowerPC Altivec: initial support 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
33cb39c2e8 AGS: Appeasing iOS compiler again 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
9c11912da9 AGS: Not using Arm NEON on iOS sim. or Arm Windows
Not all of Arm NEON intrinsics aren't included in the iOS simulator's
arm_neon.h file, so we just don't compile arm neon for the simulator
anymore. Also, arm_neon.h on Windows seems to be just an empty header
or atleast a header with only a few intrinsics of the many that should
be there.
2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
b3681c5cb3 AGS: Making MSVC and iOS compilers happy
Made it so that iOS doesn't use Arm NEON since it only supports a very
limited set of instructions (like it apparently doesn't have intrinics
for something as simple as bit shifting?). I also changed every float
literal in surface_simd_sse from a double literal to float because
windows x64 was complaining about it.
2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
def889099e AGS: Added check for MSVC specific macros in simd
I was using just the GCC and CLANG macros to see what platform SCUMMVM
was being compiled on, but neglected the MSVC ones. This would lead it
to not compile on that compiler. I fixed that by adding those. I also
added the fallback simd implementation .cpp file into module.mk for the
ags engine.
2023-08-28 21:16:42 +02:00
wyatt-radkiewicz
ace1a346cc AGS: Finished SSE2 blending optimizations
Finished writing the code in surface_simd_sse.cpp. I also added a backup
option in case no processor simd extensions are found. In that case it
just defualts to the normal drawInnerGeneric. I also made
drawInnerGeneric a bit faster by moving certain things into compile
time. Tests were changed to also include SSE2.
2023-08-28 21:16:42 +02:00
wyatt-radkiewicz
acc818a0cb AGS: Intel/AMD's SIMD path goes to the normal one. 2023-08-28 21:16:42 +02:00
wyatt-radkiewicz
45f093f4be AGS: Fixed SSE2 detector and unoptimized draw. 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
0d29563122 AGS: Started on SSE version 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
90df6233f8 AGS: Put comments in NEON blitting/blending code. 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
b177d382b6 AGS: Moved arm neon bitmap code to new file. 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
673cb4d659 AGS: Optimizations turns off if SSE is not found. 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
a22396163f AGS: Created test code for blending modes 2023-08-28 21:16:42 +02:00
Wyatt Radkiewicz
4ad7a30b38 AGS: Just fixed kTintBlenderMode 2023-08-28 21:16:42 +02:00