Mesa: update

git-svn-id: svn://kolibrios.org@5373 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge) 2015-01-15 08:26:21 +00:00
parent 5dc819f7b8
commit b0b193e458
9 changed files with 368 additions and 275 deletions

View File

@ -1625,8 +1625,3 @@ eglPostSubBufferNV(EGLDisplay dpy, EGLSurface surface,
RETURN_EGL_EVAL(disp, ret); RETURN_EGL_EVAL(disp, ret);
} }
int atexit(void (*func)(void))
{
return 0;
};

View File

@ -251,7 +251,7 @@ util_format_dxtn_rgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
const uint8_t *src_row, unsigned src_stride, const uint8_t *src_row, unsigned src_stride,
unsigned width, unsigned height, unsigned width, unsigned height,
util_format_dxtn_fetch_t fetch, util_format_dxtn_fetch_t fetch,
unsigned block_size) unsigned block_size, boolean srgb)
{ {
const unsigned bw = 4, bh = 4, comps = 4; const unsigned bw = 4, bh = 4, comps = 4;
unsigned x, y, i, j; unsigned x, y, i, j;
@ -262,6 +262,11 @@ util_format_dxtn_rgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
for(i = 0; i < bw; ++i) { for(i = 0; i < bw; ++i) {
uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*comps; uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*comps;
fetch(0, src, i, j, dst); fetch(0, src, i, j, dst);
if (srgb) {
dst[0] = util_format_srgb_to_linear_8unorm(dst[0]);
dst[1] = util_format_srgb_to_linear_8unorm(dst[1]);
dst[2] = util_format_srgb_to_linear_8unorm(dst[2]);
}
} }
} }
src += block_size; src += block_size;
@ -278,7 +283,8 @@ util_format_dxt1_rgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride, util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
src_row, src_stride, src_row, src_stride,
width, height, width, height,
util_format_dxt1_rgb_fetch, 8); util_format_dxt1_rgb_fetch,
8, FALSE);
} }
void void
@ -289,7 +295,8 @@ util_format_dxt1_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride, util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
src_row, src_stride, src_row, src_stride,
width, height, width, height,
util_format_dxt1_rgba_fetch, 8); util_format_dxt1_rgba_fetch,
8, FALSE);
} }
void void
@ -300,7 +307,8 @@ util_format_dxt3_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride, util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
src_row, src_stride, src_row, src_stride,
width, height, width, height,
util_format_dxt3_rgba_fetch, 16); util_format_dxt3_rgba_fetch,
16, FALSE);
} }
void void
@ -311,7 +319,8 @@ util_format_dxt5_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride, util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
src_row, src_stride, src_row, src_stride,
width, height, width, height,
util_format_dxt5_rgba_fetch, 16); util_format_dxt5_rgba_fetch,
16, FALSE);
} }
static INLINE void static INLINE void
@ -319,7 +328,7 @@ util_format_dxtn_rgb_unpack_rgba_float(float *dst_row, unsigned dst_stride,
const uint8_t *src_row, unsigned src_stride, const uint8_t *src_row, unsigned src_stride,
unsigned width, unsigned height, unsigned width, unsigned height,
util_format_dxtn_fetch_t fetch, util_format_dxtn_fetch_t fetch,
unsigned block_size) unsigned block_size, boolean srgb)
{ {
unsigned x, y, i, j; unsigned x, y, i, j;
for(y = 0; y < height; y += 4) { for(y = 0; y < height; y += 4) {
@ -330,9 +339,16 @@ util_format_dxtn_rgb_unpack_rgba_float(float *dst_row, unsigned dst_stride,
float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4; float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
uint8_t tmp[4]; uint8_t tmp[4];
fetch(0, src, i, j, tmp); fetch(0, src, i, j, tmp);
if (srgb) {
dst[0] = util_format_srgb_8unorm_to_linear_float(tmp[0]);
dst[1] = util_format_srgb_8unorm_to_linear_float(tmp[1]);
dst[2] = util_format_srgb_8unorm_to_linear_float(tmp[2]);
}
else {
dst[0] = ubyte_to_float(tmp[0]); dst[0] = ubyte_to_float(tmp[0]);
dst[1] = ubyte_to_float(tmp[1]); dst[1] = ubyte_to_float(tmp[1]);
dst[2] = ubyte_to_float(tmp[2]); dst[2] = ubyte_to_float(tmp[2]);
}
dst[3] = ubyte_to_float(tmp[3]); dst[3] = ubyte_to_float(tmp[3]);
} }
} }
@ -350,7 +366,8 @@ util_format_dxt1_rgb_unpack_rgba_float(float *dst_row, unsigned dst_stride,
util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride, util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
src_row, src_stride, src_row, src_stride,
width, height, width, height,
util_format_dxt1_rgb_fetch, 8); util_format_dxt1_rgb_fetch,
8, FALSE);
} }
void void
@ -361,7 +378,8 @@ util_format_dxt1_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride,
util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride, util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
src_row, src_stride, src_row, src_stride,
width, height, width, height,
util_format_dxt1_rgba_fetch, 8); util_format_dxt1_rgba_fetch,
8, FALSE);
} }
void void
@ -372,7 +390,8 @@ util_format_dxt3_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride,
util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride, util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
src_row, src_stride, src_row, src_stride,
width, height, width, height,
util_format_dxt3_rgba_fetch, 16); util_format_dxt3_rgba_fetch,
16, FALSE);
} }
void void
@ -383,7 +402,8 @@ util_format_dxt5_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride,
util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride, util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
src_row, src_stride, src_row, src_stride,
width, height, width, height,
util_format_dxt5_rgba_fetch, 16); util_format_dxt5_rgba_fetch,
16, FALSE);
} }
@ -391,29 +411,52 @@ util_format_dxt5_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride,
* Block compression. * Block compression.
*/ */
static INLINE void
util_format_dxtn_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
const uint8_t *src, unsigned src_stride,
unsigned width, unsigned height,
enum util_format_dxtn format,
unsigned block_size, boolean srgb)
{
const unsigned bw = 4, bh = 4, comps = 4;
unsigned x, y, i, j, k;
for(y = 0; y < height; y += bh) {
uint8_t *dst = dst_row;
for(x = 0; x < width; x += bw) {
uint8_t tmp[4][4][4]; /* [bh][bw][comps] */
for(j = 0; j < bh; ++j) {
for(i = 0; i < bw; ++i) {
uint8_t src_tmp;
for(k = 0; k < 3; ++k) {
src_tmp = src[(y + j)*src_stride/sizeof(*src) + (x+i)*comps + k];
if (srgb) {
tmp[j][i][k] = util_format_linear_to_srgb_8unorm(src_tmp);
}
else {
tmp[j][i][k] = src_tmp;
}
}
/* for sake of simplicity there's an unneeded 4th component for dxt1_rgb */
tmp[j][i][3] = src[(y + j)*src_stride/sizeof(*src) + (x+i)*comps + 3];
}
}
/* even for dxt1_rgb have 4 src comps */
util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], format, dst, 0);
dst += block_size;
}
dst_row += dst_stride / sizeof(*dst_row);
}
}
void void
util_format_dxt1_rgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, util_format_dxt1_rgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
const uint8_t *src, unsigned src_stride, const uint8_t *src, unsigned src_stride,
unsigned width, unsigned height) unsigned width, unsigned height)
{ {
const unsigned bw = 4, bh = 4, bytes_per_block = 8; util_format_dxtn_pack_rgba_8unorm(dst_row, dst_stride, src, src_stride,
unsigned x, y, i, j, k; width, height, UTIL_FORMAT_DXT1_RGB,
for(y = 0; y < height; y += bh) { 8, FALSE);
uint8_t *dst = dst_row;
for(x = 0; x < width; x += bw) {
uint8_t tmp[4][4][3]; /* [bh][bw][comps] */
for(j = 0; j < bh; ++j) {
for(i = 0; i < bw; ++i) {
for(k = 0; k < 3; ++k) {
tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + (x + i)*4 + k];
}
}
}
util_format_dxtn_pack(3, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGB, dst, 0);
dst += bytes_per_block;
}
dst_row += dst_stride / sizeof(*dst_row);
}
} }
void void
@ -421,24 +464,9 @@ util_format_dxt1_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
const uint8_t *src, unsigned src_stride, const uint8_t *src, unsigned src_stride,
unsigned width, unsigned height) unsigned width, unsigned height)
{ {
const unsigned bw = 4, bh = 4, comps = 4, bytes_per_block = 8; util_format_dxtn_pack_rgba_8unorm(dst_row, dst_stride, src, src_stride,
unsigned x, y, i, j, k; width, height, UTIL_FORMAT_DXT1_RGBA,
for(y = 0; y < height; y += bh) { 8, FALSE);
uint8_t *dst = dst_row;
for(x = 0; x < width; x += bw) {
uint8_t tmp[4][4][4]; /* [bh][bw][comps] */
for(j = 0; j < bh; ++j) {
for(i = 0; i < bw; ++i) {
for(k = 0; k < comps; ++k) {
tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + (x + i)*comps + k];
}
}
}
util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGBA, dst, 0);
dst += bytes_per_block;
}
dst_row += dst_stride / sizeof(*dst_row);
}
} }
void void
@ -446,24 +474,9 @@ util_format_dxt3_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
const uint8_t *src, unsigned src_stride, const uint8_t *src, unsigned src_stride,
unsigned width, unsigned height) unsigned width, unsigned height)
{ {
const unsigned bw = 4, bh = 4, comps = 4, bytes_per_block = 16; util_format_dxtn_pack_rgba_8unorm(dst_row, dst_stride, src, src_stride,
unsigned x, y, i, j, k; width, height, UTIL_FORMAT_DXT3_RGBA,
for(y = 0; y < height; y += bh) { 16, FALSE);
uint8_t *dst = dst_row;
for(x = 0; x < width; x += bw) {
uint8_t tmp[4][4][4]; /* [bh][bw][comps] */
for(j = 0; j < bh; ++j) {
for(i = 0; i < bw; ++i) {
for(k = 0; k < comps; ++k) {
tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + (x + i)*comps + k];
}
}
}
util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT3_RGBA, dst, 0);
dst += bytes_per_block;
}
dst_row += dst_stride / sizeof(*dst_row);
}
} }
void void
@ -471,24 +484,44 @@ util_format_dxt5_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
const uint8_t *src, unsigned src_stride, const uint8_t *src, unsigned src_stride,
unsigned width, unsigned height) unsigned width, unsigned height)
{ {
const unsigned bw = 4, bh = 4, comps = 4, bytes_per_block = 16; util_format_dxtn_pack_rgba_8unorm(dst_row, dst_stride, src, src_stride,
unsigned x, y, i, j, k; width, height, UTIL_FORMAT_DXT5_RGBA,
16, FALSE);
}
for(y = 0; y < height; y += bh) { static INLINE void
util_format_dxtn_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
const float *src, unsigned src_stride,
unsigned width, unsigned height,
enum util_format_dxtn format,
unsigned block_size, boolean srgb)
{
unsigned x, y, i, j, k;
for(y = 0; y < height; y += 4) {
uint8_t *dst = dst_row; uint8_t *dst = dst_row;
for(x = 0; x < width; x += bw) { for(x = 0; x < width; x += 4) {
uint8_t tmp[4][4][4]; /* [bh][bw][comps] */ uint8_t tmp[4][4][4];
for(j = 0; j < bh; ++j) { for(j = 0; j < 4; ++j) {
for(i = 0; i < bw; ++i) { for(i = 0; i < 4; ++i) {
for(k = 0; k < comps; ++k) { float src_tmp;
tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + (x + i)*comps + k]; for(k = 0; k < 3; ++k) {
src_tmp = src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k];
if (srgb) {
tmp[j][i][k] = util_format_linear_float_to_srgb_8unorm(src_tmp);
}
else {
tmp[j][i][k] = float_to_ubyte(src_tmp);
} }
} }
/* for sake of simplicity there's an unneeded 4th component for dxt1_rgb */
src_tmp = src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + 3];
tmp[j][i][3] = float_to_ubyte(src_tmp);
}
} }
util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT5_RGBA, dst, 0); util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], format, dst, 0);
dst += bytes_per_block; dst += block_size;
} }
dst_row += dst_stride / sizeof(*dst_row); dst_row += 4*dst_stride/sizeof(*dst_row);
} }
} }
@ -497,23 +530,9 @@ util_format_dxt1_rgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
const float *src, unsigned src_stride, const float *src, unsigned src_stride,
unsigned width, unsigned height) unsigned width, unsigned height)
{ {
unsigned x, y, i, j, k; util_format_dxtn_pack_rgba_float(dst_row, dst_stride, src, src_stride,
for(y = 0; y < height; y += 4) { width, height, UTIL_FORMAT_DXT1_RGB,
uint8_t *dst = dst_row; 8, FALSE);
for(x = 0; x < width; x += 4) {
uint8_t tmp[4][4][3];
for(j = 0; j < 4; ++j) {
for(i = 0; i < 4; ++i) {
for(k = 0; k < 3; ++k) {
tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k]);
}
}
}
util_format_dxtn_pack(3, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGB, dst, 0);
dst += 8;
}
dst_row += 4*dst_stride/sizeof(*dst_row);
}
} }
void void
@ -521,23 +540,9 @@ util_format_dxt1_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
const float *src, unsigned src_stride, const float *src, unsigned src_stride,
unsigned width, unsigned height) unsigned width, unsigned height)
{ {
unsigned x, y, i, j, k; util_format_dxtn_pack_rgba_float(dst_row, dst_stride, src, src_stride,
for(y = 0; y < height; y += 4) { width, height, UTIL_FORMAT_DXT1_RGBA,
uint8_t *dst = dst_row; 8, FALSE);
for(x = 0; x < width; x += 4) {
uint8_t tmp[4][4][4];
for(j = 0; j < 4; ++j) {
for(i = 0; i < 4; ++i) {
for(k = 0; k < 4; ++k) {
tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k]);
}
}
}
util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGBA, dst, 0);
dst += 8;
}
dst_row += 4*dst_stride/sizeof(*dst_row);
}
} }
void void
@ -545,23 +550,9 @@ util_format_dxt3_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
const float *src, unsigned src_stride, const float *src, unsigned src_stride,
unsigned width, unsigned height) unsigned width, unsigned height)
{ {
unsigned x, y, i, j, k; util_format_dxtn_pack_rgba_float(dst_row, dst_stride, src, src_stride,
for(y = 0; y < height; y += 4) { width, height, UTIL_FORMAT_DXT3_RGBA,
uint8_t *dst = dst_row; 16, FALSE);
for(x = 0; x < width; x += 4) {
uint8_t tmp[4][4][4];
for(j = 0; j < 4; ++j) {
for(i = 0; i < 4; ++i) {
for(k = 0; k < 4; ++k) {
tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k]);
}
}
}
util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT3_RGBA, dst, 0);
dst += 16;
}
dst_row += 4*dst_stride/sizeof(*dst_row);
}
} }
void void
@ -569,173 +560,245 @@ util_format_dxt5_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
const float *src, unsigned src_stride, const float *src, unsigned src_stride,
unsigned width, unsigned height) unsigned width, unsigned height)
{ {
unsigned x, y, i, j, k; util_format_dxtn_pack_rgba_float(dst_row, dst_stride, src, src_stride,
for(y = 0; y < height; y += 4) { width, height, UTIL_FORMAT_DXT5_RGBA,
uint8_t *dst = dst_row; 16, FALSE);
for(x = 0; x < width; x += 4) {
uint8_t tmp[4][4][4];
for(j = 0; j < 4; ++j) {
for(i = 0; i < 4; ++i) {
for(k = 0; k < 4; ++k) {
tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k]);
}
}
}
util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT5_RGBA, dst, 0);
dst += 16;
}
dst_row += 4*dst_stride/sizeof(*dst_row);
}
} }
/* /*
* SRGB variants. * SRGB variants.
*
* FIXME: shunts to RGB for now
*/ */
void
util_format_dxt1_srgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxt1_rgb_unpack_rgba_8unorm(dst_row, dst_stride, src_row, src_stride, width, height);
}
void
util_format_dxt1_srgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxt1_rgb_pack_rgba_8unorm(dst_row, dst_stride, src_row, src_stride, width, height);
}
void void
util_format_dxt1_srgb_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j) util_format_dxt1_srgb_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j)
{ {
util_format_dxt1_rgb_fetch_rgba_8unorm(dst, src, i, j); uint8_t tmp[4];
} util_format_dxt1_rgb_fetch(0, src, i, j, tmp);
dst[0] = util_format_srgb_to_linear_8unorm(tmp[0]);
void dst[1] = util_format_srgb_to_linear_8unorm(tmp[1]);
util_format_dxt1_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) dst[2] = util_format_srgb_to_linear_8unorm(tmp[2]);
{ dst[3] = 255;
util_format_dxt1_rgba_unpack_rgba_8unorm(dst_row, dst_stride, src_row, src_stride, width, height);
}
void
util_format_dxt1_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxt1_rgba_pack_rgba_8unorm(dst_row, dst_stride, src_row, src_stride, width, height);
} }
void void
util_format_dxt1_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j) util_format_dxt1_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j)
{ {
util_format_dxt1_rgba_fetch_rgba_8unorm(dst, src, i, j); uint8_t tmp[4];
} util_format_dxt1_rgba_fetch(0, src, i, j, tmp);
dst[0] = util_format_srgb_to_linear_8unorm(tmp[0]);
void dst[1] = util_format_srgb_to_linear_8unorm(tmp[1]);
util_format_dxt3_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) dst[2] = util_format_srgb_to_linear_8unorm(tmp[2]);
{ dst[3] = tmp[3];
util_format_dxt3_rgba_unpack_rgba_8unorm(dst_row, dst_stride, src_row, src_stride, width, height);
}
void
util_format_dxt3_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxt3_rgba_pack_rgba_8unorm(dst_row, dst_stride, src_row, src_stride, width, height);
} }
void void
util_format_dxt3_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j) util_format_dxt3_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j)
{ {
util_format_dxt3_rgba_fetch_rgba_8unorm(dst, src, i, j); uint8_t tmp[4];
} util_format_dxt3_rgba_fetch(0, src, i, j, tmp);
dst[0] = util_format_srgb_to_linear_8unorm(tmp[0]);
void dst[1] = util_format_srgb_to_linear_8unorm(tmp[1]);
util_format_dxt5_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) dst[2] = util_format_srgb_to_linear_8unorm(tmp[2]);
{ dst[3] = tmp[3];
util_format_dxt5_rgba_unpack_rgba_8unorm(dst_row, dst_stride, src_row, src_stride, width, height);
}
void
util_format_dxt5_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxt5_rgba_pack_rgba_8unorm(dst_row, dst_stride, src_row, src_stride, width, height);
} }
void void
util_format_dxt5_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j) util_format_dxt5_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j)
{ {
util_format_dxt5_rgba_fetch_rgba_8unorm(dst, src, i, j); uint8_t tmp[4];
} util_format_dxt5_rgba_fetch(0, src, i, j, tmp);
dst[0] = util_format_srgb_to_linear_8unorm(tmp[0]);
void dst[1] = util_format_srgb_to_linear_8unorm(tmp[1]);
util_format_dxt1_srgb_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) dst[2] = util_format_srgb_to_linear_8unorm(tmp[2]);
{ dst[3] = tmp[3];
util_format_dxt1_rgb_unpack_rgba_float(dst_row, dst_stride, src_row, src_stride, width, height);
}
void
util_format_dxt1_srgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxt1_rgb_pack_rgba_float(dst_row, dst_stride, src_row, src_stride, width, height);
} }
void void
util_format_dxt1_srgb_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j) util_format_dxt1_srgb_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j)
{ {
util_format_dxt1_rgb_fetch_rgba_float(dst, src, i, j); uint8_t tmp[4];
} util_format_dxt1_rgb_fetch(0, src, i, j, tmp);
dst[0] = util_format_srgb_8unorm_to_linear_float(tmp[0]);
void dst[1] = util_format_srgb_8unorm_to_linear_float(tmp[1]);
util_format_dxt1_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) dst[2] = util_format_srgb_8unorm_to_linear_float(tmp[2]);
{ dst[3] = 1.0f;
util_format_dxt1_rgba_unpack_rgba_float(dst_row, dst_stride, src_row, src_stride, width, height);
}
void
util_format_dxt1_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxt1_rgba_pack_rgba_float(dst_row, dst_stride, src_row, src_stride, width, height);
} }
void void
util_format_dxt1_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j) util_format_dxt1_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j)
{ {
util_format_dxt1_rgba_fetch_rgba_float(dst, src, i, j); uint8_t tmp[4];
} util_format_dxt1_rgba_fetch(0, src, i, j, tmp);
dst[0] = util_format_srgb_8unorm_to_linear_float(tmp[0]);
void dst[1] = util_format_srgb_8unorm_to_linear_float(tmp[1]);
util_format_dxt3_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) dst[2] = util_format_srgb_8unorm_to_linear_float(tmp[2]);
{ dst[3] = ubyte_to_float(tmp[3]);
util_format_dxt3_rgba_unpack_rgba_float(dst_row, dst_stride, src_row, src_stride, width, height);
}
void
util_format_dxt3_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxt3_rgba_pack_rgba_float(dst_row, dst_stride, src_row, src_stride, width, height);
} }
void void
util_format_dxt3_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j) util_format_dxt3_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j)
{ {
util_format_dxt3_rgba_fetch_rgba_float(dst, src, i, j); uint8_t tmp[4];
} util_format_dxt3_rgba_fetch(0, src, i, j, tmp);
dst[0] = util_format_srgb_8unorm_to_linear_float(tmp[0]);
void dst[1] = util_format_srgb_8unorm_to_linear_float(tmp[1]);
util_format_dxt5_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) dst[2] = util_format_srgb_8unorm_to_linear_float(tmp[2]);
{ dst[3] = ubyte_to_float(tmp[3]);
util_format_dxt5_rgba_unpack_rgba_float(dst_row, dst_stride, src_row, src_stride, width, height);
}
void
util_format_dxt5_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxt5_rgba_pack_rgba_float(dst_row, dst_stride, src_row, src_stride, width, height);
} }
void void
util_format_dxt5_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j) util_format_dxt5_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j)
{ {
util_format_dxt5_rgba_fetch_rgba_float(dst, src, i, j); uint8_t tmp[4];
util_format_dxt5_rgba_fetch(0, src, i, j, tmp);
dst[0] = util_format_srgb_8unorm_to_linear_float(tmp[0]);
dst[1] = util_format_srgb_8unorm_to_linear_float(tmp[1]);
dst[2] = util_format_srgb_8unorm_to_linear_float(tmp[2]);
dst[3] = ubyte_to_float(tmp[3]);
}
void
util_format_dxt1_srgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
src_row, src_stride,
width, height,
util_format_dxt1_rgb_fetch,
8, TRUE);
}
void
util_format_dxt1_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
src_row, src_stride,
width, height,
util_format_dxt1_rgba_fetch,
8, TRUE);
}
void
util_format_dxt3_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
src_row, src_stride,
width, height,
util_format_dxt3_rgba_fetch,
16, TRUE);
}
void
util_format_dxt5_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
src_row, src_stride,
width, height,
util_format_dxt5_rgba_fetch,
16, TRUE);
}
void
util_format_dxt1_srgb_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
src_row, src_stride,
width, height,
util_format_dxt1_rgb_fetch,
8, TRUE);
}
void
util_format_dxt1_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
src_row, src_stride,
width, height,
util_format_dxt1_rgba_fetch,
8, TRUE);
}
void
util_format_dxt3_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
src_row, src_stride,
width, height,
util_format_dxt3_rgba_fetch,
16, TRUE);
}
void
util_format_dxt5_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
src_row, src_stride,
width, height,
util_format_dxt5_rgba_fetch,
16, TRUE);
}
void
util_format_dxt1_srgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_pack_rgba_8unorm(dst_row, dst_stride, src_row, src_stride,
width, height, UTIL_FORMAT_DXT1_RGB,
8, TRUE);
}
void
util_format_dxt1_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_pack_rgba_8unorm(dst_row, dst_stride, src_row, src_stride,
width, height, UTIL_FORMAT_DXT1_RGBA,
8, TRUE);
}
void
util_format_dxt3_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_pack_rgba_8unorm(dst_row, dst_stride, src_row, src_stride,
width, height, UTIL_FORMAT_DXT3_RGBA,
16, TRUE);
}
void
util_format_dxt5_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_pack_rgba_8unorm(dst_row, dst_stride, src_row, src_stride,
width, height, UTIL_FORMAT_DXT5_RGBA,
16, TRUE);
}
void
util_format_dxt1_srgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_pack_rgba_float(dst_row, dst_stride, src_row, src_stride,
width, height, UTIL_FORMAT_DXT1_RGB,
8, TRUE);
}
void
util_format_dxt1_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_pack_rgba_float(dst_row, dst_stride, src_row, src_stride,
width, height, UTIL_FORMAT_DXT1_RGBA,
8, TRUE);
}
void
util_format_dxt3_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_pack_rgba_float(dst_row, dst_stride, src_row, src_stride,
width, height, UTIL_FORMAT_DXT3_RGBA,
16, TRUE);
}
void
util_format_dxt5_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
{
util_format_dxtn_pack_rgba_float(dst_row, dst_stride, src_row, src_stride,
width, height, UTIL_FORMAT_DXT5_RGBA,
16, TRUE);
} }

