Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Unified Diff: src/core/SkBitmapProcShader.cpp

Issue 240433002: Modify sample buffer size for larger displays. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Added align macro Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/core/SkPostConfig.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkBitmapProcShader.cpp
diff --git a/src/core/SkBitmapProcShader.cpp b/src/core/SkBitmapProcShader.cpp
index 5f5eb1866e4282ba2a6e6b12237d5ea5a13deb08..661db2c42499dd5d6652299f2ef89baa98288373 100644
--- a/src/core/SkBitmapProcShader.cpp
+++ b/src/core/SkBitmapProcShader.cpp
@@ -205,13 +205,23 @@ SkBitmapProcShader::BitmapProcShaderContext::~BitmapProcShaderContext() {
fState->~SkBitmapProcState();
}
-#define BUF_MAX 128
+/* Defines the buffer size for sample pixel indexes, used in the sample proc function calls.
+ * If the operation is bigger than the buffer, it's split into multiple calls. This split is bad
+ * for the performance of SIMD optimizations.
+ * A display in portrait mode, with a width of 720 pixels, requires a buffer size of at least 361
+ * to run uninterrupted in the most basic operations. (Formula: Width / 2 + 1)
+ */
+#ifdef ANDROID_LARGE_MEMORY_DEVICE
djsollen 2014/04/23 14:40:53 my goal is to remove ANDROID_LARGE_MEMORY_DEVICE s
henrik.smiding 2014/04/23 15:20:21 Done.
+ #define BUF_MAX 541 // 1080p phone display
+#else
+ #define BUF_MAX 241 // 480p phone display
+#endif
#define TEST_BUFFER_OVERRITEx
#ifdef TEST_BUFFER_OVERRITE
#define TEST_BUFFER_EXTRA 32
- #define TEST_PATTERN 0x88888888
+ #define TEST_PATTERN 0x88888888
#else
#define TEST_BUFFER_EXTRA 0
#endif
@@ -224,7 +234,9 @@ void SkBitmapProcShader::BitmapProcShaderContext::shadeSpan(int x, int y, SkPMCo
return;
}
- uint32_t buffer[BUF_MAX + TEST_BUFFER_EXTRA];
+ // Align buffer to 16 bytes to enable more efficient SIMD optimizations.
+ uint32_t SK_ALIGN(16) buffer[BUF_MAX + TEST_BUFFER_EXTRA];
+
SkBitmapProcState::MatrixProc mproc = state.getMatrixProc();
SkBitmapProcState::SampleProc32 sproc = state.getSampleProc32();
int max = state.maxCountForBufferSize(sizeof(buffer[0]) * BUF_MAX);
« no previous file with comments | « include/core/SkPostConfig.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698