mirror of
https://github.com/microsoft/DirectXTex.git
synced 2025-07-09 11:40:14 +02:00
CodeQL recommendations (#580)
This commit is contained in:
parent
cfd5f27126
commit
3e8137e481
@ -32,7 +32,9 @@ namespace
|
||||
const uint8_t* sptr = xbox.GetPointer();
|
||||
const uint8_t* endPtr = sptr + layout.SizeBytes;
|
||||
|
||||
for (uint32_t item = 0; item < nimages; ++item)
|
||||
assert((nimages > 0) && (nimages <= UINT32_MAX));
|
||||
|
||||
for (size_t item = 0; item < nimages; ++item)
|
||||
{
|
||||
const Image* img = result[item];
|
||||
if (!img || !img->pixels)
|
||||
@ -49,9 +51,9 @@ namespace
|
||||
{
|
||||
#if defined(_GAMING_XBOX_SCARLETT) || defined(_USE_SCARLETT)
|
||||
const UINT64 element = (packed) ? (x >> 1) : x;
|
||||
const size_t offset = computer->GetTexelElementOffsetBytes(0, level, element, 0, item, 0, nullptr);
|
||||
const size_t offset = computer->GetTexelElementOffsetBytes(0, static_cast<uint32_t>(level), element, 0, static_cast<uint32_t>(item), 0, nullptr);
|
||||
#else
|
||||
const size_t offset = computer->GetTexelElementOffsetBytes(0, level, x, 0, item, 0);
|
||||
const size_t offset = computer->GetTexelElementOffsetBytes(0, static_cast<uint32_t>(level), x, 0, static_cast<uint32_t>(item), 0);
|
||||
#endif
|
||||
if (offset == size_t(-1))
|
||||
return E_FAIL;
|
||||
@ -83,7 +85,7 @@ namespace
|
||||
_In_reads_(nimages) const Image** result,
|
||||
size_t nimages)
|
||||
{
|
||||
if (!nimages)
|
||||
if (!nimages || nimages > UINT32_MAX)
|
||||
return E_INVALIDARG;
|
||||
|
||||
if (!xbox.GetPointer() || !computer || !result || !result[0])
|
||||
@ -150,7 +152,7 @@ namespace
|
||||
return E_FAIL;
|
||||
|
||||
// Perform detiling
|
||||
for (uint32_t item = 0; item < nimages; ++item)
|
||||
for (size_t item = 0; item < nimages; ++item)
|
||||
{
|
||||
const Image* img = result[item];
|
||||
if (!img || !img->pixels)
|
||||
@ -164,9 +166,9 @@ namespace
|
||||
for (size_t x = 0; x < img->width; ++x)
|
||||
{
|
||||
#if defined(_GAMING_XBOX_SCARLETT) || defined(_USE_SCARLETT)
|
||||
size_t offset = computer->GetTexelElementOffsetBytes(0, level, x, 0, item, 0, nullptr);
|
||||
size_t offset = computer->GetTexelElementOffsetBytes(0, level, x, 0, static_cast<uint32_t>(item), 0, nullptr);
|
||||
#else
|
||||
size_t offset = computer->GetTexelElementOffsetBytes(0, level, x, 0, item, 0);
|
||||
size_t offset = computer->GetTexelElementOffsetBytes(0, level, x, 0, static_cast<uint32_t>(item), 0);
|
||||
#endif
|
||||
if (offset == size_t(-1))
|
||||
return E_FAIL;
|
||||
@ -199,7 +201,7 @@ namespace
|
||||
_In_reads_(nimages) const Image** result,
|
||||
size_t nimages)
|
||||
{
|
||||
if (!nimages)
|
||||
if (!nimages || nimages > UINT32_MAX)
|
||||
return E_INVALIDARG;
|
||||
|
||||
if (!xbox.GetPointer() || !computer || !result || !result[0])
|
||||
@ -210,7 +212,7 @@ namespace
|
||||
uint8_t* baseAddr = xbox.GetPointer();
|
||||
const auto& metadata = xbox.GetMetadata();
|
||||
|
||||
for (uint32_t item = 0; item < nimages; ++item)
|
||||
for (size_t item = 0; item < nimages; ++item)
|
||||
{
|
||||
const Image* img = result[item];
|
||||
if (!img || !img->pixels)
|
||||
@ -314,6 +316,11 @@ HRESULT Xbox::Detile(
|
||||
{
|
||||
case TEX_DIMENSION_TEXTURE1D:
|
||||
{
|
||||
if (metadata.width > D3D11_REQ_TEXTURE1D_U_DIMENSION
|
||||
|| metadata.mipLevels > D3D11_REQ_MIP_LEVELS
|
||||
|| metadata.arraySize > D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION)
|
||||
return E_INVALIDARG;
|
||||
|
||||
XG_TEXTURE1D_DESC desc = {};
|
||||
desc.Width = static_cast<UINT>(metadata.width);
|
||||
desc.MipLevels = static_cast<UINT>(metadata.mipLevels);
|
||||
@ -348,13 +355,13 @@ HRESULT Xbox::Detile(
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
for (uint32_t level = 0; level < metadata.mipLevels; ++level)
|
||||
for (size_t level = 0; level < metadata.mipLevels; ++level)
|
||||
{
|
||||
if (metadata.arraySize > 1)
|
||||
{
|
||||
std::vector<const Image*> images;
|
||||
images.reserve(metadata.arraySize);
|
||||
for (uint32_t item = 0; item < metadata.arraySize; ++item)
|
||||
for (size_t item = 0; item < metadata.arraySize; ++item)
|
||||
{
|
||||
const Image* img = image.GetImage(level, item, 0);
|
||||
if (!img)
|
||||
@ -366,7 +373,7 @@ HRESULT Xbox::Detile(
|
||||
images.push_back(img);
|
||||
}
|
||||
|
||||
hr = Detile1D(xbox, level, computer.Get(), layout, &images[0], images.size());
|
||||
hr = Detile1D(xbox, static_cast<uint32_t>(level), computer.Get(), layout, &images[0], images.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -377,7 +384,7 @@ HRESULT Xbox::Detile(
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
hr = Detile1D(xbox, level, computer.Get(), layout, &img, 1);
|
||||
hr = Detile1D(xbox, static_cast<uint32_t>(level), computer.Get(), layout, &img, 1);
|
||||
}
|
||||
|
||||
if (FAILED(hr))
|
||||
@ -391,6 +398,12 @@ HRESULT Xbox::Detile(
|
||||
|
||||
case TEX_DIMENSION_TEXTURE2D:
|
||||
{
|
||||
if (metadata.width > D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION
|
||||
|| metadata.height > D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION
|
||||
|| metadata.mipLevels > D3D11_REQ_MIP_LEVELS
|
||||
|| metadata.arraySize > D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION)
|
||||
return E_INVALIDARG;
|
||||
|
||||
XG_TEXTURE2D_DESC desc = {};
|
||||
desc.Width = static_cast<UINT>(metadata.width);
|
||||
desc.Height = static_cast<UINT>(metadata.height);
|
||||
@ -427,13 +440,13 @@ HRESULT Xbox::Detile(
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
for (uint32_t level = 0; level < metadata.mipLevels; ++level)
|
||||
for (size_t level = 0; level < metadata.mipLevels; ++level)
|
||||
{
|
||||
if (metadata.arraySize > 1)
|
||||
{
|
||||
std::vector<const Image*> images;
|
||||
images.reserve(metadata.arraySize);
|
||||
for (uint32_t item = 0; item < metadata.arraySize; ++item)
|
||||
for (size_t item = 0; item < metadata.arraySize; ++item)
|
||||
{
|
||||
const Image* img = image.GetImage(level, item, 0);
|
||||
if (!img)
|
||||
@ -445,7 +458,7 @@ HRESULT Xbox::Detile(
|
||||
images.push_back(img);
|
||||
}
|
||||
|
||||
hr = Detile2D(xbox, level, computer.Get(), &images[0], images.size());
|
||||
hr = Detile2D(xbox, static_cast<uint32_t>(level), computer.Get(), &images[0], images.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -456,7 +469,7 @@ HRESULT Xbox::Detile(
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
hr = Detile2D(xbox, level, computer.Get(), &img, 1);
|
||||
hr = Detile2D(xbox, static_cast<uint32_t>(level), computer.Get(), &img, 1);
|
||||
}
|
||||
|
||||
if (FAILED(hr))
|
||||
@ -470,6 +483,13 @@ HRESULT Xbox::Detile(
|
||||
|
||||
case TEX_DIMENSION_TEXTURE3D:
|
||||
{
|
||||
if (metadata.width > D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION
|
||||
|| metadata.height > D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION
|
||||
|| metadata.depth > D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION
|
||||
|| metadata.mipLevels > D3D11_REQ_MIP_LEVELS
|
||||
|| metadata.arraySize != 1)
|
||||
return E_INVALIDARG;
|
||||
|
||||
XG_TEXTURE3D_DESC desc = {};
|
||||
desc.Width = static_cast<UINT>(metadata.width);
|
||||
desc.Height = static_cast<UINT>(metadata.height);
|
||||
@ -504,10 +524,10 @@ HRESULT Xbox::Detile(
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
uint32_t d = static_cast<uint32_t>(metadata.depth);
|
||||
auto d = static_cast<uint32_t>(metadata.depth);
|
||||
|
||||
size_t index = 0;
|
||||
for (uint32_t level = 0; level < metadata.mipLevels; ++level)
|
||||
for (size_t level = 0; level < metadata.mipLevels; ++level)
|
||||
{
|
||||
if ((index + d) > image.GetImageCount())
|
||||
{
|
||||
@ -516,7 +536,7 @@ HRESULT Xbox::Detile(
|
||||
}
|
||||
|
||||
// Relies on the fact that slices are contiguous
|
||||
hr = Detile3D(xbox, level, computer.Get(), image.GetImages()[index]);
|
||||
hr = Detile3D(xbox, static_cast<uint32_t>(level), computer.Get(), image.GetImages()[index]);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
image.Release();
|
||||
|
@ -34,7 +34,7 @@ namespace
|
||||
uint8_t* dptr = xbox.GetPointer();
|
||||
const uint8_t* endPtr = dptr + layout.SizeBytes;
|
||||
|
||||
for (uint32_t item = 0; item < nimages; ++item)
|
||||
for (size_t item = 0; item < nimages; ++item)
|
||||
{
|
||||
const Image* img = images[item];
|
||||
|
||||
@ -52,9 +52,9 @@ namespace
|
||||
{
|
||||
#if defined(_GAMING_XBOX_SCARLETT) || defined(_USE_SCARLETT)
|
||||
UINT64 element = (packed) ? (x >> 1) : x;
|
||||
size_t offset = computer->GetTexelElementOffsetBytes(0, level, element, 0, item, 0, nullptr);
|
||||
size_t offset = computer->GetTexelElementOffsetBytes(0, level, element, 0, static_cast<uint32_t>(item), 0, nullptr);
|
||||
#else
|
||||
size_t offset = computer->GetTexelElementOffsetBytes(0, level, x, 0, item, 0);
|
||||
size_t offset = computer->GetTexelElementOffsetBytes(0, level, x, 0, static_cast<uint32_t>(item), 0);
|
||||
#endif
|
||||
if (offset == size_t(-1))
|
||||
return E_FAIL;
|
||||
@ -169,7 +169,7 @@ namespace
|
||||
const XG_RESOURCE_LAYOUT& layout,
|
||||
const XboxImage& xbox)
|
||||
{
|
||||
if (!nimages)
|
||||
if (!nimages || nimages > UINT32_MAX)
|
||||
return E_INVALIDARG;
|
||||
|
||||
if (!images || !images[0] || !computer || !xbox.GetPointer())
|
||||
@ -230,7 +230,7 @@ namespace
|
||||
memset(tiled, 0, sizeof(XMVECTOR) * tiledPixels);
|
||||
|
||||
// Perform tiling
|
||||
for (uint32_t item = 0; item < nimages; ++item)
|
||||
for (size_t item = 0; item < nimages; ++item)
|
||||
{
|
||||
const Image* img = images[item];
|
||||
|
||||
@ -248,9 +248,9 @@ namespace
|
||||
for (size_t x = 0; x < img->width; ++x)
|
||||
{
|
||||
#if defined(_GAMING_XBOX_SCARLETT) || defined(_USE_SCARLETT)
|
||||
size_t offset = computer->GetTexelElementOffsetBytes(0, level, x, 0, item, 0, nullptr);
|
||||
size_t offset = computer->GetTexelElementOffsetBytes(0, level, x, 0, static_cast<uint32_t>(item), 0, nullptr);
|
||||
#else
|
||||
size_t offset = computer->GetTexelElementOffsetBytes(0, level, x, 0, item, 0);
|
||||
size_t offset = computer->GetTexelElementOffsetBytes(0, level, x, 0, static_cast<uint32_t>(item), 0);
|
||||
#endif
|
||||
if (offset == size_t(-1))
|
||||
return E_FAIL;
|
||||
@ -285,7 +285,7 @@ namespace
|
||||
_In_ XGTextureAddressComputer* computer,
|
||||
const XboxImage& xbox)
|
||||
{
|
||||
if (!nimages)
|
||||
if (!nimages || nimages > UINT32_MAX)
|
||||
return E_INVALIDARG;
|
||||
|
||||
if (!images || !images[0] || !computer || !xbox.GetPointer())
|
||||
@ -294,7 +294,7 @@ namespace
|
||||
uint8_t* baseAddr = xbox.GetPointer();
|
||||
const auto& metadata = xbox.GetMetadata();
|
||||
|
||||
for (uint32_t item = 0; item < nimages; ++item)
|
||||
for (size_t item = 0; item < nimages; ++item)
|
||||
{
|
||||
const Image* img = images[item];
|
||||
|
||||
@ -444,15 +444,39 @@ HRESULT Xbox::Tile(
|
||||
XboxImage& xbox,
|
||||
XboxTileMode mode)
|
||||
{
|
||||
if (!srcImages
|
||||
|| !nimages
|
||||
|| metadata.width > D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION
|
||||
|| metadata.height > D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION
|
||||
|| metadata.depth > D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION
|
||||
|| metadata.arraySize > D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION
|
||||
|| metadata.mipLevels > D3D11_REQ_MIP_LEVELS)
|
||||
if (!srcImages || !nimages || nimages > UINT32_MAX)
|
||||
return E_INVALIDARG;
|
||||
|
||||
switch (metadata.dimension)
|
||||
{
|
||||
case TEX_DIMENSION_TEXTURE1D:
|
||||
if (metadata.width > D3D11_REQ_TEXTURE1D_U_DIMENSION
|
||||
|| metadata.mipLevels > D3D11_REQ_MIP_LEVELS
|
||||
|| metadata.arraySize > D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION)
|
||||
return E_INVALIDARG;
|
||||
break;
|
||||
|
||||
case TEX_DIMENSION_TEXTURE2D:
|
||||
if (metadata.width > D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION
|
||||
|| metadata.height > D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION
|
||||
|| metadata.mipLevels > D3D11_REQ_MIP_LEVELS
|
||||
|| metadata.arraySize > D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION)
|
||||
return E_INVALIDARG;
|
||||
break;
|
||||
|
||||
case TEX_DIMENSION_TEXTURE3D:
|
||||
if (metadata.width > D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION
|
||||
|| metadata.height > D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION
|
||||
|| metadata.depth > D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION
|
||||
|| metadata.mipLevels > D3D11_REQ_MIP_LEVELS
|
||||
|| metadata.arraySize != 1)
|
||||
return E_INVALIDARG;
|
||||
break;
|
||||
|
||||
default:
|
||||
return HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
xbox.Release();
|
||||
|
||||
if (metadata.format == DXGI_FORMAT_R1_UNORM
|
||||
@ -533,13 +557,13 @@ HRESULT Xbox::Tile(
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
for (uint32_t level = 0; level < metadata.mipLevels; ++level)
|
||||
for (size_t level = 0; level < metadata.mipLevels; ++level)
|
||||
{
|
||||
if (metadata.arraySize > 1)
|
||||
{
|
||||
std::vector<const Image*> images;
|
||||
images.reserve(metadata.arraySize);
|
||||
for (uint32_t item = 0; item < metadata.arraySize; ++item)
|
||||
for (size_t item = 0; item < metadata.arraySize; ++item)
|
||||
{
|
||||
const size_t index = metadata.ComputeIndex(level, item, 0);
|
||||
if (index >= nimages)
|
||||
@ -551,7 +575,7 @@ HRESULT Xbox::Tile(
|
||||
images.push_back(&srcImages[index]);
|
||||
}
|
||||
|
||||
hr = Tile1D(&images[0], images.size(), level, computer.Get(), layout, xbox);
|
||||
hr = Tile1D(&images[0], images.size(), static_cast<uint32_t>(level), computer.Get(), layout, xbox);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -563,7 +587,7 @@ HRESULT Xbox::Tile(
|
||||
}
|
||||
|
||||
const Image* images = &srcImages[index];
|
||||
hr = Tile1D(&images, 1, level, computer.Get(), layout, xbox);
|
||||
hr = Tile1D(&images, 1, static_cast<uint32_t>(level), computer.Get(), layout, xbox);
|
||||
}
|
||||
|
||||
if (FAILED(hr))
|
||||
@ -617,13 +641,13 @@ HRESULT Xbox::Tile(
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
for (uint32_t level = 0; level < metadata.mipLevels; ++level)
|
||||
for (size_t level = 0; level < metadata.mipLevels; ++level)
|
||||
{
|
||||
if (metadata.arraySize > 1)
|
||||
{
|
||||
std::vector<const Image*> images;
|
||||
images.reserve(metadata.arraySize);
|
||||
for (uint32_t item = 0; item < metadata.arraySize; ++item)
|
||||
for (size_t item = 0; item < metadata.arraySize; ++item)
|
||||
{
|
||||
const size_t index = metadata.ComputeIndex(level, item, 0);
|
||||
if (index >= nimages)
|
||||
@ -635,7 +659,7 @@ HRESULT Xbox::Tile(
|
||||
images.push_back(&srcImages[index]);
|
||||
}
|
||||
|
||||
hr = Tile2D(&images[0], images.size(), level, computer.Get(), xbox);
|
||||
hr = Tile2D(&images[0], images.size(), static_cast<uint32_t>(level), computer.Get(), xbox);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -647,7 +671,7 @@ HRESULT Xbox::Tile(
|
||||
}
|
||||
|
||||
const Image* images = &srcImages[index];
|
||||
hr = Tile2D(&images, 1, level, computer.Get(), xbox);
|
||||
hr = Tile2D(&images, 1, static_cast<uint32_t>(level), computer.Get(), xbox);
|
||||
}
|
||||
|
||||
if (FAILED(hr))
|
||||
@ -699,10 +723,10 @@ HRESULT Xbox::Tile(
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
uint32_t d = static_cast<uint32_t>(metadata.depth);
|
||||
auto d = static_cast<uint32_t>(metadata.depth);
|
||||
|
||||
size_t index = 0;
|
||||
for (uint32_t level = 0; level < metadata.mipLevels; ++level)
|
||||
for (size_t level = 0; level < metadata.mipLevels; ++level)
|
||||
{
|
||||
if ((index + d) > nimages)
|
||||
{
|
||||
@ -711,7 +735,7 @@ HRESULT Xbox::Tile(
|
||||
}
|
||||
|
||||
// Relies on the fact that slices are contiguous
|
||||
hr = Tile3D(srcImages[index], level, computer.Get(), xbox);
|
||||
hr = Tile3D(srcImages[index], static_cast<uint32_t>(level), computer.Get(), xbox);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
xbox.Release();
|
||||
|
@ -25,6 +25,7 @@ pr:
|
||||
- build/*.in
|
||||
- build/DirectXTex-GitHub-CMake-Xbox-Dev17.yml
|
||||
- DirectXTex/Shaders/CompileShaders.cmd
|
||||
- Auxiliary/*Xbox*
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
|
@ -26,6 +26,7 @@ pr:
|
||||
- build/*.cmake
|
||||
- build/SetupBWOI.*
|
||||
- DirectXTex/Shaders/CompileShaders.cmd
|
||||
- Auxiliary/*Xbox*
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
|
@ -24,6 +24,9 @@ pr:
|
||||
- build/*.cmake
|
||||
- build/*.in
|
||||
- build/DirectXTex-GitHub-WSL-11.yml
|
||||
- Auxiliary/*EXR*
|
||||
- Auxiliary/*JPEG*
|
||||
- Auxiliary/*PNG*
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
|
@ -24,6 +24,9 @@ pr:
|
||||
- build/*.cmake
|
||||
- build/*.in
|
||||
- build/DirectXTex-GitHub-WSL-13.yml
|
||||
- Auxiliary/*EXR*
|
||||
- Auxiliary/*JPEG*
|
||||
- Auxiliary/*PNG*
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
|
Loading…
x
Reference in New Issue
Block a user