aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/jumper/SkJumper.cpp
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-06-27 12:06:56 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-07-17 23:57:26 +0000
commitea23a04a1c5da3c6af271b1991befc45f5df2f5e (patch)
treed2f4cc9444e067e779163bd20022776d8c42171e /src/jumper/SkJumper.cpp
parent26e9dddf590bff620de38de752f15534b09ff951 (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.cpp6
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),