From b0b193e458ba7fe5acf45f3fd828f2d68325bab3 Mon Sep 17 00:00:00 2001 From: "Sergey Semyonov (Serge)" Date: Thu, 15 Jan 2015 08:26:21 +0000 Subject: [PATCH] Mesa: update git-svn-id: svn://kolibrios.org@5373 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../sdk/sources/Mesa/src/egl/main/eglapi.c | 5 - .../gallium/auxiliary/util/u_format_s3tc.c | 563 ++++++++++-------- .../sdk/sources/Mesa/src/mapi/glapi/glapi.c | 5 - contrib/sdk/sources/Mesa/src/mesa/Makefile | 53 +- .../src/mesa/drivers/dri/common/dri_util.c | 5 - .../src/mesa/drivers/dri/i915/intel_screen.c | 1 - .../src/mesa/drivers/dri/i965/intel_screen.c | 2 +- .../Mesa/src/mesa/drivers/osmesa/osmesa.c | 5 - .../sdk/sources/Mesa/src/mesa/main/mtypes.h | 4 +- 9 files changed, 368 insertions(+), 275 deletions(-) diff --git a/contrib/sdk/sources/Mesa/src/egl/main/eglapi.c b/contrib/sdk/sources/Mesa/src/egl/main/eglapi.c index 0cffa96c9c..22ebb2a4a4 100644 --- a/contrib/sdk/sources/Mesa/src/egl/main/eglapi.c +++ b/contrib/sdk/sources/Mesa/src/egl/main/eglapi.c @@ -1625,8 +1625,3 @@ eglPostSubBufferNV(EGLDisplay dpy, EGLSurface surface, RETURN_EGL_EVAL(disp, ret); } - -int atexit(void (*func)(void)) -{ - return 0; -}; diff --git a/contrib/sdk/sources/Mesa/src/gallium/auxiliary/util/u_format_s3tc.c b/contrib/sdk/sources/Mesa/src/gallium/auxiliary/util/u_format_s3tc.c index 771fdf0691..afba96d3e7 100644 --- a/contrib/sdk/sources/Mesa/src/gallium/auxiliary/util/u_format_s3tc.c +++ b/contrib/sdk/sources/Mesa/src/gallium/auxiliary/util/u_format_s3tc.c @@ -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, unsigned width, unsigned height, util_format_dxtn_fetch_t fetch, - unsigned block_size) + unsigned block_size, boolean srgb) { const unsigned bw = 4, bh = 4, comps = 4; 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) { uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*comps; 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; @@ -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, src_row, src_stride, width, height, - util_format_dxt1_rgb_fetch, 8); + util_format_dxt1_rgb_fetch, + 8, FALSE); } 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, src_row, src_stride, width, height, - util_format_dxt1_rgba_fetch, 8); + util_format_dxt1_rgba_fetch, + 8, FALSE); } 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, src_row, src_stride, width, height, - util_format_dxt3_rgba_fetch, 16); + util_format_dxt3_rgba_fetch, + 16, FALSE); } 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, src_row, src_stride, width, height, - util_format_dxt5_rgba_fetch, 16); + util_format_dxt5_rgba_fetch, + 16, FALSE); } 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, unsigned width, unsigned height, util_format_dxtn_fetch_t fetch, - unsigned block_size) + unsigned block_size, boolean srgb) { unsigned x, y, i, j; 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; uint8_t tmp[4]; 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[1] = ubyte_to_float(tmp[1]); dst[2] = ubyte_to_float(tmp[2]); + } 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, src_row, src_stride, width, height, - util_format_dxt1_rgb_fetch, 8); + util_format_dxt1_rgb_fetch, + 8, FALSE); } 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, src_row, src_stride, width, height, - util_format_dxt1_rgba_fetch, 8); + util_format_dxt1_rgba_fetch, + 8, FALSE); } 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, src_row, src_stride, width, height, - util_format_dxt3_rgba_fetch, 16); + util_format_dxt3_rgba_fetch, + 16, FALSE); } 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, src_row, src_stride, 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. */ +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 util_format_dxt1_rgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src, unsigned src_stride, unsigned width, unsigned height) { - const unsigned bw = 4, bh = 4, bytes_per_block = 8; - 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][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); - } + util_format_dxtn_pack_rgba_8unorm(dst_row, dst_stride, src, src_stride, + width, height, UTIL_FORMAT_DXT1_RGB, + 8, FALSE); } 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, unsigned width, unsigned height) { - const unsigned bw = 4, bh = 4, comps = 4, bytes_per_block = 8; - 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) { - 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); - } + util_format_dxtn_pack_rgba_8unorm(dst_row, dst_stride, src, src_stride, + width, height, UTIL_FORMAT_DXT1_RGBA, + 8, FALSE); } 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, unsigned width, unsigned height) { - const unsigned bw = 4, bh = 4, comps = 4, bytes_per_block = 16; - 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) { - 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); - } + util_format_dxtn_pack_rgba_8unorm(dst_row, dst_stride, src, src_stride, + width, height, UTIL_FORMAT_DXT3_RGBA, + 16, FALSE); } 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, unsigned width, unsigned height) { - const unsigned bw = 4, bh = 4, comps = 4, bytes_per_block = 16; - unsigned x, y, i, j, k; + util_format_dxtn_pack_rgba_8unorm(dst_row, dst_stride, src, src_stride, + 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; - 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]; + 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) { + float src_tmp; + 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); - dst += bytes_per_block; + util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], format, dst, 0); + 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, unsigned width, unsigned height) { - unsigned x, y, i, j, k; - for(y = 0; y < height; y += 4) { - uint8_t *dst = dst_row; - 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); - } + util_format_dxtn_pack_rgba_float(dst_row, dst_stride, src, src_stride, + width, height, UTIL_FORMAT_DXT1_RGB, + 8, FALSE); } 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, unsigned width, unsigned height) { - unsigned x, y, i, j, k; - for(y = 0; y < height; y += 4) { - uint8_t *dst = dst_row; - 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); - } + util_format_dxtn_pack_rgba_float(dst_row, dst_stride, src, src_stride, + width, height, UTIL_FORMAT_DXT1_RGBA, + 8, FALSE); } 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, unsigned width, unsigned height) { - unsigned x, y, i, j, k; - for(y = 0; y < height; y += 4) { - uint8_t *dst = dst_row; - 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); - } + util_format_dxtn_pack_rgba_float(dst_row, dst_stride, src, src_stride, + width, height, UTIL_FORMAT_DXT3_RGBA, + 16, FALSE); } 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, unsigned width, unsigned height) { - unsigned x, y, i, j, k; - for(y = 0; y < height; y += 4) { - uint8_t *dst = dst_row; - 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); - } + util_format_dxtn_pack_rgba_float(dst_row, dst_stride, src, src_stride, + width, height, UTIL_FORMAT_DXT5_RGBA, + 16, FALSE); } /* * 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 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); -} - -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_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); + uint8_t tmp[4]; + util_format_dxt1_rgb_fetch(0, src, i, j, tmp); + dst[0] = util_format_srgb_to_linear_8unorm(tmp[0]); + dst[1] = util_format_srgb_to_linear_8unorm(tmp[1]); + dst[2] = util_format_srgb_to_linear_8unorm(tmp[2]); + dst[3] = 255; } void 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); -} - -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_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); + uint8_t tmp[4]; + util_format_dxt1_rgba_fetch(0, src, i, j, tmp); + dst[0] = util_format_srgb_to_linear_8unorm(tmp[0]); + dst[1] = util_format_srgb_to_linear_8unorm(tmp[1]); + dst[2] = util_format_srgb_to_linear_8unorm(tmp[2]); + dst[3] = tmp[3]; } void 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); -} - -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_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); + uint8_t tmp[4]; + util_format_dxt3_rgba_fetch(0, src, i, j, tmp); + dst[0] = util_format_srgb_to_linear_8unorm(tmp[0]); + dst[1] = util_format_srgb_to_linear_8unorm(tmp[1]); + dst[2] = util_format_srgb_to_linear_8unorm(tmp[2]); + dst[3] = tmp[3]; } void 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); -} - -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_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); + uint8_t tmp[4]; + util_format_dxt5_rgba_fetch(0, src, i, j, tmp); + dst[0] = util_format_srgb_to_linear_8unorm(tmp[0]); + dst[1] = util_format_srgb_to_linear_8unorm(tmp[1]); + dst[2] = util_format_srgb_to_linear_8unorm(tmp[2]); + dst[3] = tmp[3]; } void 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); -} - -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_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); + 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]); + dst[1] = util_format_srgb_8unorm_to_linear_float(tmp[1]); + dst[2] = util_format_srgb_8unorm_to_linear_float(tmp[2]); + dst[3] = 1.0f; } void 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); -} - -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_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); + 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]); + 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_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); -} - -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_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); + 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]); + 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_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); } diff --git a/contrib/sdk/sources/Mesa/src/mapi/glapi/glapi.c b/contrib/sdk/sources/Mesa/src/mapi/glapi/glapi.c index fef7c077c5..3a0b638f73 100644 --- a/contrib/sdk/sources/Mesa/src/mapi/glapi/glapi.c +++ b/contrib/sdk/sources/Mesa/src/mapi/glapi/glapi.c @@ -62,8 +62,3 @@ _glapi_set_dispatch(struct _glapi_table *dispatch) { u_current_set((const struct mapi_table *) dispatch); } - -int atexit(void (*func)(void)) -{ - return 0; -}; diff --git a/contrib/sdk/sources/Mesa/src/mesa/Makefile b/contrib/sdk/sources/Mesa/src/mesa/Makefile index 5f893bd4cc..4eada4bafc 100644 --- a/contrib/sdk/sources/Mesa/src/mesa/Makefile +++ b/contrib/sdk/sources/Mesa/src/mesa/Makefile @@ -371,19 +371,70 @@ I965_SRC = \ drivers/dri/i965/gen7_wm_surface_state.c\ $(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)))) OSMESA_OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(OSMESA_SRC))) I965_OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(I965_SRC))) +I915_OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(I915_SRC))) # 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 $(LD) $(LDFLAGS) $(LIBPATH) -o $@ $(I965_OBJS) $(MESA_OBJS) dri.def $(LIBS) # $(STRIP) $@ 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 $(LD) $(LDFLAGS) $(LIBPATH) --out-implib libosmesa.dll.a -o $@ $(MESA_OBJS) $(OSMESA_OBJS) osmesa.def $(LIBS) mv -f libosmesa.dll.a $(SDK_DIR)/lib diff --git a/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/dri_util.c b/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/dri_util.c index 16d2ab5902..98d7c77eed 100644 --- a/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/dri_util.c +++ b/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/dri_util.c @@ -627,8 +627,3 @@ driUpdateFramebufferSize(struct gl_context *ctx, const __DRIdrawable *dPriv) assert(fb->Height == dPriv->h); } } - -int atexit(void (*func)(void)) -{ - return 0; -} diff --git a/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/i915/intel_screen.c b/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/i915/intel_screen.c index 50b8b293c2..296782cc08 100644 --- a/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/i915/intel_screen.c +++ b/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/i915/intel_screen.c @@ -769,7 +769,6 @@ intel_get_param(__DRIscreen *psp, int param, int *value) return true; } - static bool intel_get_boolean(__DRIscreen *psp, int param) { diff --git a/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/i965/intel_screen.c b/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/i965/intel_screen.c index 93deb1bbde..3af13141f0 100644 --- a/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/i965/intel_screen.c +++ b/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/i965/intel_screen.c @@ -1189,7 +1189,7 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp) { 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 || psp->dri2.loader->getBuffersWithFormat == NULL) { diff --git a/contrib/sdk/sources/Mesa/src/mesa/drivers/osmesa/osmesa.c b/contrib/sdk/sources/Mesa/src/mesa/drivers/osmesa/osmesa.c index bcb57aa750..321a8227e9 100644 --- a/contrib/sdk/sources/Mesa/src/mesa/drivers/osmesa/osmesa.c +++ b/contrib/sdk/sources/Mesa/src/mesa/drivers/osmesa/osmesa.c @@ -1174,8 +1174,3 @@ OSMesaColorClamp(GLboolean enable) #include "glapi/glapitemp.h" #endif /* GLX_INDIRECT_RENDERING */ - -int atexit(void (*func)(void)) -{ - return 0; -}; diff --git a/contrib/sdk/sources/Mesa/src/mesa/main/mtypes.h b/contrib/sdk/sources/Mesa/src/mesa/main/mtypes.h index 9493b14517..367b00973e 100644 --- a/contrib/sdk/sources/Mesa/src/mesa/main/mtypes.h +++ b/contrib/sdk/sources/Mesa/src/mesa/main/mtypes.h @@ -3647,8 +3647,8 @@ extern int MESA_VERBOSE; extern int MESA_DEBUG_FLAGS; # define MESA_FUNCTION __FUNCTION__ #else -# define ENTER() printf("ENTER %s\n", __FUNCTION__) -# define LEAVE() printf("LEAVE %s\n", __FUNCTION__) +# define ENTER() +# define LEAVE() # define FAIL() # define MESA_VERBOSE 0 # define MESA_DEBUG_FLAGS 0