MVKImage::getArrayLayers() reports only layer count and excludes depth.
This commit is contained in:
parent
c08e22e097
commit
796cf7e417
@ -72,10 +72,8 @@ public:
|
|||||||
/**
|
/**
|
||||||
* Returns the number of layers at each mipmap level. For an array image type, this is
|
* Returns the number of layers at each mipmap level. For an array image type, this is
|
||||||
* the number of elements in the array. For cube image type, this is a multiple of 6.
|
* the number of elements in the array. For cube image type, this is a multiple of 6.
|
||||||
* For a 3D image type, this is the depth of the image. Formally, this value is calculated
|
|
||||||
* as the multiple of depth and array size.
|
|
||||||
*/
|
*/
|
||||||
inline uint32_t getLayerCount() { return _extent.depth * _arrayLayers; }
|
inline uint32_t getLayerCount() { return _arrayLayers; }
|
||||||
|
|
||||||
/** Returns the number of samples for each pixel of this image. */
|
/** Returns the number of samples for each pixel of this image. */
|
||||||
inline uint32_t getSampleCount() { return _samples; }
|
inline uint32_t getSampleCount() { return _samples; }
|
||||||
|
@ -454,9 +454,8 @@ MVKImage::MVKImage(MVKDevice* device, const VkImageCreateInfo* pCreateInfo) : MV
|
|||||||
_hasExpectedTexelSize = (mvkMTLPixelFormatBytesPerBlock(_mtlPixelFormat) == mvkVkFormatBytesPerBlock(pCreateInfo->format));
|
_hasExpectedTexelSize = (mvkMTLPixelFormatBytesPerBlock(_mtlPixelFormat) == mvkVkFormatBytesPerBlock(pCreateInfo->format));
|
||||||
|
|
||||||
// Calc _byteCount after _mtlTexture & _byteAlignment
|
// Calc _byteCount after _mtlTexture & _byteAlignment
|
||||||
uint32_t layerCount = getLayerCount(); // Combines depth & arrays
|
|
||||||
for (uint32_t mipLvl = 0; mipLvl < _mipLevels; mipLvl++) {
|
for (uint32_t mipLvl = 0; mipLvl < _mipLevels; mipLvl++) {
|
||||||
_byteCount += getBytesPerLayer(mipLvl) * layerCount;
|
_byteCount += getBytesPerLayer(mipLvl) * _extent.depth * _arrayLayers;
|
||||||
}
|
}
|
||||||
|
|
||||||
initSubresources(pCreateInfo);
|
initSubresources(pCreateInfo);
|
||||||
@ -488,14 +487,13 @@ void MVKImage::initSubresourceLayout(MVKImageSubresource& imgSubRez) {
|
|||||||
uint32_t currArrayLayer = subresource.arrayLayer;
|
uint32_t currArrayLayer = subresource.arrayLayer;
|
||||||
|
|
||||||
VkDeviceSize bytesPerLayerCurrLevel = getBytesPerLayer(currMipLevel);
|
VkDeviceSize bytesPerLayerCurrLevel = getBytesPerLayer(currMipLevel);
|
||||||
uint32_t layCnt = getLayerCount();
|
|
||||||
|
|
||||||
// Accumulate the byte offset for the specified sub-resource.
|
// Accumulate the byte offset for the specified sub-resource.
|
||||||
// This is the sum of the bytes consumed by all layers in all mipmap levels before the
|
// This is the sum of the bytes consumed by all layers in all mipmap levels before the
|
||||||
// desired level, plus the layers before the desired layer at the desired level.
|
// desired level, plus the layers before the desired layer at the desired level.
|
||||||
VkDeviceSize offset = 0;
|
VkDeviceSize offset = 0;
|
||||||
for (uint32_t mipLvl = 0; mipLvl < currMipLevel; mipLvl++) {
|
for (uint32_t mipLvl = 0; mipLvl < currMipLevel; mipLvl++) {
|
||||||
offset += (getBytesPerLayer(mipLvl) * layCnt);
|
offset += (getBytesPerLayer(mipLvl) * _extent.depth * _arrayLayers);
|
||||||
}
|
}
|
||||||
offset += (bytesPerLayerCurrLevel * currArrayLayer);
|
offset += (bytesPerLayerCurrLevel * currArrayLayer);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user