diff options
author | 2017-06-27 12:06:56 -0400 | |
---|---|---|
committer | 2017-07-17 23:57:26 +0000 | |
commit | ea23a04a1c5da3c6af271b1991befc45f5df2f5e (patch) | |
tree | d2f4cc9444e067e779163bd20022776d8c42171e /src/jumper/SkJumper.cpp | |
parent | 26e9dddf590bff620de38de752f15534b09ff951 (diff) |
add 32-bit Windows SkJumper backend
The most interesting part of this is getting the call to start_pipeline
to work. From there it should be just like the other x86 backend.
The 32-bit calling conventions are the same across Linux/Mac and
Windows, so that's nice. The tricky bit is that Linux and Mac
align the stack to 16 bytes, while Windows only to 4. I think
this force_align_arg_pointer attribute on start_pipeline does the trick.
This needs a guard for layout tests.
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Win2k8-MSVC-GCE-CPU-AVX2-x86-Debug;master.tryserver.blink:win10_blink_rel,win7_blink_rel;master.tryserver.chromium.win:win_chromium_rel_ng
Change-Id: Ia74d22e5a4ce5483c9817b8a8f89dd21885bbd14
Reviewed-on: https://skia-review.googlesource.com/20968
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
Diffstat (limited to 'src/jumper/SkJumper.cpp')
-rw-r--r-- | src/jumper/SkJumper.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/jumper/SkJumper.cpp b/src/jumper/SkJumper.cpp index 9dcd4630f8..f2872904b4 100644 --- a/src/jumper/SkJumper.cpp +++ b/src/jumper/SkJumper.cpp @@ -154,7 +154,8 @@ extern "C" { LOWP_STAGES(M) #undef M -#elif defined(__i386__) && !defined(_MSC_VER) +#elif (defined(__i386__) || defined(_M_IX86)) && \ + !(defined(_MSC_VER) && defined(SK_SUPPORT_LEGACY_WIN32_JUMPER)) StartPipelineFn ASM(start_pipeline,sse2); StageFn ASM(just_return,sse2); #define M(st) StageFn ASM(st,sse2); @@ -263,7 +264,8 @@ static SkJumper_Engine choose_engine() { }; } -#elif defined(__i386__) && !defined(_MSC_VER) +#elif (defined(__i386__) || defined(_M_IX86)) && \ + !(defined(_MSC_VER) && defined(SK_SUPPORT_LEGACY_WIN32_JUMPER)) if (1 && SkCpu::Supports(SkCpu::SSE2)) { return { #define M(stage) ASM(stage, sse2), |