@ -18,10 +18,14 @@ struct SamplerDescriptor {
union {
u32 raw = 0 ;
BitField < 0 , 2 , Tegra : : Shader : : TextureType > texture_type ;
BitField < 2 , 3 , Tegra : : Texture : : ComponentType > component _type;
BitField < 2 , 3 , Tegra : : Texture : : ComponentType > r _type;
BitField < 5 , 1 , u32 > is_array ;
BitField < 6 , 1 , u32 > is_buffer ;
BitField < 7 , 1 , u32 > is_shadow ;
BitField < 8 , 3 , Tegra : : Texture : : ComponentType > g_type ;
BitField < 11 , 3 , Tegra : : Texture : : ComponentType > b_type ;
BitField < 14 , 3 , Tegra : : Texture : : ComponentType > a_type ;
BitField < 17 , 7 , Tegra : : Texture : : TextureFormat > format ;
} ;
bool operator = = ( const SamplerDescriptor & rhs ) const noexcept {
@ -36,9 +40,11 @@ struct SamplerDescriptor {
using Tegra : : Shader : : TextureType ;
SamplerDescriptor result ;
// This is going to be used to determine the shading language type.
// Because of that we don't care about all component types on color textures.
result . component_type . Assign ( tic . r_type . Value ( ) ) ;
result . format . Assign ( tic . format . Value ( ) ) ;
result . r_type . Assign ( tic . r_type . Value ( ) ) ;
result . g_type . Assign ( tic . g_type . Value ( ) ) ;
result . b_type . Assign ( tic . b_type . Value ( ) ) ;
result . a_type . Assign ( tic . a_type . Value ( ) ) ;
switch ( tic . texture_type . Value ( ) ) {
case Tegra : : Texture : : TextureType : : Texture1D :