View File

@ -62,8 +62,3 @@ _glapi_set_dispatch(struct _glapi_table *dispatch)
{ {
u_current_set((const struct mapi_table *) dispatch); u_current_set((const struct mapi_table *) dispatch);
} }
int atexit(void (*func)(void))
{
return 0;
};

View File

@ -371,19 +371,70 @@ I965_SRC = \
drivers/dri/i965/gen7_wm_surface_state.c\ drivers/dri/i965/gen7_wm_surface_state.c\
$(NULL) $(NULL)
I915_SRC = \
drivers/dri/common/dri_util.c \
drivers/dri/common/utils.c \
drivers/dri/common/xmlconfig.c \
drivers/dri/i915/i830_context.c \
drivers/dri/i915/i830_state.c \
drivers/dri/i915/i830_texblend.c \
drivers/dri/i915/i830_texstate.c \
drivers/dri/i915/i830_vtbl.c \
drivers/dri/i915/i915_context.c \
drivers/dri/i915/i915_debug_fp.c \
drivers/dri/i915/i915_fragprog.c \
drivers/dri/i915/i915_program.c \
drivers/dri/i915/i915_state.c \
drivers/dri/i915/i915_tex_layout.c \
drivers/dri/i915/i915_texstate.c \
drivers/dri/i915/i915_vtbl.c \
drivers/dri/i915/intel_batchbuffer.c \
drivers/dri/i915/intel_blit.c \
drivers/dri/i915/intel_buffer_objects.c \
drivers/dri/i915/intel_buffers.c \
drivers/dri/i915/intel_clear.c \
drivers/dri/i915/intel_context.c \
drivers/dri/i915/intel_extensions.c \
drivers/dri/i915/intel_fbo.c \
drivers/dri/i915/intel_mipmap_tree.c \
drivers/dri/i915/intel_pixel.c \
drivers/dri/i915/intel_pixel_bitmap.c \
drivers/dri/i915/intel_pixel_copy.c \
drivers/dri/i915/intel_pixel_draw.c \
drivers/dri/i915/intel_pixel_read.c \
drivers/dri/i915/intel_regions.c \
drivers/dri/i915/intel_render.c \
drivers/dri/i915/intel_screen.c \
drivers/dri/i915/intel_state.c \
drivers/dri/i915/intel_syncobj.c \
drivers/dri/i915/intel_tex.c \
drivers/dri/i915/intel_tex_copy.c \
drivers/dri/i915/intel_tex_image.c \
drivers/dri/i915/intel_tex_layout.c \
drivers/dri/i915/intel_tex_subimage.c \
drivers/dri/i915/intel_tex_validate.c \
drivers/dri/i915/intel_tris.c
MESA_OBJS = $(patsubst %.c, %.o, $(patsubst %.S, %.o, $(patsubst %.cpp, %.o, $(MAIN_SRC)))) MESA_OBJS = $(patsubst %.c, %.o, $(patsubst %.S, %.o, $(patsubst %.cpp, %.o, $(MAIN_SRC))))
OSMESA_OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(OSMESA_SRC))) OSMESA_OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(OSMESA_SRC)))
I965_OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(I965_SRC))) I965_OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(I965_SRC)))
I915_OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(I915_SRC)))
# targets # targets
all: osmesa.dll i965_dri.drv all: osmesa.dll i965_dri.drv i915_dri.drv
i965_dri.drv: $(I965_OBJS) $(MESA_OBJS) dri.def Makefile i965_dri.drv: $(I965_OBJS) $(MESA_OBJS) dri.def Makefile
$(LD) $(LDFLAGS) $(LIBPATH) -o $@ $(I965_OBJS) $(MESA_OBJS) dri.def $(LIBS) $(LD) $(LDFLAGS) $(LIBPATH) -o $@ $(I965_OBJS) $(MESA_OBJS) dri.def $(LIBS)
# $(STRIP) $@ # $(STRIP) $@
mv -f $@ $(SDK_DIR)/bin mv -f $@ $(SDK_DIR)/bin
i915_dri.drv: $(I915_OBJS) $(MESA_OBJS) dri.def Makefile
$(LD) $(LDFLAGS) $(LIBPATH) -o $@ $(I915_OBJS) $(MESA_OBJS) dri.def $(LIBS)
# $(STRIP) $@
mv -f $@ $(SDK_DIR)/bin
osmesa.dll: $(MESA_OBJS) $(OSMESA_OBJS) osmesa.def Makefile osmesa.dll: $(MESA_OBJS) $(OSMESA_OBJS) osmesa.def Makefile
$(LD) $(LDFLAGS) $(LIBPATH) --out-implib libosmesa.dll.a -o $@ $(MESA_OBJS) $(OSMESA_OBJS) osmesa.def $(LIBS) $(LD) $(LDFLAGS) $(LIBPATH) --out-implib libosmesa.dll.a -o $@ $(MESA_OBJS) $(OSMESA_OBJS) osmesa.def $(LIBS)
mv -f libosmesa.dll.a $(SDK_DIR)/lib mv -f libosmesa.dll.a $(SDK_DIR)/lib

