Don't store unnessary SubresourceRange members in TextureBase

This is preparatory change for a subsequent CL that will deprecate
TextureDescriptor::arrayLayerCount in favor of size.depth.

Bug: dawn:157
Bug: dawn:22
Change-Id: Id64556dc81056fbe7751073ffe9872026c145e77
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/23102
Reviewed-by: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn_native/Texture.cpp b/src/dawn_native/Texture.cpp
index 11dbae3..3a39ffa 100644
--- a/src/dawn_native/Texture.cpp
+++ b/src/dawn_native/Texture.cpp
@@ -337,6 +337,12 @@
         }
     }
 
+    // static
+    SubresourceRange SubresourceRange::SingleSubresource(uint32_t baseMipLevel,
+                                                         uint32_t baseArrayLayer) {
+        return {baseMipLevel, 1, baseArrayLayer, 1};
+    }
+
     // TextureBase
 
     TextureBase::TextureBase(DeviceBase* device,
@@ -346,7 +352,8 @@
           mDimension(descriptor->dimension),
           mFormat(device->GetValidInternalFormat(descriptor->format)),
           mSize(descriptor->size),
-          mRange({0, descriptor->mipLevelCount, 0, descriptor->arrayLayerCount}),
+          mArrayLayerCount(descriptor->arrayLayerCount),
+          mMipLevelCount(descriptor->mipLevelCount),
           mSampleCount(descriptor->sampleCount),
           mUsage(descriptor->usage),
           mState(state) {
@@ -387,15 +394,15 @@
     }
     uint32_t TextureBase::GetArrayLayers() const {
         ASSERT(!IsError());
-        return mRange.layerCount;
+        return mArrayLayerCount;
     }
     uint32_t TextureBase::GetNumMipLevels() const {
         ASSERT(!IsError());
-        return mRange.levelCount;
+        return mMipLevelCount;
     }
-    const SubresourceRange& TextureBase::GetAllSubresources() const {
+    SubresourceRange TextureBase::GetAllSubresources() const {
         ASSERT(!IsError());
-        return mRange;
+        return {0, mMipLevelCount, 0, mArrayLayerCount};
     }
     uint32_t TextureBase::GetSampleCount() const {
         ASSERT(!IsError());
@@ -403,7 +410,7 @@
     }
     uint32_t TextureBase::GetSubresourceCount() const {
         ASSERT(!IsError());
-        return mRange.levelCount * mRange.layerCount;
+        return mMipLevelCount * mArrayLayerCount;
     }
     wgpu::TextureUsage TextureBase::GetUsage() const {
         ASSERT(!IsError());
diff --git a/src/dawn_native/Texture.h b/src/dawn_native/Texture.h
index 4765c1d..964a1ac 100644
--- a/src/dawn_native/Texture.h
+++ b/src/dawn_native/Texture.h
@@ -47,9 +47,7 @@
         uint32_t baseArrayLayer;
         uint32_t layerCount;
 
-        static SubresourceRange SingleSubresource(uint32_t baseMipLevel, uint32_t baseArrayLayer) {
-            return {baseMipLevel, 1, baseArrayLayer, 1};
-        }
+        static SubresourceRange SingleSubresource(uint32_t baseMipLevel, uint32_t baseArrayLayer);
     };
 
     class TextureBase : public ObjectBase {
@@ -65,7 +63,7 @@
         const Extent3D& GetSize() const;
         uint32_t GetArrayLayers() const;
         uint32_t GetNumMipLevels() const;
-        const SubresourceRange& GetAllSubresources() const;
+        SubresourceRange GetAllSubresources() const;
         uint32_t GetSampleCount() const;
         uint32_t GetSubresourceCount() const;
         wgpu::TextureUsage GetUsage() const;
@@ -102,7 +100,8 @@
         // TODO(cwallez@chromium.org): This should be deduplicated in the Device
         const Format& mFormat;
         Extent3D mSize;
-        SubresourceRange mRange;
+        uint32_t mArrayLayerCount;
+        uint32_t mMipLevelCount;
         uint32_t mSampleCount;
         wgpu::TextureUsage mUsage = wgpu::TextureUsage::None;
         TextureState mState;