STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Types | Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Friends | List of all members
Concurrency::graphics::details::_Texture_base< _Value_type, _Rank > Class Template Reference

#include <amp_graphics.h>

Inheritance diagram for Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >:
Concurrency::graphics::texture< _Value_type, _Rank > Concurrency::graphics::texture_view< _Value_type, _Rank > Concurrency::graphics::texture_view< const _Value_type, _Rank >

Public Types

typedef _Value_type value_type
 
typedef _Short_vector_type_traits< _Value_type >::_Scalar_type scalar_type
 

Public Member Functions

__declspec(property(get=get_extent)) Concurrency Concurrency::extent< _Rank > get_extent () const __GPU
 Returns the extent that defines the shape of this texture or texture view. More...
 
Concurrency::extent< _Rank > get_mipmap_extent (unsigned int _Mipmap_level) const __CPU_ONLY
 Returns the extent for specific mipmap level of this texture or texture view. More...
 
Concurrency::extent< _Rank > get_mipmap_extent (unsigned int _Mipmap_level) const __GPU_ONLY
 Returns the extent for specific mipmap level of this texture or texture view. More...
 
__declspec(property(get=get_accelerator_view)) Concurrency Concurrency::accelerator_view get_accelerator_view () const __CPU_ONLY
 Returns the accelerator_view where this texture or texture view is located. More...
 
 __declspec (property(get=get_bits_per_scalar_element)) unsigned int bits_per_scalar_element
 Returns the number of bits per scalar element More...
 
unsigned int get_bits_per_scalar_element () const __CPU_ONLY
 
 __declspec (property(get=get_mipmap_levels)) unsigned int mipmap_levels
 Query how many mipmap levels are accessible by this texture (or texture view). More...
 
unsigned int get_mipmap_levels () const __GPU
 
 __declspec (property(get=get_data_length)) unsigned int data_length
 Returns the physical data length (in bytes) that is required in order to represent the texture on the host side with its native format. If the texture contains multiple mipmap levels the value represents the sum of physical data length for each accessible mipmap level by this texture (or texture view). More...
 
unsigned int get_data_length () const __CPU_ONLY
 

Static Public Attributes

static const int rank = _Rank
 

Protected Types

typedef Concurrency::details::_Texture_descriptor _Texture_descriptor
 

Protected Member Functions

 _Texture_base () __CPU_ONLY
 
 _Texture_base (const Concurrency::extent< _Rank > &_Ext, unsigned int _Mipmap_levels=1) __CPU_ONLY
 
 _Texture_base (const _Texture_base &_Src) __GPU
 
 _Texture_base (const _Texture_base &_Src, unsigned int _Most_detailed_mipmap_level, unsigned int _View_mipmap_levels) __CPU_ONLY
 
 _Texture_base (const _Texture_base &_Src, bool _Flatten_mipmap_levels) __GPU_ONLY
 
 _Texture_base (const Concurrency::extent< _Rank > &_Ext, const _Texture_descriptor &_Desc) __CPU_ONLY
 
void _Copy_to (const _Texture_base &_Dest) const __CPU_ONLY
 
bool operator== (const _Texture_base &_Other) const __CPU_ONLY
 
 ~_Texture_base () __GPU
 
_Ret_ _Texture_Get_texture () const __CPU_ONLY
 
unsigned int _Get_most_detailed_mipmap_level () const __GPU
 
bool _Are_mipmap_levels_overlapping (const _Texture_base &_Other) const __CPU_ONLY
 

Protected Attributes

Concurrency::extent< _Rank > _M_extent
 
_Texture_descriptor _M_texture_descriptor
 

Friends

template<typename _T >
const _Texture_descriptorConcurrency::details::_Get_texture_descriptor (const _T &_Tex) __GPU
 
template<typename _T >
_Ret_ _TextureConcurrency::details::_Get_texture (const _T &_Tex) __CPU_ONLY
 
