aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/gallium/auxiliary/util
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2014-08-11 21:14:48 +0200
committermarha <marha@users.sourceforge.net>2014-08-11 21:14:48 +0200
commitfdbedba4d50e1b28b0249c83ba11c029f096e400 (patch)
treea80ccb6275fd99644c79c67856e9c1bf1b323d62 /mesalib/src/gallium/auxiliary/util
parentb33b8d8ae86876b50df96881b96074b3fe177cce (diff)
downloadvcxsrv-fdbedba4d50e1b28b0249c83ba11c029f096e400.tar.gz
vcxsrv-fdbedba4d50e1b28b0249c83ba11c029f096e400.tar.bz2
vcxsrv-fdbedba4d50e1b28b0249c83ba11c029f096e400.zip
fontconfig libX11 libxcb libxcb/xcb-proto mesa xserver xkeyboard-config git update 11 Aug 2014
xserver commit 3714f5401690b288045090c4bcd9cb01c6e4860e libxcb commit 966fba6ba4838949d0727dfa45eeb9392d1f85d9 libxcb/xcb-proto commit 4b384d2a015c50d0e93dcacda4b8260a3fd37640 xkeyboard-config commit 651a00ab656a1754b9183a383970a735209bbb50 libX11 commit 368a6401c6a3275d3497fec38a3dcbc38cd9df60 libXdmcp commit fe8eab93e9bcdbe8bb8052434bb5e676e3a0ee8f libXext commit efdcbb7634501e1117d422636a0a75d7ea84b16b libfontenc commit 0037a42107b952c9d903719615747e760e4e7247 libXinerama commit edd95182b26eb5d576d4878c559e0f17dddaa909 libXau commit 1e4635be11154dd8262f37b379511bd627defa2a xkbcomp commit d4e02a09258063c6d024c3ccd42d6b22212e6e18 pixman commit 6d2cf40166d81bfc63108504c8022dc4fec37ff5 xextproto commit 66afec3f49e8eb0d4c2e9af7088fc3116d4bafd7 randrproto commit a4a6694c059d74247c16527eef4a0ec9f56bbef6 glproto commit f84853d97d5749308992412a215fa518b6536eb3 mkfontscale commit 47908fd7a0d061fdcd21e3498da4e223ca9136d9 xwininfo commit 017b3736489985999d8dcf4d9e473e1fd6dd3647 libXft commit 214f9b5306d833e2787c75fe41dfdc9228fcb738 libXmu commit 22d9c590901e121936f50dee97dc60c4f7defb63 libxtrans commit a57a7f62242e1ea972b81414741729bf3dbae0a4 fontconfig commit 841753a93f0e5698663b7931b8456e7b96259f54 mesa commit f24be7340162c6a831b392d46d6637e9656e7a8a
Diffstat (limited to 'mesalib/src/gallium/auxiliary/util')
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_caps.c4
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_pack.py2
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_s3tc.c2
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_srgb.h147
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_srgb.py155
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_math.h10
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_prim.h15
7 files changed, 28 insertions, 307 deletions
diff --git a/mesalib/src/gallium/auxiliary/util/u_caps.c b/mesalib/src/gallium/auxiliary/util/u_caps.c
index 623070755..ec8938b37 100644
--- a/mesalib/src/gallium/auxiliary/util/u_caps.c
+++ b/mesalib/src/gallium/auxiliary/util/u_caps.c
@@ -198,13 +198,13 @@ static unsigned caps_sm3[] = {
UTIL_CHECK_SHADER(FRAGMENT, MAX_INPUTS, 10),
UTIL_CHECK_SHADER(FRAGMENT, MAX_TEMPS, 32),
UTIL_CHECK_SHADER(FRAGMENT, MAX_ADDRS, 1),
- UTIL_CHECK_SHADER(FRAGMENT, MAX_CONSTS, 224),
+ UTIL_CHECK_SHADER(FRAGMENT, MAX_CONST_BUFFER_SIZE, 224 * 16),
UTIL_CHECK_SHADER(VERTEX, MAX_INSTRUCTIONS, 512),
UTIL_CHECK_SHADER(VERTEX, MAX_INPUTS, 16),
UTIL_CHECK_SHADER(VERTEX, MAX_TEMPS, 32),
UTIL_CHECK_SHADER(VERTEX, MAX_ADDRS, 2),
- UTIL_CHECK_SHADER(VERTEX, MAX_CONSTS, 256),
+ UTIL_CHECK_SHADER(VERTEX, MAX_CONST_BUFFER_SIZE, 256 * 16),
UTIL_CHECK_TERMINATE
};
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_pack.py b/mesalib/src/gallium/auxiliary/util/u_format_pack.py
index f9496de6c..a553e2346 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format_pack.py
+++ b/mesalib/src/gallium/auxiliary/util/u_format_pack.py
@@ -669,7 +669,7 @@ def generate(formats):
print '#include "u_half.h"'
print '#include "u_format.h"'
print '#include "u_format_other.h"'
- print '#include "u_format_srgb.h"'
+ print '#include "util/format_srgb.h"'
print '#include "u_format_yuv.h"'
print '#include "u_format_zs.h"'
print
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_s3tc.c b/mesalib/src/gallium/auxiliary/util/u_format_s3tc.c
index 11b46020b..7e05989e6 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format_s3tc.c
+++ b/mesalib/src/gallium/auxiliary/util/u_format_s3tc.c
@@ -27,7 +27,7 @@
#include "u_math.h"
#include "u_format.h"
#include "u_format_s3tc.h"
-#include "u_format_srgb.h"
+#include "util/format_srgb.h"
#if defined(_WIN32) || defined(WIN32)
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_srgb.h b/mesalib/src/gallium/auxiliary/util/u_format_srgb.h
deleted file mode 100644
index 740a91974..000000000
--- a/mesalib/src/gallium/auxiliary/util/u_format_srgb.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2010 VMware, Inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- **************************************************************************/
-
-/**
- * @file
- * SRGB translation.
- *
- * @author Brian Paul <brianp@vmware.com>
- * @author Michal Krol <michal@vmware.com>
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-
-#ifndef U_FORMAT_SRGB_H_
-#define U_FORMAT_SRGB_H_
-
-
-#include "pipe/p_compiler.h"
-#include "u_pack_color.h"
-#include "u_math.h"
-
-
-extern const float
-util_format_srgb_8unorm_to_linear_float_table[256];
-
-extern const uint8_t
-util_format_srgb_to_linear_8unorm_table[256];
-
-extern const uint8_t
-util_format_linear_to_srgb_8unorm_table[256];
-
-extern const unsigned
-util_format_linear_to_srgb_helper_table[104];
-
-
-/**
- * Convert a unclamped linear float to srgb value in the [0,255].
- */
-static INLINE uint8_t
-util_format_linear_float_to_srgb_8unorm(float x)
-{
- /* this would be exact but (probably much) slower */
- if (0) {
- if (x >= 1.0f)
- return 255;
- else if (x >= 0.0031308f)
- return float_to_ubyte(1.055f * powf(x, 0.41666666f) - 0.055f);
- else if (x > 0.0f)
- return float_to_ubyte(12.92f * x);
- else
- return 0;
- }
- else {
- /*
- * This is taken from https://gist.github.com/rygorous/2203834
- * Use LUT and do linear interpolation.
- */
- union fi almostone, minval, f;
- unsigned tab, bias, scale, t;
-
- almostone.ui = 0x3f7fffff;
- minval.ui = (127-13) << 23;
-
- /*
- * Clamp to [2^(-13), 1-eps]; these two values map to 0 and 1, respectively.
- * The tests are carefully written so that NaNs map to 0, same as in the
- * reference implementation.
- */
- if (!(x > minval.f))
- x = minval.f;
- if (x > almostone.f)
- x = almostone.f;
-
- /* Do the table lookup and unpack bias, scale */
- f.f = x;
- tab = util_format_linear_to_srgb_helper_table[(f.ui - minval.ui) >> 20];
- bias = (tab >> 16) << 9;
- scale = tab & 0xffff;
-
- /* Grab next-highest mantissa bits and perform linear interpolation */
- t = (f.ui >> 12) & 0xff;
- return (uint8_t) ((bias + scale*t) >> 16);
- }
-}
-
-
-/**
- * Convert an 8-bit sRGB value from non-linear space to a
- * linear RGB value in [0, 1].
- * Implemented with a 256-entry lookup table.
- */
-static INLINE float
-util_format_srgb_8unorm_to_linear_float(uint8_t x)
-{
- return util_format_srgb_8unorm_to_linear_float_table[x];
-}
-
-
-/*
- * XXX These 2 functions probably don't make a lot of sense (but lots
- * of potential callers which most likely all don't make sense neither)
- */
-
-/**
- * Convert a 8bit normalized value from linear to srgb.
- */
-static INLINE uint8_t
-util_format_linear_to_srgb_8unorm(uint8_t x)
-{
- return util_format_linear_to_srgb_8unorm_table[x];
-}
-
-
-/**
- * Convert a 8bit normalized value from srgb to linear.
- */
-static INLINE uint8_t
-util_format_srgb_to_linear_8unorm(uint8_t x)
-{
- return util_format_srgb_to_linear_8unorm_table[x];
-}
-
-
-#endif /* U_FORMAT_SRGB_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_srgb.py b/mesalib/src/gallium/auxiliary/util/u_format_srgb.py
deleted file mode 100644
index c6c02f053..000000000
--- a/mesalib/src/gallium/auxiliary/util/u_format_srgb.py
+++ /dev/null
@@ -1,155 +0,0 @@
-#!/usr/bin/env python
-
-CopyRight = '''
-/**************************************************************************
- *
- * Copyright 2010 VMware, Inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- **************************************************************************/
-
-/**
- * @file
- * SRGB translation.
- *
- * @author Brian Paul <brianp@vmware.com>
- * @author Michal Krol <michal@vmware.com>
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-'''
-
-
-import math
-import struct
-
-
-def srgb_to_linear(x):
- if x <= 0.04045:
- return x / 12.92
- else:
- return math.pow((x + 0.055) / 1.055, 2.4)
-
-
-def linear_to_srgb(x):
- if x >= 0.0031308:
- return 1.055 * math.pow(x, 0.41666666) - 0.055
- else:
- return 12.92 * x
-
-
-def generate_srgb_tables():
- print 'const float'
- print 'util_format_srgb_8unorm_to_linear_float_table[256] = {'
- for j in range(0, 256, 4):
- print ' ',
- for i in range(j, j + 4):
- print '%.7e,' % (srgb_to_linear(i / 255.0),),
- print
- print '};'
- print
- print 'const uint8_t'
- print 'util_format_srgb_to_linear_8unorm_table[256] = {'
- for j in range(0, 256, 16):
- print ' ',
- for i in range(j, j + 16):
- print '%3u,' % (int(srgb_to_linear(i / 255.0) * 255.0 + 0.5),),
- print
- print '};'
- print
- print 'const uint8_t'
- print 'util_format_linear_to_srgb_8unorm_table[256] = {'
- for j in range(0, 256, 16):
- print ' ',
- for i in range(j, j + 16):
- print '%3u,' % (int(linear_to_srgb(i / 255.0) * 255.0 + 0.5),),
- print
- print '};'
- print
-
-# calculate the table interpolation values used in float linear to unorm8 srgb
- numexp = 13
- mantissa_msb = 3
-# stepshift is just used to only use every x-th float to make things faster,
-# 5 is largest value which still gives exact same table as 0
- stepshift = 5
- nbuckets = numexp << mantissa_msb
- bucketsize = (1 << (23 - mantissa_msb)) >> stepshift
- mantshift = 12
- valtable = []
- sum_aa = float(bucketsize)
- sum_ab = 0.0
- sum_bb = 0.0
- for i in range(0, bucketsize):
- j = (i << stepshift) >> mantshift
- sum_ab += j
- sum_bb += j*j
- inv_det = 1.0 / (sum_aa * sum_bb - sum_ab * sum_ab)
-
- for bucket in range(0, nbuckets):
- start = ((127 - numexp) << 23) + bucket*(bucketsize << stepshift)
- sum_a = 0.0
- sum_b = 0.0
-
- for i in range(0, bucketsize):
- j = (i << stepshift) >> mantshift
- fint = start + (i << stepshift)
- ffloat = struct.unpack('f', struct.pack('I', fint))[0]
- val = linear_to_srgb(ffloat) * 255.0 + 0.5
- sum_a += val
- sum_b += j*val
-
- solved_a = inv_det * (sum_bb*sum_a - sum_ab*sum_b)
- solved_b = inv_det * (sum_aa*sum_b - sum_ab*sum_a)
-
- scaled_a = solved_a * 65536.0 / 512.0
- scaled_b = solved_b * 65536.0
-
- int_a = int(scaled_a + 0.5)
- int_b = int(scaled_b + 0.5)
-
- valtable.append((int_a << 16) + int_b)
-
- print 'const unsigned'
- print 'util_format_linear_to_srgb_helper_table[104] = {'
-
- for j in range(0, nbuckets, 4):
- print ' ',
- for i in range(j, j + 4):
- print '0x%08x,' % (valtable[i],),
- print
- print '};'
- print
-
-def main():
- print '/* This file is autogenerated by u_format_srgb.py. Do not edit directly. */'
- print
- # This will print the copyright message on the top of this file
- print CopyRight.strip()
- print
- print '#include "u_format_srgb.h"'
- print
- generate_srgb_tables()
-
-
-if __name__ == '__main__':
- main()
diff --git a/mesalib/src/gallium/auxiliary/util/u_math.h b/mesalib/src/gallium/auxiliary/util/u_math.h
index f6dcb228f..2823e0570 100644
--- a/mesalib/src/gallium/auxiliary/util/u_math.h
+++ b/mesalib/src/gallium/auxiliary/util/u_math.h
@@ -616,6 +616,14 @@ fui( float f )
return fi.ui;
}
+static INLINE float
+uif(uint32_t ui)
+{
+ union fi fi;
+ fi.ui = ui;
+ return fi.f;
+}
+
/**
* Convert ubyte to float in [0, 1].
@@ -817,7 +825,7 @@ util_memcpy_cpu_to_le32(void * restrict dest, const void * restrict src, size_t
{
#ifdef PIPE_ARCH_BIG_ENDIAN
size_t i, e;
- asset(n % 4 == 0);
+ assert(n % 4 == 0);
for (i = 0, e = n / 4; i < e; i++) {
uint32_t * restrict d = (uint32_t* restrict)dest;
diff --git a/mesalib/src/gallium/auxiliary/util/u_prim.h b/mesalib/src/gallium/auxiliary/util/u_prim.h
index fd95c0ba0..cf1a18f42 100644
--- a/mesalib/src/gallium/auxiliary/util/u_prim.h
+++ b/mesalib/src/gallium/auxiliary/util/u_prim.h
@@ -136,6 +136,21 @@ u_prim_vertex_count(unsigned prim)
return (likely(prim < PIPE_PRIM_MAX)) ? &prim_table[prim] : NULL;
}
+/**
+ * Given a vertex count, return the number of primitives.
+ * For polygons, return the number of triangles.
+ */
+static INLINE unsigned
+u_prims_for_vertices(unsigned prim, unsigned num)
+{
+ const struct u_prim_vertex_count *info = u_prim_vertex_count(prim);
+
+ if (num < info->min)
+ return 0;
+
+ return 1 + ((num - info->min) / info->incr);
+}
+
static INLINE boolean u_validate_pipe_prim( unsigned pipe_prim, unsigned nr )
{
const struct u_prim_vertex_count *count = u_prim_vertex_count(pipe_prim);