@ -18,10 +18,14 @@ struct SamplerDescriptor {
union {
union {
u32 raw = 0 ;
u32 raw = 0 ;
BitField < 0 , 2 , Tegra : : Shader : : TextureType > texture_type ;
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 < 5 , 1 , u32 > is_array ;
BitField < 6 , 1 , u32 > is_buffer ;
BitField < 6 , 1 , u32 > is_buffer ;
BitField < 7 , 1 , u32 > is_shadow ;
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 {
bool operator = = ( const SamplerDescriptor & rhs ) const noexcept {
@ -36,9 +40,11 @@ struct SamplerDescriptor {
using Tegra : : Shader : : TextureType ;
using Tegra : : Shader : : TextureType ;
SamplerDescriptor result ;
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 ( ) ) {
switch ( tic . texture_type . Value ( ) ) {
case Tegra : : Texture : : TextureType : : Texture1D :
case Tegra : : Texture : : TextureType : : Texture1D :