23 #ifndef HIP_INCLUDE_HIP_TEXTURE_TYPES_H
24 #define HIP_INCLUDE_HIP_TEXTURE_TYPES_H
26 #include <hip/hip_common.h>
28 #if !(defined(__HIP_PLATFORM_HCC__) || defined(__HIP_PLATFORM_AMD__)) && (defined(__HIP_PLATFORM_NVCC__) || defined(__HIP_PLATFORM_NVIDIA__))
29 #include "texture_types.h"
30 #elif (defined(__HIP_PLATFORM_HCC__) || defined(__HIP_PLATFORM_AMD__)) && !(defined(__HIP_PLATFORM_NVCC__) || defined(__HIP_PLATFORM_NVIDIA__))
36 #if !defined(__HIPCC_RTC__)
38 #include <hip/channel_descriptor.h>
39 #endif // !defined(__HIPCC_RTC__)
41 #include <hip/driver_types.h>
43 #define hipTextureType1D 0x01
44 #define hipTextureType2D 0x02
45 #define hipTextureType3D 0x03
46 #define hipTextureTypeCubemap 0x0C
47 #define hipTextureType1DLayered 0xF1
48 #define hipTextureType2DLayered 0xF2
49 #define hipTextureTypeCubemapLayered 0xFC
54 #define HIP_IMAGE_OBJECT_SIZE_DWORD 12
55 #define HIP_SAMPLER_OBJECT_SIZE_DWORD 8
56 #define HIP_SAMPLER_OBJECT_OFFSET_DWORD HIP_IMAGE_OBJECT_SIZE_DWORD
57 #define HIP_TEXTURE_OBJECT_SIZE_DWORD (HIP_IMAGE_OBJECT_SIZE_DWORD + HIP_SAMPLER_OBJECT_SIZE_DWORD)
63 typedef struct __hip_texture* hipTextureObject_t;
68 enum hipTextureAddressMode {
69 hipAddressModeWrap = 0,
70 hipAddressModeClamp = 1,
71 hipAddressModeMirror = 2,
72 hipAddressModeBorder = 3
78 enum hipTextureFilterMode { hipFilterModePoint = 0, hipFilterModeLinear = 1 };
83 enum hipTextureReadMode { hipReadModeElementType = 0, hipReadModeNormalizedFloat = 1 };
90 enum hipTextureReadMode readMode;
91 enum hipTextureFilterMode filterMode;
92 enum hipTextureAddressMode addressMode[3];
95 unsigned int maxAnisotropy;
96 enum hipTextureFilterMode mipmapFilterMode;
97 float mipmapLevelBias;
98 float minMipmapLevelClamp;
99 float maxMipmapLevelClamp;
101 hipTextureObject_t textureObject;
103 enum hipArray_Format format;
110 enum hipTextureAddressMode addressMode[3];
111 enum hipTextureFilterMode filterMode;
112 enum hipTextureReadMode readMode;
114 float borderColor[4];
115 int normalizedCoords;
116 unsigned int maxAnisotropy;
117 enum hipTextureFilterMode mipmapFilterMode;
118 float mipmapLevelBias;
119 float minMipmapLevelClamp;
120 float maxMipmapLevelClamp;
131 #define __HIP_TEXTURE_ATTRIB __attribute__((device_builtin_texture_type))
133 #define __HIP_TEXTURE_ATTRIB
138 template <
class T,
int texType = hipTextureType1D,
139 enum hipTextureReadMode mode = hipReadModeElementType>
141 texture(
int norm = 0,
enum hipTextureFilterMode fMode = hipFilterModePoint,
142 enum hipTextureAddressMode aMode = hipAddressModeClamp) {
146 addressMode[0] = aMode;
147 addressMode[1] = aMode;
148 addressMode[2] = aMode;
149 channelDesc = hipCreateChannelDesc<T>();
151 textureObject =
nullptr;
154 minMipmapLevelClamp = 0;
155 maxMipmapLevelClamp = 0;
158 texture(
int norm,
enum hipTextureFilterMode fMode,
enum hipTextureAddressMode aMode,
163 addressMode[0] = aMode;
164 addressMode[1] = aMode;
165 addressMode[2] = aMode;
168 textureObject =
nullptr;
171 minMipmapLevelClamp = 0;
172 maxMipmapLevelClamp = 0;
179 #error("Must define exactly one of __HIP_PLATFORM_AMD__ or __HIP_PLATFORM_NVIDIA__");