Просмотр исходного кода

gallium: increase table size for fast log/pow functions

The various conformance tests pass now.
tags/mesa_20090313
Brian Paul 17 лет назад
Родитель
Сommit
7e584a70c4
2 измененных файлов: 6 добавлений и 4 удалений
  1. 1
    1
      src/gallium/auxiliary/util/u_math.c
  2. 5
    3
      src/gallium/auxiliary/util/u_math.h

+ 1
- 1
src/gallium/auxiliary/util/u_math.c Просмотреть файл

@@ -52,7 +52,7 @@ init_log2_table(void)
{
unsigned i;
for (i = 0; i < LOG2_TABLE_SIZE; i++)
log2_table[i] = (float) log2(1.0 + i * (1.0 / LOG2_TABLE_SIZE));
log2_table[i] = (float) log2(1.0 + i * (1.0 / LOG2_TABLE_SCALE));
}



+ 5
- 3
src/gallium/auxiliary/util/u_math.h Просмотреть файл

@@ -246,8 +246,9 @@ util_fast_exp(float x)
}


#define LOG2_TABLE_SIZE_LOG2 8
#define LOG2_TABLE_SIZE (1 << LOG2_TABLE_SIZE_LOG2)
#define LOG2_TABLE_SIZE_LOG2 16
#define LOG2_TABLE_SCALE (1 << LOG2_TABLE_SIZE_LOG2)
#define LOG2_TABLE_SIZE (LOG2_TABLE_SCALE + 1)
extern float log2_table[LOG2_TABLE_SIZE];


@@ -258,7 +259,8 @@ util_fast_log2(float x)
float epart, mpart;
num.f = x;
epart = (float)(((num.i & 0x7f800000) >> 23) - 127);
mpart = log2_table[(num.i & 0x007fffff) >> (23 - LOG2_TABLE_SIZE_LOG2)];
/* mpart = log2_table[mantissa*LOG2_TABLE_SCALE + 0.5] */
mpart = log2_table[((num.i & 0x007fffff) + (1 << (22 - LOG2_TABLE_SIZE_LOG2))) >> (23 - LOG2_TABLE_SIZE_LOG2)];
return epart + mpart;
}


Загрузка…
Отмена
Сохранить