template<typename _Value_type , int _Rank>
_Event _Copy_async_impl (const _Texture_base< _Value_type, _Rank > &_Src, const index< _Rank > &_Src_offset, const _Texture_base< _Value_type, _Rank > &_Dst, const index< _Rank > &_Dst_offset, const extent< _Rank > &_Copy_extent) __CPU_ONLY
 

Member Typedef Documentation

template<typename _Value_type, int _Rank>
typedef Concurrency::details::_Texture_descriptor Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_Texture_descriptor
protected
template<typename _Value_type, int _Rank>
typedef _Short_vector_type_traits<_Value_type>::_Scalar_type Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::scalar_type
template<typename _Value_type, int _Rank>
typedef _Value_type Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::value_type

Constructor & Destructor Documentation

template<typename _Value_type, int _Rank>
Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_Texture_base ( )
inlineprotected
503  {
504  // This default ctor is required to enable move ctor for a derived types,
505  // empty _Texture_base is later initialized by move assignment operator
506  }
template<typename _Value_type, int _Rank>
Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_Texture_base ( const Concurrency::extent< _Rank > &  _Ext,
unsigned int  _Mipmap_levels = 1 
)
inlineprotected
509  : _M_extent(_Ext), _M_texture_descriptor(/*_Most_detailed_mipmap_level=*/0, _Mipmap_levels)
510  {
512  _Are_valid_mipmap_parameters(/*_Most_detailed_mipmap_level=*/0, _Mipmap_levels);
513 
514  // Validate if we can generate _Mipmap_levels number of mipmap levels given the dimensionality of the texture
515  unsigned int _Max_mipmap_levels = _Get_max_mipmap_levels(_M_extent);
516  if (_Mipmap_levels > _Max_mipmap_levels)
517  {
518  std::stringstream _Err_msg;
519  _Err_msg << "The texture extent is too small to generate (" << _Mipmap_levels << ") mipmap levels, the maximum allowed is (" << _Max_mipmap_levels << ")";
520  throw runtime_exception(_Err_msg.str().c_str(), E_INVALIDARG);
521  }
522  else if (_Mipmap_levels == 0)
523  {
524  // Generate full range of all mipmaps
525  // e.g. 2D 10x2 texture would have: 10x2, 5x1, 2x1, 1x1 (4 mipmap levels)
526  _Mipmap_levels = _Max_mipmap_levels;
527  }
529  }
static void _Is_valid_extent(const _T< _Rank > &_Tuple) __CPU_ONLY
Definition: xxamp.h:1195
void _Are_valid_mipmap_parameters(unsigned int _Most_detailed_mipmap_level, unsigned int _Mipmap_levels=0)
Definition: xxamp.h:1246
unsigned int _Get_max_mipmap_levels(const extent< _Rank > &_Extent)
Definition: xxamp.h:1225
void _Set_view_mipmap_levels(unsigned int _View_mipmap_levels) __CPU_ONLY
Definition: amprt.h:669
_Texture_descriptor _M_texture_descriptor
Definition: amp_graphics.h:593
Concurrency::extent< _Rank > _M_extent
Definition: amp_graphics.h:592
basic_stringstream< char, char_traits< char >, allocator< char > > stringstream
Definition: iosfwd:688
template<typename _Value_type, int _Rank>
Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_Texture_base ( const _Texture_base< _Value_type, _Rank > &  _Src)
inlineprotected
533  : _M_extent(_Src._M_extent), _M_texture_descriptor(_Src._M_texture_descriptor)
534  {
535  }
_Texture_descriptor _M_texture_descriptor
Definition: amp_graphics.h:593
Concurrency::extent< _Rank > _M_extent
Definition: amp_graphics.h:592
template<typename _Value_type, int _Rank>
Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_Texture_base ( const _Texture_base< _Value_type, _Rank > &  _Src,
unsigned int  _Most_detailed_mipmap_level,
unsigned int  _View_mipmap_levels 
)
inlineprotected
539  : _M_extent(_Get_extent_at_level(_Src.extent, _Most_detailed_mipmap_level)), _M_texture_descriptor(_Src._M_texture_descriptor, _Src._Get_most_detailed_mipmap_level() + _Most_detailed_mipmap_level, _View_mipmap_levels)
540  {
541  Concurrency::details::_Is_valid_mipmap_range(_Src.get_mipmap_levels(), _Most_detailed_mipmap_level, _View_mipmap_levels);
542  }
extent< _Rank > _Get_extent_at_level(const extent< _Rank > &_Base_extent, unsigned int _Level)
Definition: xxamp_inl.h:141
_Texture_descriptor _M_texture_descriptor
Definition: amp_graphics.h:593
Concurrency::extent< _Rank > _M_extent
Definition: amp_graphics.h:592
void _Is_valid_mipmap_range(unsigned int _Src_view_mipmap_levels, unsigned int _Dst_most_detailed_level, unsigned int _Dst_view_mipmap_levels)
Definition: xxamp.h:1266
template<typename _Value_type, int _Rank>
Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_Texture_base ( const _Texture_base< _Value_type, _Rank > &  _Src,
bool  _Flatten_mipmap_levels 
)
inlineprotected
547  : _M_extent(_Src.extent), _M_texture_descriptor(_Src._M_texture_descriptor, /*_Most_detailed_mipmap_level=*/0, _Flatten_mipmap_levels ? /*_View_mipmap_levels=*/1 : _Src.get_mipmap_levels())
548  {
549  }
_Texture_descriptor _M_texture_descriptor
Definition: amp_graphics.h:593
Concurrency::extent< _Rank > _M_extent
Definition: amp_graphics.h:592
template<typename _Value_type, int _Rank>
Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_Texture_base ( const Concurrency::extent< _Rank > &  _Ext,
const _Texture_descriptor _Desc 
)
inlineprotected
553  : _M_extent(_Ext), _M_texture_descriptor(_Desc)
554  {
556  }
static void _Is_valid_extent(const _T< _Rank > &_Tuple) __CPU_ONLY
Definition: xxamp.h:1195
_Texture_descriptor _M_texture_descriptor
Definition: amp_graphics.h:593
Concurrency::extent< _Rank > _M_extent
Definition: amp_graphics.h:592
template<typename _Value_type, int _Rank>
Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::~_Texture_base ( )
inlineprotected
573  {
574  }

