Ari Koivula
2ac030ee81
Add errors for VS.
...
- 4716 function must return a value.
- 4700 uninitialized local variable used.
2014-07-28 12:31:49 +03:00
Ari Koivula
669e99dd7f
Improve intra SAD AVX2 intrinsics.
...
- Moved implementations for different sizes to inline functions that are
defined using each other, reducing the amount of redundant code.
- Performance of sad_8bit_32x32_avx2 improved by about 10% due to unrolling of
the loop.
2014-07-25 15:59:55 +03:00
Ari Lemmetti
9f5bcf45eb
Merge branch 'asm'
2014-07-23 15:04:27 +03:00
Ari Koivula
e00102f0ca
Compile asm optimizations only if yasm is present.
2014-07-23 14:57:40 +03:00
Ari Lemmetti
85fb0784e4
Fixed intendentation and added some empty lines for readability
2014-07-23 12:32:27 +03:00
Ari Lemmetti
7309706e94
Removed unnecessary stuff from intra_sad_tests.c
2014-07-23 11:51:17 +03:00
Ari Lemmetti
bd6e89c1f0
Updated include directories and file names to Makefile
2014-07-22 15:36:54 +03:00
Ari Lemmetti
4f88ebce5a
Added comments and made visual studio not to compile x86inc.asm
2014-07-22 15:07:57 +03:00
Ari Koivula
cfd3636e08
Move some repetitive SATD asm into a macro.
...
Conflicts:
src/strategies/x86_avx/picture_x86.asm
2014-07-22 12:46:39 +03:00
Ari Lemmetti
c81639dd09
Removed old unused macro
2014-07-22 11:11:20 +03:00
Ari Lemmetti
cf0797cafd
Reordered and intended assembly code
2014-07-22 11:07:42 +03:00
Ari Lemmetti
fea44c8234
Renaming AVX/asm files
...
-Splitted SAD and SATD functions in separate files
2014-07-21 18:02:01 +03:00
Ari Lemmetti
a64df6f0d0
Merge branch 'asm'
...
Conflicts:
build/kvazaar_lib/kvazaar_lib.vcxproj.filters
src/Makefile
src/strategies/strategies-picture.c
2014-07-21 16:41:09 +03:00
Ari Lemmetti
1be2c3aae5
Preparing push to master and misc
...
-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
2014-07-21 12:39:56 +03:00
Ari Koivula
a8f7103797
Add AVX2 implementations for sad_8bit_ 8x8, 16x16 and 32x32.
2014-07-18 18:27:30 +03:00
Ari Koivula
3daa5dd1f1
Add sse2 implementaton for sad_8bit_4x4.
2014-07-18 18:20:34 +03:00
Ari Koivula
f49332c9b8
Add missing includes.
2014-07-18 17:56:15 +03:00
Ari Koivula
291817667f
Tidy up the Makefile.
2014-07-18 17:31:18 +03:00
Ari Koivula
e241866f43
Compile intrinsic functions with appropriate flags in gcc.
...
- Remove -march=native as it's no longer necessary for intrinsics to work.
Closes #77 .
- I couldn't test altivec or sse4.1, but sse4.1 compiles so I expect it
to work.
2014-07-18 17:28:14 +03:00
Ari Koivula
5662621b3c
Free threadqueue jobs when they are not needed.
...
- Also add destroying the mutex when the job is freed.
- This makes Kvazaar no longer acquire thousands of OS handles on Windows.
2014-07-16 16:51:20 +03:00
Ari Lemmetti
1e94262f85
Made AVX asm compatible with the changed system
...
- x86inc.asm is now located in extras
- Removed unused cpu.asm/h
2014-07-14 18:51:17 +03:00
Ari Lemmetti
683eda1183
Merge branch 'master' into asm
...
Conflicts:
build/kvazaar_lib/kvazaar_lib.vcxproj
build/kvazaar_lib/kvazaar_lib.vcxproj.filters
src/Makefile
src/strategies/strategies-picture.c
2014-07-14 16:42:33 +03:00
Ari Lemmetti
7f873e037c
Updated Makefile to compile picture_x86.asm
2014-07-14 15:30:08 +03:00
Ari Lemmetti
2169f9ab8c
Added AVX asm comments and fixes
...
-Added vzeroupper to satd macro to prevent AVX-SSE transition penalties int picture_x86.asm
-Fixed the order of registers in zero extend macro in picture_x86.asm
-Fixed SATD checkers test pattern in satd_tests.c
2014-07-14 14:43:36 +03:00
Ari Koivula
5d0df56c94
Move optimizations to their own compilation units according to target.
...
- 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.
2014-07-11 17:26:19 +03:00
Ari Koivula
f605d6c35b
Align intra buffers to 32 bytes for 256 bit SIMD instructions.
2014-07-11 17:26:19 +03:00
Ari Koivula
fbd03b706e
Reconfigure VS project.
...
- Moved compilation flag stuff from project file to the abstraction layer.
- Disabled randomized base address as unnecessary.
- Disable stack buffer security check from release.
2014-07-11 17:26:19 +03:00
Ari Koivula
248b68cb13
Merge pull request #76 from lfasnacht/thread_visualizer
...
Add some more information in _DEBUG mode for the Python visualizer
2014-07-10 15:11:10 +03:00
Laurent Fasnacht
72abc69b3d
Measure time for SAD in _DEBUG mode
2014-07-08 11:42:58 +02:00
Laurent Fasnacht
1a318c714d
log poc with new_frame
2014-07-08 11:42:19 +02:00
Laurent Fasnacht
e64a692780
Add CU type in threadqueue.log
2014-07-08 09:06:31 +02:00
Laurent Fasnacht
abfbb7cad3
Fix duplicate type key in threadqueue.log
2014-07-07 11:36:50 +02:00
Laurent Fasnacht
946e3b9651
Log search_cu to threadqueue.log
2014-07-07 10:50:05 +02:00
Laurent Fasnacht
f62e571c15
Add missing info to threadqueue.log
2014-07-07 10:49:40 +02:00
Ari Lemmetti
048127c7e3
AVX assembly optimizations improved
2014-07-02 16:57:06 +03:00
Ari Koivula
7ecf78bb70
Use sqrt lambda cost for searches not using SSD.
...
- Add encoder_state->global->cur_lambda_cost_sqrt.
- Use sqrt lambda for inter search and rough intra search.
- The effect on inter is around 10-20% bdrate. The effect on intra is smaller
and non-existent when --rd=2 is enabled, as the intra search refinement was
already done with SSD and correct lambda.
2014-06-26 13:56:38 +03:00
Laurent Fasnacht
1112dca933
Fix compilation issue with assertion disabled
2014-06-26 07:31:37 +02:00
Marko Viitanen
86fa7312c9
Merge branch 'stats_and_framecount_fixes' of https://github.com/lfasnacht/kvazaar
2014-06-19 14:54:38 +03:00
Laurent Fasnacht
9ab9defe67
Bitstream length per frame works again
2014-06-19 10:24:03 +02:00
Laurent Fasnacht
45faadb2c9
Fix bug where the wrong number of frames could be encoded (if one frame takes longer than the others)
2014-06-19 10:24:02 +02:00
Ari Koivula
d5a77be4b8
Fix avx detection for gcc.
...
- GCC doesn't support _xgetbv intrinsic so we have to use inline assembler.
2014-06-18 11:50:17 +03:00
Ari Lemmetti
bdef5384ef
Added AVX strategy
2014-06-17 16:52:24 +03:00
Ari Koivula
3d23c7e913
Merge branch 'gcc-problems'
2014-06-17 16:29:39 +03:00
Ari Koivula
d7abe6a7c2
Address compilation warning.
...
strategyselector.c:170:10: error: ‘__get_cpuid’ is static but used in inline function ‘get_cpuid’ which is not static [-Werror]
return __get_cpuid(level, eax, ebx, ecx, edx);
2014-06-17 16:26:55 +03:00
Ari Koivula
60ecc6baae
Remove unused stuff.
2014-06-17 16:20:01 +03:00
Ari Koivula
7532b789f8
Add -std=gnu99 for gcc.
...
- std=c99 doesn't work because then struct timespec won't be defined.
2014-06-17 16:15:39 +03:00
Ari Koivula
348aba4b50
Merge branch 'intra-search-tweaks'
2014-06-17 15:33:48 +03:00
Ari Koivula
94bc457b6c
Add option to disable fast intra search.
2014-06-17 15:32:05 +03:00
Ari Koivula
e27fc875c0
Clean up intra search.
2014-06-17 15:09:12 +03:00
Ari Koivula
e4d70ac1ab
Use more starting points for smaller blocks in intra search.
2014-06-17 13:28:27 +03:00