svga: Fix fs key size computation and key comparison.

This also allows us to have texture_target
back as a bitfield and save us a few bytes.
This commit is contained in:
Michal Krol
2010-01-06 18:36:45 +01:00
parent 6f498a7eff
commit 8d38ef4551
2 changed files with 9 additions and 5 deletions
+7 -2
View File
@@ -40,8 +40,13 @@
static INLINE int compare_fs_keys( const struct svga_fs_compile_key *a,
const struct svga_fs_compile_key *b )
{
unsigned keysize = svga_fs_key_size( a );
return memcmp( a, b, keysize );
unsigned keysize_a = svga_fs_key_size( a );
unsigned keysize_b = svga_fs_key_size( b );
if (keysize_a != keysize_b) {
return (int)(keysize_a - keysize_b);
}
return memcmp( a, b, keysize_a );
}
+2 -3
View File
@@ -56,7 +56,7 @@ struct svga_fs_compile_key
unsigned compare_func:3;
unsigned unnormalized:1;
unsigned width_height_idx:7;
ubyte texture_target;
unsigned texture_target:8;
} tex[PIPE_MAX_SAMPLERS];
};
@@ -119,8 +119,7 @@ static INLINE unsigned svga_vs_key_size( const struct svga_vs_compile_key *key )
static INLINE unsigned svga_fs_key_size( const struct svga_fs_compile_key *key )
{
return (const char *)&key->tex[key->num_textures].texture_target -
(const char *)key;
return (const char *)&key->tex[key->num_textures] - (const char *)key;
}
struct svga_shader_result *