[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] gsoc-anurag-2022 e876d01ea 1/3: Start fixed point migration
From: |
Werner Lemberg |
Subject: |
[freetype2] gsoc-anurag-2022 e876d01ea 1/3: Start fixed point migration |
Date: |
Mon, 3 Oct 2022 17:45:43 -0400 (EDT) |
branch: gsoc-anurag-2022
commit e876d01eae9fb848e0a77d2651946aea4bd8a68e
Author: Anurag Thakur <anurag105csec21@bpitindia.edu.in>
Commit: Anurag Thakur <anurag105csec21@bpitindia.edu.in>
Start fixed point migration
---
src/dense/ftdense.c | 70 ++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 53 insertions(+), 17 deletions(-)
diff --git a/src/dense/ftdense.c b/src/dense/ftdense.c
index 4b0a20b28..e6492f633 100644
--- a/src/dense/ftdense.c
+++ b/src/dense/ftdense.c
@@ -374,27 +374,63 @@ dense_render_glyph( dense_worker* worker, const
FT_Bitmap* target )
unsigned char* dest = target->buffer;
unsigned char* dest_end = target->buffer + worker->m_w * worker->m_h;
- __m128 offset = _mm_setzero_ps();
- __m128i mask = _mm_set1_epi32(0x0c080400);
- __m128 sign_mask = _mm_set1_ps(-0.f);
- for (int i = 0; i < worker->m_h*worker->m_w; i += 4) {
- __m128 x = _mm_load_ps(&source[i]);
- x = _mm_add_ps(x, _mm_castsi128_ps(_mm_slli_si128(_mm_castps_si128(x),
4)));
- x = _mm_add_ps(x, _mm_shuffle_ps(_mm_setzero_ps(), x, 0x40));
- x = _mm_add_ps(x, offset);
- __m128 y = _mm_andnot_ps(sign_mask, x); // fabs(x)
- y = _mm_min_ps(y, _mm_set1_ps(1.0f));
- y = _mm_mul_ps(y, _mm_set1_ps(255.0f));
- __m128i z = _mm_cvtps_epi32(y);
- z = _mm_shuffle_epi8(z, mask);
- _mm_store_ss((float *)&dest[i], (__m128)z);
- offset = _mm_shuffle_ps(x, x, _MM_SHUFFLE(3, 3, 3, 3));
+ // __m128 offset = _mm_setzero_ps();
+ // __m128i mask = _mm_set1_epi32(0x0c080400);
+ // __m128 sign_mask = _mm_set1_ps(-0.f);
+ // for (int i = 0; i < worker->m_h*worker->m_w; i += 4) {
+ // __m128 x = _mm_load_ps(&source[i]);
+ // x = _mm_add_ps(x, _mm_castsi128_ps(_mm_slli_si128(_mm_castps_si128(x),
4)));
+ // x = _mm_add_ps(x, _mm_shuffle_ps(_mm_setzero_ps(), x, 0x40));
+ // x = _mm_add_ps(x, offset);
+ // __m128 y = _mm_andnot_ps(sign_mask, x); // fabs(x)
+ // y = _mm_min_ps(y, _mm_set1_ps(1.0f));
+ // y = _mm_mul_ps(y, _mm_set1_ps(255.0f));
+ // __m128i z = _mm_cvtps_epi32(y);
+ // z = _mm_shuffle_epi8(z, mask);
+ // _mm_store_ss((float *)&dest[i], (__m128)z);
+ // offset = _mm_shuffle_ps(x, x, _MM_SHUFFLE(3, 3, 3, 3));
+ // }
+
+ int valnew = 0;
+ float value = 0.0f;
+ while ( dest < dest_end )
+ {
+ valnew += (int)(*source++ * 1048576.0f);
+
+
+ if(valnew > 10){
+ int nnew = valnew * 255;
+ nnew >>= 20;
+
+ if(nnew>255)nnew=255;
+ *dest = (unsigned char)nnew;
+ }else{
+ *dest = 0;
+ }
+
+ // value += *source++;
+ // if ( value > 0.0f )
+ // {
+ // int n = (int)( fabs( value ) * 255.0f + 0.5f );
+ // if ( n > 255 )
+ // n = 255;
+ // *dest = (unsigned char)n;
+ // }
+ // else
+ // *dest = 0;
+ dest++;
}
- // float value = 0.0f;
+ // 12_20 integer
+ // int value = 0;
// while ( dest < dest_end )
// {
- // value += *source++;
+ // if(*source != 0.0f){
+ // printf("%f\n", *source);
+ // }
+ // value += (int) (*source++ * 1048576.0f);
+
+
// if ( value > 0.0f )
// {
// int n = (int)( fabs( value ) * 255.0f + 0.5f );
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] gsoc-anurag-2022 e876d01ea 1/3: Start fixed point migration,
Werner Lemberg <=