View File

@ -627,8 +627,3 @@ driUpdateFramebufferSize(struct gl_context *ctx, const __DRIdrawable *dPriv)
assert(fb->Height == dPriv->h); assert(fb->Height == dPriv->h);
} }
} }
int atexit(void (*func)(void))
{
return 0;
}

View File

@ -769,7 +769,6 @@ intel_get_param(__DRIscreen *psp, int param, int *value)
return true; return true;
} }
static bool static bool
intel_get_boolean(__DRIscreen *psp, int param) intel_get_boolean(__DRIscreen *psp, int param)
{ {

View File

@ -1189,7 +1189,7 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp)
{ {
struct intel_screen *intelScreen; struct intel_screen *intelScreen;
printf("mesa-9.2.5-i965_dri build %s %s\n", __DATE__, __TIME__); printf("mesa-9.2.5-i915_dri build %s %s\n", __DATE__, __TIME__);
if (psp->dri2.loader->base.version <= 2 || if (psp->dri2.loader->base.version <= 2 ||
psp->dri2.loader->getBuffersWithFormat == NULL) { psp->dri2.loader->getBuffersWithFormat == NULL) {

View File

@ -1174,8 +1174,3 @@ OSMesaColorClamp(GLboolean enable)
#include "glapi/glapitemp.h" #include "glapi/glapitemp.h"
#endif /* GLX_INDIRECT_RENDERING */ #endif /* GLX_INDIRECT_RENDERING */
int atexit(void (*func)(void))
{
return 0;
};

View File

@ -3647,8 +3647,8 @@ extern int MESA_VERBOSE;
extern int MESA_DEBUG_FLAGS; extern int MESA_DEBUG_FLAGS;
# define MESA_FUNCTION __FUNCTION__ # define MESA_FUNCTION __FUNCTION__
#else #else
# define ENTER() printf("ENTER %s\n", __FUNCTION__) # define ENTER()
# define LEAVE() printf("LEAVE %s\n", __FUNCTION__) # define LEAVE()
# define FAIL() # define FAIL()
# define MESA_VERBOSE 0 # define MESA_VERBOSE 0
# define MESA_DEBUG_FLAGS 0 # define MESA_DEBUG_FLAGS 0