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:
@@ -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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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 *
|
||||
|
||||
Reference in New Issue
Block a user