@@ -21,8 +21,10 @@ class GPUTexture : public NativeObject<GPUTexture> {
2121public:
2222 static constexpr const char *CLASS_NAME = " GPUTexture" ;
2323
24- explicit GPUTexture (wgpu::Texture instance, std::string label)
25- : NativeObject(CLASS_NAME), _instance(instance), _label(label) {}
24+ explicit GPUTexture (wgpu::Texture instance, std::string label,
25+ bool reportsMemoryPressure = true )
26+ : NativeObject(CLASS_NAME), _instance(instance), _label(label),
27+ _reportsMemoryPressure(reportsMemoryPressure) {}
2628
2729public:
2830 std::string getBrand () { return CLASS_NAME; }
@@ -68,6 +70,9 @@ class GPUTexture : public NativeObject<GPUTexture> {
6870 inline const wgpu::Texture get () { return _instance; }
6971
7072 size_t getMemoryPressure () override {
73+ if (!_reportsMemoryPressure) {
74+ return sizeof (GPUTexture);
75+ }
7176 // Calculate approximate memory usage based on texture properties
7277 uint32_t width = getWidth ();
7378 uint32_t height = getHeight ();
@@ -85,6 +90,7 @@ class GPUTexture : public NativeObject<GPUTexture> {
8590 case wgpu::TextureFormat::R8Snorm:
8691 case wgpu::TextureFormat::R8Uint:
8792 case wgpu::TextureFormat::R8Sint:
93+ case wgpu::TextureFormat::Stencil8:
8894 bytesPerPixel = 1 ;
8995 break ;
9096 case wgpu::TextureFormat::R16Uint:
@@ -94,6 +100,7 @@ class GPUTexture : public NativeObject<GPUTexture> {
94100 case wgpu::TextureFormat::RG8Snorm:
95101 case wgpu::TextureFormat::RG8Uint:
96102 case wgpu::TextureFormat::RG8Sint:
103+ case wgpu::TextureFormat::Depth16Unorm:
97104 bytesPerPixel = 2 ;
98105 break ;
99106 case wgpu::TextureFormat::RGBA8Unorm:
@@ -110,6 +117,9 @@ class GPUTexture : public NativeObject<GPUTexture> {
110117 case wgpu::TextureFormat::RG16Uint:
111118 case wgpu::TextureFormat::RG16Sint:
112119 case wgpu::TextureFormat::RG16Float:
120+ case wgpu::TextureFormat::Depth24Plus:
121+ case wgpu::TextureFormat::Depth24PlusStencil8:
122+ case wgpu::TextureFormat::Depth32Float:
113123 bytesPerPixel = 4 ;
114124 break ;
115125 case wgpu::TextureFormat::RG32Float:
@@ -118,6 +128,7 @@ class GPUTexture : public NativeObject<GPUTexture> {
118128 case wgpu::TextureFormat::RGBA16Uint:
119129 case wgpu::TextureFormat::RGBA16Sint:
120130 case wgpu::TextureFormat::RGBA16Float:
131+ case wgpu::TextureFormat::Depth32FloatStencil8:
121132 bytesPerPixel = 8 ;
122133 break ;
123134 case wgpu::TextureFormat::RGBA32Float:
@@ -145,6 +156,7 @@ class GPUTexture : public NativeObject<GPUTexture> {
145156private:
146157 wgpu::Texture _instance;
147158 std::string _label;
159+ bool _reportsMemoryPressure = true ;
148160};
149161
150162} // namespace rnwgpu
0 commit comments