Fix 64 to 32 bit narrowing in dawn/common
Bug: dawn:1377 Change-Id: I25981cf18dc768cc0b6d4f6a6463b4dc169ca6c1 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/87672 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Austin Eng <enga@chromium.org> Reviewed-by: Loko Kung <lokokung@google.com>
This commit is contained in:
parent
71b5ea803d
commit
b0b53ba403
|
@ -204,6 +204,7 @@ if (is_win || is_linux || is_chromeos || is_mac || is_fuchsia || is_android) {
|
||||||
"Math.h",
|
"Math.h",
|
||||||
"NSRef.h",
|
"NSRef.h",
|
||||||
"NonCopyable.h",
|
"NonCopyable.h",
|
||||||
|
"Numeric.h",
|
||||||
"PlacementAllocated.h",
|
"PlacementAllocated.h",
|
||||||
"Platform.h",
|
"Platform.h",
|
||||||
"Preprocessor.h",
|
"Preprocessor.h",
|
||||||
|
|
|
@ -45,6 +45,7 @@ target_sources(dawn_common PRIVATE
|
||||||
"Math.h"
|
"Math.h"
|
||||||
"NSRef.h"
|
"NSRef.h"
|
||||||
"NonCopyable.h"
|
"NonCopyable.h"
|
||||||
|
"Numeric.h"
|
||||||
"PlacementAllocated.h"
|
"PlacementAllocated.h"
|
||||||
"Platform.h"
|
"Platform.h"
|
||||||
"Preprocessor.h"
|
"Preprocessor.h"
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
// Copyright 2022 The Dawn Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#ifndef SRC_DAWN_COMMON_NUMERIC_H_
|
||||||
|
#define SRC_DAWN_COMMON_NUMERIC_H_
|
||||||
|
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
|
namespace detail {
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr uint32_t u32_sizeof() {
|
||||||
|
static_assert(sizeof(T) <= std::numeric_limits<uint32_t>::max());
|
||||||
|
return uint32_t(sizeof(T));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr uint32_t u32_alignof() {
|
||||||
|
static_assert(alignof(T) <= std::numeric_limits<uint32_t>::max());
|
||||||
|
return uint32_t(alignof(T));
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr uint32_t u32_sizeof = detail::u32_sizeof<T>();
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr uint32_t u32_alignof = detail::u32_alignof<T>();
|
||||||
|
|
||||||
|
#endif // SRC_DAWN_COMMON_NUMERIC_H_
|
|
@ -60,10 +60,10 @@ SlabAllocatorImpl::Index SlabAllocatorImpl::kInvalidIndex =
|
||||||
SlabAllocatorImpl::SlabAllocatorImpl(Index blocksPerSlab,
|
SlabAllocatorImpl::SlabAllocatorImpl(Index blocksPerSlab,
|
||||||
uint32_t objectSize,
|
uint32_t objectSize,
|
||||||
uint32_t objectAlignment)
|
uint32_t objectAlignment)
|
||||||
: mAllocationAlignment(std::max(static_cast<uint32_t>(alignof(Slab)), objectAlignment)),
|
: mAllocationAlignment(std::max(u32_alignof<Slab>, objectAlignment)),
|
||||||
mSlabBlocksOffset(Align(sizeof(Slab), objectAlignment)),
|
mSlabBlocksOffset(Align(u32_sizeof<Slab>, objectAlignment)),
|
||||||
mIndexLinkNodeOffset(Align(objectSize, alignof(IndexLinkNode))),
|
mIndexLinkNodeOffset(Align(objectSize, alignof(IndexLinkNode))),
|
||||||
mBlockStride(Align(mIndexLinkNodeOffset + sizeof(IndexLinkNode), objectAlignment)),
|
mBlockStride(Align(mIndexLinkNodeOffset + u32_sizeof<IndexLinkNode>, objectAlignment)),
|
||||||
mBlocksPerSlab(blocksPerSlab),
|
mBlocksPerSlab(blocksPerSlab),
|
||||||
mTotalAllocationSize(
|
mTotalAllocationSize(
|
||||||
// required allocation size
|
// required allocation size
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#include "dawn/common/Numeric.h"
|
||||||
#include "dawn/common/PlacementAllocated.h"
|
#include "dawn/common/PlacementAllocated.h"
|
||||||
|
|
||||||
// The SlabAllocator allocates objects out of one or more fixed-size contiguous "slabs" of memory.
|
// The SlabAllocator allocates objects out of one or more fixed-size contiguous "slabs" of memory.
|
||||||
|
@ -165,8 +166,8 @@ template <typename T>
|
||||||
class SlabAllocator : public SlabAllocatorImpl {
|
class SlabAllocator : public SlabAllocatorImpl {
|
||||||
public:
|
public:
|
||||||
SlabAllocator(size_t totalObjectBytes,
|
SlabAllocator(size_t totalObjectBytes,
|
||||||
uint32_t objectSize = sizeof(T),
|
uint32_t objectSize = u32_sizeof<T>,
|
||||||
uint32_t objectAlignment = alignof(T))
|
uint32_t objectAlignment = u32_alignof<T>)
|
||||||
: SlabAllocatorImpl(totalObjectBytes / objectSize, objectSize, objectAlignment) {
|
: SlabAllocatorImpl(totalObjectBytes / objectSize, objectSize, objectAlignment) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "dawn/common/BitSetIterator.h"
|
#include "dawn/common/BitSetIterator.h"
|
||||||
#include "dawn/native/d3d12/BindGroupD3D12.h"
|
|
||||||
#include "dawn/native/d3d12/DeviceD3D12.h"
|
#include "dawn/native/d3d12/DeviceD3D12.h"
|
||||||
#include "dawn/native/d3d12/SamplerHeapCacheD3D12.h"
|
#include "dawn/native/d3d12/SamplerHeapCacheD3D12.h"
|
||||||
#include "dawn/native/d3d12/StagingDescriptorAllocatorD3D12.h"
|
#include "dawn/native/d3d12/StagingDescriptorAllocatorD3D12.h"
|
||||||
|
|
|
@ -21,11 +21,11 @@
|
||||||
|
|
||||||
#include "dawn/common/SlabAllocator.h"
|
#include "dawn/common/SlabAllocator.h"
|
||||||
#include "dawn/common/ityp_stack_vec.h"
|
#include "dawn/common/ityp_stack_vec.h"
|
||||||
|
#include "dawn/native/d3d12/BindGroupD3D12.h"
|
||||||
#include "dawn/native/d3d12/d3d12_platform.h"
|
#include "dawn/native/d3d12/d3d12_platform.h"
|
||||||
|
|
||||||
namespace dawn::native::d3d12 {
|
namespace dawn::native::d3d12 {
|
||||||
|
|
||||||
class BindGroup;
|
|
||||||
class CPUDescriptorHeapAllocation;
|
class CPUDescriptorHeapAllocation;
|
||||||
class Device;
|
class Device;
|
||||||
class StagingDescriptorAllocator;
|
class StagingDescriptorAllocator;
|
||||||
|
|
|
@ -14,8 +14,6 @@
|
||||||
|
|
||||||
#include "dawn/native/opengl/BindGroupLayoutGL.h"
|
#include "dawn/native/opengl/BindGroupLayoutGL.h"
|
||||||
|
|
||||||
#include "dawn/native/opengl/BindGroupGL.h"
|
|
||||||
|
|
||||||
namespace dawn::native::opengl {
|
namespace dawn::native::opengl {
|
||||||
|
|
||||||
BindGroupLayout::BindGroupLayout(DeviceBase* device,
|
BindGroupLayout::BindGroupLayout(DeviceBase* device,
|
||||||
|
|
|
@ -17,10 +17,10 @@
|
||||||
|
|
||||||
#include "dawn/common/SlabAllocator.h"
|
#include "dawn/common/SlabAllocator.h"
|
||||||
#include "dawn/native/BindGroupLayout.h"
|
#include "dawn/native/BindGroupLayout.h"
|
||||||
|
#include "dawn/native/opengl/BindGroupGL.h"
|
||||||
|
|
||||||
namespace dawn::native::opengl {
|
namespace dawn::native::opengl {
|
||||||
|
|
||||||
class BindGroup;
|
|
||||||
class Device;
|
class Device;
|
||||||
|
|
||||||
class BindGroupLayout final : public BindGroupLayoutBase {
|
class BindGroupLayout final : public BindGroupLayoutBase {
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
#include "dawn/common/BitSetIterator.h"
|
#include "dawn/common/BitSetIterator.h"
|
||||||
#include "dawn/common/ityp_vector.h"
|
#include "dawn/common/ityp_vector.h"
|
||||||
#include "dawn/native/CacheKey.h"
|
#include "dawn/native/CacheKey.h"
|
||||||
#include "dawn/native/vulkan/BindGroupVk.h"
|
|
||||||
#include "dawn/native/vulkan/DescriptorSetAllocator.h"
|
#include "dawn/native/vulkan/DescriptorSetAllocator.h"
|
||||||
#include "dawn/native/vulkan/DeviceVk.h"
|
#include "dawn/native/vulkan/DeviceVk.h"
|
||||||
#include "dawn/native/vulkan/FencedDeleter.h"
|
#include "dawn/native/vulkan/FencedDeleter.h"
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
#include "dawn/common/SlabAllocator.h"
|
#include "dawn/common/SlabAllocator.h"
|
||||||
#include "dawn/common/vulkan_platform.h"
|
#include "dawn/common/vulkan_platform.h"
|
||||||
|
#include "dawn/native/vulkan/BindGroupVk.h"
|
||||||
|
|
||||||
namespace dawn::native {
|
namespace dawn::native {
|
||||||
class CacheKey;
|
class CacheKey;
|
||||||
|
@ -28,7 +29,6 @@ namespace dawn::native {
|
||||||
|
|
||||||
namespace dawn::native::vulkan {
|
namespace dawn::native::vulkan {
|
||||||
|
|
||||||
class BindGroup;
|
|
||||||
struct DescriptorSetAllocation;
|
struct DescriptorSetAllocation;
|
||||||
class DescriptorSetAllocator;
|
class DescriptorSetAllocator;
|
||||||
class Device;
|
class Device;
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
|
|
||||||
#include "dawn/common/PlacementAllocated.h"
|
#include "dawn/common/PlacementAllocated.h"
|
||||||
#include "dawn/common/vulkan_platform.h"
|
#include "dawn/common/vulkan_platform.h"
|
||||||
#include "dawn/native/vulkan/BindGroupLayoutVk.h"
|
|
||||||
#include "dawn/native/vulkan/DescriptorSetAllocation.h"
|
#include "dawn/native/vulkan/DescriptorSetAllocation.h"
|
||||||
|
|
||||||
namespace dawn::native::vulkan {
|
namespace dawn::native::vulkan {
|
||||||
|
|
Loading…
Reference in New Issue