diff options
Diffstat (limited to 'src/gallium/auxiliary/util')
| -rw-r--r-- | src/gallium/auxiliary/util/Makefile | 48 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/SConscript | 61 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_bitmask.c | 32 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_debug.c | 6 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_debug.h | 2 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_debug_memory.c | 8 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_format.h | 2 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_math.h | 5 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_network.c | 8 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_network.h | 2 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_prim.h | 33 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_stream_stdc.c | 2 | 
12 files changed, 71 insertions, 138 deletions
| diff --git a/src/gallium/auxiliary/util/Makefile b/src/gallium/auxiliary/util/Makefile deleted file mode 100644 index 3ed90fd1b7..0000000000 --- a/src/gallium/auxiliary/util/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -TOP = ../../../.. -include $(TOP)/configs/current - -LIBNAME = util - -C_SOURCES = \ -	u_debug.c \ -	u_debug_dump.c \ -	u_debug_symbol.c \ -	u_debug_stack.c \ -	u_blit.c \ -	u_blitter.c \ -	u_cache.c \ -	u_cpu_detect.c \ -	u_dl.c \ -	u_draw_quad.c \ -	u_format.c \ -	u_format_access.c \ -	u_format_table.c \ -	u_gen_mipmap.c \ -	u_handle_table.c \ -	u_hash_table.c \ -	u_hash.c \ -	u_keymap.c \ -	u_linear.c \ -	u_network.c \ -	u_math.c \ -	u_mm.c \ -	u_rect.c \ -	u_simple_shaders.c \ -	u_snprintf.c \ -	u_stream_stdc.c \ -	u_stream_wd.c \ -	u_surface.c \ -	u_texture.c \ -	u_tile.c \ -	u_time.c \ -	u_timed_winsys.c \ -	u_upload_mgr.c \ -	u_simple_screen.c - -include ../../Makefile.template - -u_format_table.c: u_format_table.py u_format_parse.py u_format.csv -	python u_format_table.py u_format.csv > $@ - -u_format_access.c: u_format_access.py u_format_parse.py u_format.csv -	python u_format_access.py u_format.csv > $@ diff --git a/src/gallium/auxiliary/util/SConscript b/src/gallium/auxiliary/util/SConscript deleted file mode 100644 index 2a546d19dc..0000000000 --- a/src/gallium/auxiliary/util/SConscript +++ /dev/null @@ -1,61 +0,0 @@ -Import('*') - -env.Clone() - -env.Append(CPPPATH = ['.']) - -env.CodeGenerate( -	target = 'u_format_table.c', -	script = 'u_format_table.py', -	source = ['u_format.csv'], -	command = 'python $SCRIPT $SOURCE > $TARGET' -) - -env.CodeGenerate( -	target = 'u_format_access.c', -	script = 'u_format_access.py', -	source = ['u_format.csv'], -	command = 'python $SCRIPT $SOURCE > $TARGET' -) - -util = env.ConvenienceLibrary( -	target = 'util', -	source = [ -		'u_bitmask.c', -		'u_blit.c', -		'u_blitter.c', -		'u_cache.c', -		'u_cpu_detect.c', -		'u_debug.c', -		'u_debug_dump.c', -		'u_debug_memory.c', -		'u_debug_stack.c', -		'u_debug_symbol.c', -		'u_dl.c', -		'u_draw_quad.c', -		'u_format.c', -		'u_format_access.c', -		'u_format_table.c', -		'u_gen_mipmap.c', -		'u_handle_table.c', -		'u_hash.c', -		'u_hash_table.c', -		'u_keymap.c', -		'u_network.c', -		'u_math.c', -		'u_mm.c', -		'u_rect.c', -		'u_simple_shaders.c', -		'u_snprintf.c', -		'u_stream_stdc.c', -		'u_stream_wd.c', -		'u_surface.c', -		'u_texture.c', -		'u_tile.c', -		'u_time.c', -		'u_timed_winsys.c', -		'u_upload_mgr.c', -		'u_simple_screen.c', -	]) - -auxiliaries.insert(0, util) diff --git a/src/gallium/auxiliary/util/u_bitmask.c b/src/gallium/auxiliary/util/u_bitmask.c index 77587c07ec..23c93a3ebc 100644 --- a/src/gallium/auxiliary/util/u_bitmask.c +++ b/src/gallium/auxiliary/util/u_bitmask.c @@ -97,12 +97,12 @@ util_bitmask_resize(struct util_bitmask *bm,     if(!minimum_size)        return FALSE; -   if(bm->size > minimum_size) +   if(bm->size >= minimum_size)        return TRUE;     assert(bm->size % UTIL_BITMASK_BITS_PER_WORD == 0);     new_size = bm->size; -   while(!(new_size > minimum_size)) { +   while(new_size < minimum_size) {        new_size *= 2;        /* Check integer overflow */        if(new_size < bm->size) @@ -136,7 +136,7 @@ util_bitmask_filled_set(struct util_bitmask *bm,                          unsigned index)  {     assert(bm->filled <= bm->size); -   assert(index <= bm->size); +   assert(index < bm->size);     if(index == bm->filled) {        ++bm->filled; @@ -149,7 +149,7 @@ util_bitmask_filled_unset(struct util_bitmask *bm,                            unsigned index)  {     assert(bm->filled <= bm->size); -   assert(index <= bm->size); +   assert(index < bm->size);     if(index < bm->filled)        bm->filled = index; @@ -182,7 +182,7 @@ util_bitmask_add(struct util_bitmask *bm)        mask = 1;     }  found: -    +     /* grow the bitmask if necessary */     if(!util_bitmask_resize(bm, bm->filled))        return UTIL_BITMASK_INVALID_INDEX; @@ -198,9 +198,9 @@ unsigned  util_bitmask_set(struct util_bitmask *bm,                    unsigned index)  { -   unsigned word = index / UTIL_BITMASK_BITS_PER_WORD; -   unsigned bit  = index % UTIL_BITMASK_BITS_PER_WORD; -   util_bitmask_word mask = 1 << bit; +   unsigned word; +   unsigned bit; +   util_bitmask_word mask;     assert(bm); @@ -208,6 +208,10 @@ util_bitmask_set(struct util_bitmask *bm,     if(!util_bitmask_resize(bm, index))        return UTIL_BITMASK_INVALID_INDEX; +   word = index / UTIL_BITMASK_BITS_PER_WORD; +   bit  = index % UTIL_BITMASK_BITS_PER_WORD; +   mask = 1 << bit; +     bm->words[word] |= mask;     util_bitmask_filled_set(bm, index); @@ -220,15 +224,19 @@ void  util_bitmask_clear(struct util_bitmask *bm,                      unsigned index)  { -   unsigned word = index / UTIL_BITMASK_BITS_PER_WORD; -   unsigned bit  = index % UTIL_BITMASK_BITS_PER_WORD; -   util_bitmask_word mask = 1 << bit; +   unsigned word; +   unsigned bit; +   util_bitmask_word mask;     assert(bm);     if(index >= bm->size)        return; +   word = index / UTIL_BITMASK_BITS_PER_WORD; +   bit  = index % UTIL_BITMASK_BITS_PER_WORD; +   mask = 1 << bit; +     bm->words[word] &= ~mask;     util_bitmask_filled_unset(bm, index); @@ -250,7 +258,7 @@ util_bitmask_get(struct util_bitmask *bm,        return TRUE;     } -   if(index > bm->size) +   if(index >= bm->size)        return FALSE;     if(bm->words[word] & mask) { diff --git a/src/gallium/auxiliary/util/u_debug.c b/src/gallium/auxiliary/util/u_debug.c index 4e01123fff..9b4e6ca2a7 100644 --- a/src/gallium/auxiliary/util/u_debug.c +++ b/src/gallium/auxiliary/util/u_debug.c @@ -454,7 +454,8 @@ debug_dump_flags(const struct debug_named_value *names,  	    util_strncat(output, "|", sizeof(output));  	 else  	    first = 0; -	 util_strncat(output, names->name, sizeof(output)); +	 util_strncat(output, names->name, sizeof(output) - 1); +	 output[sizeof(output) - 1] = '\0';  	 value &= ~names->value;        }        ++names; @@ -467,7 +468,8 @@ debug_dump_flags(const struct debug_named_value *names,  	 first = 0;        util_snprintf(rest, sizeof(rest), "0x%08lx", value); -      util_strncat(output, rest, sizeof(output)); +      util_strncat(output, rest, sizeof(output) - 1); +      output[sizeof(output) - 1] = '\0';     }     if(first) diff --git a/src/gallium/auxiliary/util/u_debug.h b/src/gallium/auxiliary/util/u_debug.h index abd834c741..facc30a553 100644 --- a/src/gallium/auxiliary/util/u_debug.h +++ b/src/gallium/auxiliary/util/u_debug.h @@ -188,7 +188,7 @@ void _debug_assert_fail(const char *expr,  #ifdef DEBUG  #define debug_assert(expr) ((expr) ? (void)0 : _debug_assert_fail(#expr, __FILE__, __LINE__, __FUNCTION__))  #else -#define debug_assert(expr) ((void)0) +#define debug_assert(expr) do { } while (0 && (expr))  #endif diff --git a/src/gallium/auxiliary/util/u_debug_memory.c b/src/gallium/auxiliary/util/u_debug_memory.c index 7623cb9398..d6484f4ad5 100644 --- a/src/gallium/auxiliary/util/u_debug_memory.c +++ b/src/gallium/auxiliary/util/u_debug_memory.c @@ -297,9 +297,9 @@ debug_memory_end(unsigned long start_no)        if((start_no <= hdr->no && hdr->no < last_no) ||  	 (last_no < start_no && (hdr->no < last_no || start_no <= hdr->no))) { -	 debug_printf("%s:%u:%s: %u bytes at %p not freed\n", +	 debug_printf("%s:%u:%s: %lu bytes at %p not freed\n",  		      hdr->file, hdr->line, hdr->function, -		      hdr->size, ptr); +		      (unsigned long) hdr->size, ptr);  #if DEBUG_MEMORY_STACK  	 debug_backtrace_dump(hdr->backtrace, DEBUG_MEMORY_STACK);  #endif @@ -315,8 +315,8 @@ debug_memory_end(unsigned long start_no)     }     if(total_size) { -      debug_printf("Total of %u KB of system memory apparently leaked\n", -		   (total_size + 1023)/1024); +      debug_printf("Total of %lu KB of system memory apparently leaked\n", +		   (unsigned long) (total_size + 1023)/1024);     }     else {        debug_printf("No memory leaks detected.\n"); diff --git a/src/gallium/auxiliary/util/u_format.h b/src/gallium/auxiliary/util/u_format.h index 090183fb17..a558923b2e 100644 --- a/src/gallium/auxiliary/util/u_format.h +++ b/src/gallium/auxiliary/util/u_format.h @@ -119,7 +119,7 @@ enum util_format_colorspace {     UTIL_FORMAT_COLORSPACE_RGB = 0,     UTIL_FORMAT_COLORSPACE_SRGB = 1,     UTIL_FORMAT_COLORSPACE_YUV = 2, -   UTIL_FORMAT_COLORSPACE_ZS = 3, +   UTIL_FORMAT_COLORSPACE_ZS = 3  }; diff --git a/src/gallium/auxiliary/util/u_math.h b/src/gallium/auxiliary/util/u_math.h index 81aeb83cbb..b2969a210a 100644 --- a/src/gallium/auxiliary/util/u_math.h +++ b/src/gallium/auxiliary/util/u_math.h @@ -585,13 +585,12 @@ do {                                     \  static INLINE uint32_t util_unsigned_fixed(float value, unsigned frac_bits)  { -   value *= (1<<frac_bits); -   return value < 0 ? 0 : value; +   return value < 0 ? 0 : (uint32_t)(value * (1<<frac_bits));  }  static INLINE int32_t util_signed_fixed(float value, unsigned frac_bits)  { -   return value * (1<<frac_bits); +   return (int32_t)(value * (1<<frac_bits));  } diff --git a/src/gallium/auxiliary/util/u_network.c b/src/gallium/auxiliary/util/u_network.c index 6269c72e12..87ee0e4768 100644 --- a/src/gallium/auxiliary/util/u_network.c +++ b/src/gallium/auxiliary/util/u_network.c @@ -6,7 +6,7 @@  #if defined(PIPE_SUBSYSTEM_WINDOWS_USER)  #  include <winsock2.h>  #  include <windows.h> -#elif defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_BSD) +#elif defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_APPLE)  #  include <sys/socket.h>  #  include <netinet/in.h>  #  include <unistd.h> @@ -54,7 +54,7 @@ u_socket_close(int s)     if (s < 0)        return; -#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_BSD) +#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_APPLE)     shutdown(s, SHUT_RDWR);     close(s);  #elif defined(PIPE_SUBSYSTEM_WINDOWS_USER) @@ -117,7 +117,7 @@ u_socket_connect(const char *hostname, uint16_t port)     if (!host)        return -1; -   memcpy((char *)&sa.sin_addr,host->h_addr,host->h_length); +   memcpy((char *)&sa.sin_addr,host->h_addr_list[0],host->h_length);     sa.sin_family= host->h_addrtype;     sa.sin_port = htons(port); @@ -169,7 +169,7 @@ u_socket_listen_on_port(uint16_t portnum)  void  u_socket_block(int s, boolean block)  { -#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_BSD) +#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_APPLE)     int old = fcntl(s, F_GETFL, 0);     if (old == -1)        return; diff --git a/src/gallium/auxiliary/util/u_network.h b/src/gallium/auxiliary/util/u_network.h index 0aa898b967..187dcab86e 100644 --- a/src/gallium/auxiliary/util/u_network.h +++ b/src/gallium/auxiliary/util/u_network.h @@ -6,7 +6,7 @@  #if defined(PIPE_SUBSYSTEM_WINDOWS_USER)  #  define PIPE_HAVE_SOCKETS -#elif defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_BSD) +#elif defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_APPLE)  #  define PIPE_HAVE_SOCKETS  #endif diff --git a/src/gallium/auxiliary/util/u_prim.h b/src/gallium/auxiliary/util/u_prim.h index 7434329962..10a874f341 100644 --- a/src/gallium/auxiliary/util/u_prim.h +++ b/src/gallium/auxiliary/util/u_prim.h @@ -135,6 +135,39 @@ static INLINE unsigned u_reduced_prim( unsigned pipe_prim )     }  } +static INLINE unsigned +u_vertices_per_prim(int primitive) +{ +   switch(primitive) { +   case PIPE_PRIM_POINTS: +      return 1; +   case PIPE_PRIM_LINES: +   case PIPE_PRIM_LINE_LOOP: +   case PIPE_PRIM_LINE_STRIP: +      return 2; +   case PIPE_PRIM_TRIANGLES: +   case PIPE_PRIM_TRIANGLE_STRIP: +   case PIPE_PRIM_TRIANGLE_FAN: +      return 3; +   case PIPE_PRIM_LINES_ADJACENCY: +   case PIPE_PRIM_LINE_STRIP_ADJACENCY: +      return 4; +   case PIPE_PRIM_TRIANGLES_ADJACENCY: +   case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY: +      return 6; + +   /* following primitives should never be used +    * with geometry shaders abd their size is +    * undefined */ +   case PIPE_PRIM_POLYGON: +   case PIPE_PRIM_QUADS: +   case PIPE_PRIM_QUAD_STRIP: +   default: +      debug_printf("Unrecognized geometry shader primitive"); +      return 3; +   } +} +  const char *u_prim_name( unsigned pipe_prim );  #endif diff --git a/src/gallium/auxiliary/util/u_stream_stdc.c b/src/gallium/auxiliary/util/u_stream_stdc.c index 5cd05b2904..4d976d6dca 100644 --- a/src/gallium/auxiliary/util/u_stream_stdc.c +++ b/src/gallium/auxiliary/util/u_stream_stdc.c @@ -32,7 +32,7 @@  #include "pipe/p_config.h" -#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_SUBSYSTEM_WINDOWS_USER) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_HAIKU) +#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_SUBSYSTEM_WINDOWS_USER) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_APPLE)  #include <stdio.h> | 
