diff options
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/Automake.inc | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/Makefile.am | 4 | ||||
-rw-r--r-- | src/gallium/auxiliary/Makefile.sources | 1 | ||||
-rw-r--r-- | src/gallium/auxiliary/SConscript | 8 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_format_pack.py | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_format_s3tc.c | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_format_srgb.h | 147 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_format_srgb.py | 155 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/SConscript | 2 | ||||
-rw-r--r-- | src/gallium/drivers/nouveau/Makefile.am | 1 | ||||
-rw-r--r-- | src/gallium/drivers/nouveau/nv50/nv50_state.c | 2 | ||||
-rw-r--r-- | src/gallium/targets/graw-gdi/SConscript | 1 | ||||
-rw-r--r-- | src/gallium/targets/graw-null/SConscript | 2 | ||||
-rw-r--r-- | src/gallium/targets/graw-xlib/SConscript | 1 | ||||
-rw-r--r-- | src/gallium/targets/pipe-loader/Makefile.am | 2 | ||||
-rw-r--r-- | src/gallium/tests/graw/SConscript | 2 | ||||
-rw-r--r-- | src/gallium/tests/unit/SConscript | 2 |
17 files changed, 14 insertions, 322 deletions
diff --git a/src/gallium/Automake.inc b/src/gallium/Automake.inc index 22ee166e3ba..74053eb2d82 100644 --- a/src/gallium/Automake.inc +++ b/src/gallium/Automake.inc @@ -11,6 +11,7 @@ GALLIUM_CFLAGS = \ # preprocessor is determined by the ordering of the -I flags. GALLIUM_DRIVER_CFLAGS = \ -I$(srcdir)/include \ + -I$(top_srcdir)/src \ -I$(top_srcdir)/include \ -I$(top_srcdir)/src/gallium/include \ -I$(top_srcdir)/src/gallium/auxiliary \ @@ -20,6 +21,7 @@ GALLIUM_DRIVER_CFLAGS = \ GALLIUM_DRIVER_CXXFLAGS = \ -I$(srcdir)/include \ + -I$(top_srcdir)/src \ -I$(top_srcdir)/include \ -I$(top_srcdir)/src/gallium/include \ -I$(top_srcdir)/src/gallium/auxiliary \ diff --git a/src/gallium/auxiliary/Makefile.am b/src/gallium/auxiliary/Makefile.am index 727ed1f98e4..493d306f614 100644 --- a/src/gallium/auxiliary/Makefile.am +++ b/src/gallium/auxiliary/Makefile.am @@ -39,10 +39,6 @@ indices/u_unfilled_gen.c: $(srcdir)/indices/u_unfilled_gen.py $(AM_V_at)$(MKDIR_P) indices $(AM_V_GEN) $(PYTHON2) $< > $@ -util/u_format_srgb.c: $(srcdir)/util/u_format_srgb.py - $(AM_V_at)$(MKDIR_P) util - $(AM_V_GEN) $(PYTHON2) $< > $@ - util/u_format_table.c: $(srcdir)/util/u_format_table.py $(srcdir)/util/u_format_pack.py $(srcdir)/util/u_format_parse.py $(srcdir)/util/u_format.csv $(AM_V_at)$(MKDIR_P) util $(AM_V_GEN) $(PYTHON2) $(srcdir)/util/u_format_table.py $(srcdir)/util/u_format.csv > $@ diff --git a/src/gallium/auxiliary/Makefile.sources b/src/gallium/auxiliary/Makefile.sources index 8919783c2df..3eae9e52526 100644 --- a/src/gallium/auxiliary/Makefile.sources +++ b/src/gallium/auxiliary/Makefile.sources @@ -162,7 +162,6 @@ C_SOURCES := \ GENERATED_SOURCES := \ indices/u_indices_gen.c \ indices/u_unfilled_gen.c \ - util/u_format_srgb.c \ util/u_format_table.c GALLIVM_SOURCES := \ diff --git a/src/gallium/auxiliary/SConscript b/src/gallium/auxiliary/SConscript index 31dfed316aa..94041d24778 100644 --- a/src/gallium/auxiliary/SConscript +++ b/src/gallium/auxiliary/SConscript @@ -3,6 +3,7 @@ Import('*') from sys import executable as python_cmd env.Append(CPPPATH = [ + '#src', 'indices', 'util', ]) @@ -22,13 +23,6 @@ env.CodeGenerate( ) env.CodeGenerate( - target = 'util/u_format_srgb.c', - script = 'util/u_format_srgb.py', - source = [], - command = python_cmd + ' $SCRIPT > $TARGET' -) - -env.CodeGenerate( target = 'util/u_format_table.c', script = '#src/gallium/auxiliary/util/u_format_table.py', source = ['#src/gallium/auxiliary/util/u_format.csv'], diff --git a/src/gallium/auxiliary/util/u_format_pack.py b/src/gallium/auxiliary/util/u_format_pack.py index f9496de6c8a..a553e2346a9 100644 --- a/src/gallium/auxiliary/util/u_format_pack.py +++ b/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/src/gallium/auxiliary/util/u_format_s3tc.c b/src/gallium/auxiliary/util/u_format_s3tc.c index 11b46020bc3..7e05989e6a1 100644 --- a/src/gallium/auxiliary/util/u_format_s3tc.c +++ b/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/src/gallium/auxiliary/util/u_format_srgb.h b/src/gallium/auxiliary/util/u_format_srgb.h deleted file mode 100644 index 740a9197460..00000000000 --- a/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 <[email protected]> - * @author Michal Krol <[email protected]> - * @author Jose Fonseca <[email protected]> - */ - -#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/src/gallium/auxiliary/util/u_format_srgb.py b/src/gallium/auxiliary/util/u_format_srgb.py deleted file mode 100644 index c6c02f0538e..00000000000 --- a/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 <[email protected]> - * @author Michal Krol <[email protected]> - * @author Jose Fonseca <[email protected]> - */ -''' - - -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/src/gallium/drivers/llvmpipe/SConscript b/src/gallium/drivers/llvmpipe/SConscript index 20500fd834f..1bea61151c6 100644 --- a/src/gallium/drivers/llvmpipe/SConscript +++ b/src/gallium/drivers/llvmpipe/SConscript @@ -20,7 +20,7 @@ env.Alias('llvmpipe', llvmpipe) if not env['embedded']: env = env.Clone() - env.Prepend(LIBS = [llvmpipe] + gallium) + env.Prepend(LIBS = [llvmpipe, gallium, mesautil]) tests = [ 'format', diff --git a/src/gallium/drivers/nouveau/Makefile.am b/src/gallium/drivers/nouveau/Makefile.am index ef48380ac6a..82741d275b9 100644 --- a/src/gallium/drivers/nouveau/Makefile.am +++ b/src/gallium/drivers/nouveau/Makefile.am @@ -49,4 +49,5 @@ nouveau_compiler_SOURCES = \ nouveau_compiler_LDADD = \ libnouveau.la \ ../../auxiliary/libgallium.la \ + $(top_builddir)/src/util/libmesautil.la \ $(GALLIUM_COMMON_LIB_DEPS) diff --git a/src/gallium/drivers/nouveau/nv50/nv50_state.c b/src/gallium/drivers/nouveau/nv50/nv50_state.c index 915ee26ecac..48bc07974a2 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_state.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_state.c @@ -24,7 +24,7 @@ #include "util/u_helpers.h" #include "util/u_inlines.h" #include "util/u_transfer.h" -#include "util/u_format_srgb.h" +#include "util/format_srgb.h" #include "tgsi/tgsi_parse.h" diff --git a/src/gallium/targets/graw-gdi/SConscript b/src/gallium/targets/graw-gdi/SConscript index 352efe95d09..dc7b7f197a9 100644 --- a/src/gallium/targets/graw-gdi/SConscript +++ b/src/gallium/targets/graw-gdi/SConscript @@ -10,6 +10,7 @@ env.Append(CPPPATH = [ ]) env.Prepend(LIBS = [ + mesautils, gallium, 'gdi32', 'user32', diff --git a/src/gallium/targets/graw-null/SConscript b/src/gallium/targets/graw-null/SConscript index ebac1728f04..20c8b7df19c 100644 --- a/src/gallium/targets/graw-null/SConscript +++ b/src/gallium/targets/graw-null/SConscript @@ -16,7 +16,7 @@ sources = [ graw_util, ] -env.Prepend(LIBS = [gallium]) +env.Prepend(LIBS = [mesautil, gallium]) # TODO: write a wrapper function http://www.scons.org/wiki/WrapperFunctions graw = env.SharedLibrary( diff --git a/src/gallium/targets/graw-xlib/SConscript b/src/gallium/targets/graw-xlib/SConscript index 76e4d4fd64e..886811b4b3b 100644 --- a/src/gallium/targets/graw-xlib/SConscript +++ b/src/gallium/targets/graw-xlib/SConscript @@ -7,6 +7,7 @@ env = env.Clone() env.Prepend(LIBS = [ ws_xlib, + mesautil, gallium, ]) diff --git a/src/gallium/targets/pipe-loader/Makefile.am b/src/gallium/targets/pipe-loader/Makefile.am index a4e0407f5aa..ee930781480 100644 --- a/src/gallium/targets/pipe-loader/Makefile.am +++ b/src/gallium/targets/pipe-loader/Makefile.am @@ -38,6 +38,7 @@ pipe_LTLIBRARIES = PIPE_LIBS = \ $(top_builddir)/src/gallium/auxiliary/libgallium.la \ + $(top_builddir)/src/util/libmesautil.la \ $(top_builddir)/src/gallium/drivers/rbug/librbug.la \ $(top_builddir)/src/gallium/drivers/trace/libtrace.la \ $(top_builddir)/src/gallium/drivers/galahad/libgalahad.la \ @@ -96,7 +97,6 @@ nodist_EXTRA_pipe_r300_la_SOURCES = dummy.cpp pipe_r300_la_LIBADD = \ $(PIPE_LIBS) \ $(top_builddir)/src/gallium/winsys/radeon/drm/libradeonwinsys.la \ - $(top_builddir)/src/util/libmesautil.la \ $(top_builddir)/src/gallium/drivers/r300/libr300-helper.la \ $(top_builddir)/src/gallium/drivers/r300/libr300.la \ $(LIBDRM_LIBS) \ diff --git a/src/gallium/tests/graw/SConscript b/src/gallium/tests/graw/SConscript index 87238077cf4..c5fa3fe5958 100644 --- a/src/gallium/tests/graw/SConscript +++ b/src/gallium/tests/graw/SConscript @@ -2,7 +2,7 @@ Import('*') env = env.Clone() -env.Prepend(LIBS = [gallium]) +env.Prepend(LIBS = [mesautil, gallium]) env.Prepend(LIBPATH = [graw.dir]) env.Prepend(LIBS = ['graw']) diff --git a/src/gallium/tests/unit/SConscript b/src/gallium/tests/unit/SConscript index edc1e80a412..a816e2fea41 100644 --- a/src/gallium/tests/unit/SConscript +++ b/src/gallium/tests/unit/SConscript @@ -2,7 +2,7 @@ Import('*') env = env.Clone() -env.Prepend(LIBS = [gallium]) +env.Prepend(LIBS = [mesautil, gallium]) if env['platform'] in ('freebsd8', 'sunos'): env.Append(LIBS = ['m']) |