-Removed unnecessary <math.h> headers
-Updated AVX/asm optimizations to match the new file hierarchy
-Makefile only compiles .asm files if KVAZAAR_DISABLE_YASM is not set to 1 and TARGET_CPU_ARCH is x86
- This is necessary in order to compile AVX intrinsics correctly in
Visual Studio. Having everything in their own units should also make
compiling normal C code with optimizations on easier.
- For now the makefile still relies on GCC __target__ attribute for compiling
intrinsics.
- Moved compilation flag stuff from project file to the abstraction layer.
- Disabled randomized base address as unnecessary.
- Disable stack buffer security check from release.
- Enforces a little bit more hierarchy. Compilation units are in strategies
and whatever inline includes they have are in a folder with the same name
as the strategy.
- Update all projects to use VS2013 toolset that has better c99 support that
some of Laurent's changes require.
- Fix the unit test project. Tests still need to be updated.
- I haven't found a good way of including external dependencies to VS projects
yet. Win32-pthreads is assumed to be found at the same level as kvazaar dir
and has the files x86/pthreadVC2.lib and x64/pthreadVC2.lib.
- Win32-pthreads also requires the pthreadVC2.dll to be in PATH when running
the program. Not sure what to do about that yet. We might need an installer
for windows to handle that.
- Disable openmp as it's no longer used.
- Stop linking Ws2_32.lib as that hasn't been used for ages.
- _M_IX86_FP defines whether VS should generate code using SSE or SSE2
instructions. It isn't correct to use it to check whether optional runtime
optimizations should be compiled in. It's also not defined at all in 64-bit
mode.
- So let's just keep it simple and give a list of everything that is supported
as release optimizations. It's not clear from the documentation if all of
these are really supported. It just list a bunch of intrinsics from these
that are.
- Disabled errors are:
- Implicit conversion from bigger to a smaller type. I don't want to disable
it but there are still about 60 of these and adding explicit C casts
everywhere is just going to cause more problems.
- Nonstandard extension: Non-constant aggregate initializer.
- Translation unit is empty.
- Vectors that point far outside the frame don't work, although the special
case of them pointing right beside the frame works. So test for vectors
pointing farther away.
- Update include directory for greatest.
- Add our own Github fork of greatest as a submodule, in case we want to
improve it and push changes upstream easily in the future.
- Update existing unit tests to use greatest.
- Update Visual Studio project to remove traces of seatest and include greatest.
Name mangling is causing problems on different platforms (issues #2 and #3) and some of it was solved modifying the Makefile. Separate 32bit and 64bit assembly functions were also causing problems and since we were going to move to x264asm abstraction layer anyway, we decided to do it now before spending time on the old implementation.
- Remove stupid stuff.
- Reorder imports so that default settings are gathered correctly.
Microsoft.Cpp.props needs to be imported after ConfigurationType and
UseDebugLibraries have been set because it does different stuff depending
on their values.