Member Function Documentation

template<typename _Value_type, int _Rank>
Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::__declspec ( property(get=get_bits_per_scalar_element )

Returns the number of bits per scalar element

template<typename _Value_type, int _Rank>
Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::__declspec ( property(get=get_mipmap_levels )

Query how many mipmap levels are accessible by this texture (or texture view).

Returns
Returns number of mipmap levels accessible by this texture (or texture view).
template<typename _Value_type, int _Rank>
Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::__declspec ( property(get=get_data_length )

Returns the physical data length (in bytes) that is required in order to represent the texture on the host side with its native format. If the texture contains multiple mipmap levels the value represents the sum of physical data length for each accessible mipmap level by this texture (or texture view).

template<typename _Value_type, int _Rank>
bool Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_Are_mipmap_levels_overlapping ( const _Texture_base< _Value_type, _Rank > &  _Other) const
inlineprotected
587  {
588  return _M_texture_descriptor._Are_mipmap_levels_overlapping(&_Other._M_texture_descriptor);
589  }
bool _Are_mipmap_levels_overlapping(const _Texture_descriptor *_Other) const __CPU_ONLY
Definition: amprt.h:699
_Texture_descriptor _M_texture_descriptor
Definition: amp_graphics.h:593
template<typename _Value_type, int _Rank>
void Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_Copy_to ( const _Texture_base< _Value_type, _Rank > &  _Dest) const
inlineprotected
559  {
560  if (!(*this == _Dest))
561  {
562  _ASSERTE(this->extent == _Dest.extent);
563  details::_Copy_async_impl(*this, index<_Rank>(), _Dest, index<_Rank>(), _Dest.extent)._Get();
564  }
565  }
_AMPIMP void _Get()
Wait until the _Event completes and throw any exceptions that occur.
Definition: type_traits:974
_Event _Copy_async_impl(const void *_Src, unsigned int _Src_byte_size, const _Texture_base< _Value_type, _Rank > &_Dst, const index< _Rank > &_Offset, const Concurrency::extent< _Rank > &_Copy_extent)
Definition: amp_graphics.h:3954
template<typename _Value_type, int _Rank>
unsigned int Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_Get_most_detailed_mipmap_level ( ) const
inlineprotected
582  {
584  }
unsigned int _Get_most_detailed_mipmap_level() const __GPU
Definition: amprt.h:659
_Texture_descriptor _M_texture_descriptor
Definition: amp_graphics.h:593
template<typename _Value_type, int _Rank>
_Ret_ _Texture* Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_Get_texture ( ) const
inlineprotected
577  {
579  }
_Texture_descriptor _M_texture_descriptor
Definition: amp_graphics.h:593
_Ret_ _Texture * _Get_texture_ptr() const __CPU_ONLY
Definition: amprt.h:653
template<typename _Value_type, int _Rank>
__declspec (property(get=get_accelerator_view)) Concurrency Concurrency::accelerator_view Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::get_accelerator_view ( ) const
inline

Returns the accelerator_view where this texture or texture view is located.

461  {
463  }
_AMPIMP accelerator_view _Get_access_on_accelerator_view() const
_Ret_ _Texture * _Get_texture() const __CPU_ONLY
Definition: amp_graphics.h:576
template<typename _Value_type, int _Rank>
unsigned int Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::get_bits_per_scalar_element ( ) const
inline
470  {
471  unsigned int _Bits_per_channel = _Get_texture()->_Get_bits_per_channel();
472  return _Short_vector_type_traits<_Value_type>::_Format_base_type_id == _Double_type ? _Bits_per_channel * (sizeof(double)/sizeof(int)) : _Bits_per_channel;
473  }
_Ret_ _Texture * _Get_texture() const __CPU_ONLY
Definition: amp_graphics.h:576
Definition: amprt.h:298
unsigned int _Get_bits_per_channel() const
Definition: amprt.h:2245
template<typename _Value_type, int _Rank>
unsigned int Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::get_data_length ( ) const
inline
494  {
496  }
unsigned int get_mipmap_levels() const __GPU
Definition: amp_graphics.h:482
unsigned int _Get_most_detailed_mipmap_level() const __GPU
Definition: amp_graphics.h:581
unsigned int _Get_data_length(unsigned int _Most_detailed_mipmap_level, unsigned int _View_mipmap_levels, const size_t *_Extents=nullptr) const
Definition: amprt.h:2256
_Ret_ _Texture * _Get_texture() const __CPU_ONLY
Definition: amp_graphics.h:576
template<typename _Value_type, int _Rank>
__declspec (property(get=get_extent)) Concurrency Concurrency::extent<_Rank> Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::get_extent ( ) const
inline

Returns the extent that defines the shape of this texture or texture view.

421  {
422  return _M_extent;
423  }
Concurrency::extent< _Rank > _M_extent
Definition: amp_graphics.h:592
template<typename _Value_type, int _Rank>
Concurrency::extent<_Rank> Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::get_mipmap_extent ( unsigned int  _Mipmap_level) const
inline

Returns the extent for specific mipmap level of this texture or texture view.

Mipmap level for which extent should be calculated.

432  {
433  if (_Mipmap_level >= this->get_mipmap_levels())
434  {
435  std::stringstream _Err_msg;
436  _Err_msg << "Value for _Mipmap_level parameter (" << _Mipmap_level
437  << ") cannot be greater than or equal to number of mipmap levels ("
438  << this->get_mipmap_levels() << ") on the texture or texture view";
439 
440  throw runtime_exception(_Err_msg.str().c_str(), E_INVALIDARG);
441  }
443  }
extent< _Rank > _Get_extent_at_level(const extent< _Rank > &_Base_extent, unsigned int _Level)
Definition: xxamp_inl.h:141
unsigned int get_mipmap_levels() const __GPU
Definition: amp_graphics.h:482
Concurrency::extent< _Rank > _M_extent
Definition: amp_graphics.h:592
basic_stringstream< char, char_traits< char >, allocator< char > > stringstream
Definition: iosfwd:688
template<typename _Value_type, int _Rank>
Concurrency::extent<_Rank> Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::get_mipmap_extent ( unsigned int  _Mipmap_level) const
inline

Returns the extent for specific mipmap level of this texture or texture view.

Mipmap level for which extent should be calculated.

452  {
454  }
extent< _Rank > _Get_extent_at_level_unsafe(const extent< _Rank > &_Base_extent, unsigned int _Level) __GPU
Definition: xxamp_inl.h:95
Concurrency::extent< _Rank > _M_extent
Definition: amp_graphics.h:592
template<typename _Value_type, int _Rank>
unsigned int Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::get_mipmap_levels ( ) const
inline
483  {
485  }
unsigned int _Get_view_mipmap_levels() const __GPU
Definition: amprt.h:664
_Texture_descriptor _M_texture_descriptor
Definition: amp_graphics.h:593
template<typename _Value_type, int _Rank>
bool Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::operator== ( const _Texture_base< _Value_type, _Rank > &  _Other) const
inlineprotected
568  {
569  return _Other._M_extent == _M_extent && _Other._M_texture_descriptor == _M_texture_descriptor;
570  }
_Texture_descriptor _M_texture_descriptor
Definition: amp_graphics.h:593
Concurrency::extent< _Rank > _M_extent
Definition: amp_graphics.h:592

Friends And Related Function Documentation

template<typename _Value_type, int _Rank>
template<typename _Value_type , int _Rank>
_Event _Copy_async_impl ( const _Texture_base< _Value_type, _Rank > &  _Src,
const index< _Rank > &  _Src_offset,
const _Texture_base< _Value_type, _Rank > &  _Dst,
const index< _Rank > &  _Dst_offset,
const extent< _Rank > &  _Copy_extent 
)
friend
4057 {
4058  _Is_valid_section(_Src.extent, _Src_offset, _Copy_extent);
4059  _Is_valid_section(_Dst.extent, _Dst_offset, _Copy_extent);
4060 
4061  _Texture_descriptor _Src_tex_desc = _Get_texture_descriptor(_Src);
4062  _Texture_descriptor _Dst_tex_desc = _Get_texture_descriptor(_Dst);
4063 
4064  if (_Src_tex_desc._Get_view_mipmap_levels() != _Dst_tex_desc._Get_view_mipmap_levels())
4065  {
4066  throw runtime_exception("The source and destination textures must have the exactly the same number of mipmap levels for texture copy.", E_INVALIDARG);
4067  }
4068 
4069  bool _Is_whole_texture_copy = (_Src_offset == _Dst_offset && _Src_offset == index<_Rank>() && _Src.extent == _Dst.extent && _Src.extent == _Copy_extent);
4070 
4071  if (_Src_tex_desc._Get_view_mipmap_levels() > 1 && !_Is_whole_texture_copy)
4072  {
4073  throw runtime_exception("Sections are not allowed when copy involves multiple mipmap levels", E_INVALIDARG);
4074  }
4075 
4076  if (_Src_tex_desc._Are_mipmap_levels_overlapping(&_Dst_tex_desc))
4077  {
4078  throw runtime_exception("The source and destination are overlapping areas on the same texture", E_INVALIDARG);
4079  }
4080 
4081  _Texture* _Src_tex = _Get_texture(_Src);
4082  _Texture* _Dst_tex = _Get_texture(_Dst);
4083 
4084  // Formats must be identical for non-adopted textures. Textures created through D3D interop are not subject to this test
4085  // to allow copy between related, but not identical, formats. Attempting to copy between unrelated formats through interop
4086  // will result in exceptions in debug mode and undefined behavior in release mode.
4087  if (!_Src_tex->_Is_adopted() && !_Dst_tex->_Is_adopted() && (_Src_tex->_Get_texture_format() != _Dst_tex->_Get_texture_format()))
4088  {
4089  throw runtime_exception("The source and destination textures are not compatible.", E_INVALIDARG);
4090  }
4091 
4092  std::array<size_t, 3> _Src_offset_arr = _Get_indices(_Src_offset);
4093  std::array<size_t, 3> _Dst_offset_arr = _Get_indices(_Dst_offset);
4094 
4095  _Event _Copy_event;
4096 
4097  unsigned int _Src_most_detailed_mipmap_level = _Src_tex_desc._Get_most_detailed_mipmap_level();
4098  unsigned int _Dst_most_detailed_mipmap_level = _Dst_tex_desc._Get_most_detailed_mipmap_level();
4099 
4100  // Copy all mipmap levels from source to destination one by one.
4101  // Note that the offsets are not allowed therefore only dimensions need to be updated for subsequent mipmap levels
4102  for (unsigned int _Mip_offset = 0; _Mip_offset < _Src_tex_desc._Get_view_mipmap_levels(); ++_Mip_offset)
4103  {
4104  std::array<size_t, 3> _Copy_extent_arr = _Get_dimensions(_Copy_extent, _Mip_offset);
4105 
4106  auto _Step_event = _Copy_async_impl(_Src_tex, _Src_offset_arr.data(), _Src_most_detailed_mipmap_level + _Mip_offset,
4107  _Dst_tex, _Dst_offset_arr.data(), _Dst_most_detailed_mipmap_level + _Mip_offset,
4108  _Copy_extent_arr.data());
4109 
4110  _Copy_event = _Copy_event._Add_event(_Step_event);
4111  }
4112 
4113  return _Copy_event;
4114 }
unsigned int _Get_texture_format() const
Definition: amprt.h:2230
std::array< size_t, 3 > _Get_dimensions(const Concurrency::extent< _Rank > &_Ext, unsigned int _Mip_offset)
Definition: amp_graphics.h:298
Definition: amprt.h:2152
bool _Is_adopted() const
Definition: amprt.h:2081
unsigned int _Get_most_detailed_mipmap_level() const __GPU
Definition: amprt.h:659
friend _Event _Copy_async_impl(const _Texture_base< _Value_type, _Rank > &_Src, const index< _Rank > &_Src_offset, const _Texture_base< _Value_type, _Rank > &_Dst, const index< _Rank > &_Dst_offset, const extent< _Rank > &_Copy_extent) __CPU_ONLY
Definition: amp_graphics.h:4054
static void _Is_valid_section(const _T2< _Rank > &_Base_extent, const _T1< _Rank > &_Section_origin, const _T2< _Rank > &_Section_extent) __CPU_ONLY
Definition: xxamp.h:1106
_AMPIMP _Event _Add_event(_Event _Ev)
Creates an event which is an ordered collection of this and _Ev
std::array< size_t, 3 > _Get_indices(const index< _Rank > &_Idx)
Definition: amp_graphics.h:329
unsigned int _Get_view_mipmap_levels() const __GPU
Definition: amprt.h:664
bool _Are_mipmap_levels_overlapping(const _Texture_descriptor *_Other) const __CPU_ONLY
Definition: amprt.h:699
_Ret_ _Texture * _Get_texture() const __CPU_ONLY
Definition: amp_graphics.h:576
Definition: amprt.h:318
const _Texture_descriptor & _Get_texture_descriptor(const _Texture_type &_Tex) __GPU
Definition: xxamp.h:1094
template<typename _Value_type, int _Rank>
template<typename _T >
_Ret_ _Texture* Concurrency::details::_Get_texture ( const _T &  _Tex)
friend
template<typename _Value_type, int _Rank>
template<typename _T >
const _Texture_descriptor& Concurrency::details::_Get_texture_descriptor ( const _T &  _Tex)
friend

Member Data Documentation

template<typename _Value_type, int _Rank>
Concurrency::extent<_Rank> Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_M_extent
protected
template<typename _Value_type, int _Rank>
_Texture_descriptor Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::_M_texture_descriptor
protected
template<typename _Value_type, int _Rank>
const int Concurrency::graphics::details::_Texture_base< _Value_type, _Rank >::rank = _Rank
static

The documentation for this class was generated from the following file: