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;