Closed Bug 488851 Opened 16 years ago Closed 14 years ago

Enable SSE2 for pixman

Categories

(Core :: Graphics, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla2.0b5

People

(Reporter: m_kato, Assigned: m_kato)

References

Details

(Keywords: perf)

Attachments

(2 files, 3 obsolete files)

Due to bug 410509, SSE2 optimization for pixman is disable on GCC platform. But this bug was already fixed at Oct 2008. So, we should enable SSE2 on GCC platform, too.
Attached patch patch v1 (obsolete) — Splinter Review
We had something like this before in bug 461202, but it got backed out. We should try again.
Attached patch patch v1.1 (obsolete) — Splinter Review
Tested on Linux x86/x86_64 and MacOS X (gcc platform).
Attachment #373327 - Attachment is obsolete: true
Attachment #373608 - Flags: review?(jmuizelaar)
This patch causes that gcc may generate SSE2 code for pixman-mmx.c. So I have to consider this situation, so I will send a review with new patch...
Attachment #373608 - Flags: review?(jmuizelaar)
Attached patch patch v2Splinter Review
Attachment #373608 - Attachment is obsolete: true
Attachment #376411 - Flags: review?(jmuizelaar)
Comment on attachment 376411 [details] [diff] [review] patch v2 >diff -r ab664753cc72 gfx/cairo/libpixman/src/Makefile.in >--- a/gfx/cairo/libpixman/src/Makefile.in Fri May 08 13:46:36 2009 +0200 >+++ b/gfx/cairo/libpixman/src/Makefile.in Sat May 09 00:08:59 2009 +0900 >@@ -69,6 +69,7 @@ > USE_MMX=1 > USE_SSE2=1 > MMX_CFLAGS= >+SSE2_CFLAGS= > endif > endif > ifeq (arm,$(findstring arm,$(OS_TEST))) >@@ -81,11 +82,11 @@ > ifeq (86,$(findstring 86,$(OS_TEST))) > USE_MMX=1 > MMX_CFLAGS=-mmmx -Winline >-# See bug 410509 why we can't use SSE2 yet on linux >-#USE_SSE2=1 >-#MMX_CFLAGS+=-msse -msse2 >+USE_SSE2=1 >+SSE2_CFLAGS=-msse2 -Winline > ifneq ($(MOZ_WIDGET_TOOLKIT),os2) > MMX_CFLAGS+=--param inline-unit-growth=10000 --param large-function-growth=10000 >+SSE2_CFLAGS+=--param inline-unit-growth=10000 --param large-function-growth=10000 These lines should be vertically aligned like: MMX_CFLAGS +=--param inline-unit-growth=10000 --param large-function-growth=10000 SSE2_CFLAGS+=--param inline-unit-growth=10000 --param large-function-growth=10000 Other than that, it looks good to me.
Attachment #376411 - Flags: review?(jmuizelaar) → review+
backout checkin. But no symbols set up on Linux leak test. I cannot analyze where is failure due to no stack. http://tinderbox.mozilla.org/showlog.cgi?log=Firefox/1242397437.1242398983.16275.gz I will investigate this again.
segfault in fbcomposeSetupSSE2. Maybe, it is by alignment access.
Depends on: 528131
Attached patch patch v3 (obsolete) — Splinter Review
Attached patch patch v4Splinter Review
Attachment #376411 - Attachment is obsolete: true
Attachment #429483 - Attachment is obsolete: true
Attachment #376411 - Attachment is obsolete: false
Comment on attachment 432415 [details] [diff] [review] patch v4 old GCC such as 4.1 doesn't support align arg pointer. If it is old, don't compile SSE2 code.
Attachment #432415 - Flags: review?(jmuizelaar)
Attachment #432415 - Flags: review?(jmuizelaar) → review+
Looks like this was landed (c4b8a7e21ec9) and backed out (8cf7bc6629a7). What's its current status?
(In reply to comment #12) > Looks like this was landed (c4b8a7e21ec9) and backed out (8cf7bc6629a7). > What's its current status? Ahh, I forgot pushing this!. 8cf7bc6629a7 was gcc 4.1.x bug that past tinderbox used. New patch checks gcc really has alignment support. Also, current tinderbox is gcc4.3 or 4.4.
Attachment #432415 - Flags: approval2.0?
Comment on attachment 432415 [details] [diff] [review] patch v4 Very short leash on this one - push it, but if it bounces, it's out.
Attachment #432415 - Flags: approval2.0? → approval2.0+
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla2.0b5
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: