Triage Dawn TODOs

Change-Id: Ia010e534df1ac8a82008b38c44cfd9dc3f0b1aa6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53340
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
Austin Eng 2021-06-04 22:23:56 +00:00 committed by Dawn LUCI CQ
parent aacf2e03dc
commit ed8a8c0893
47 changed files with 111 additions and 259 deletions

View File

@ -23,7 +23,7 @@
#include <limits> #include <limits>
// This is ANGLE's BitSetIterator class with a customizable return type // This is ANGLE's BitSetIterator class with a customizable return type
// TODO(cwallez@chromium.org): it could be optimized, in particular when N <= 64 // TODO(crbug.com/dawn/306): it could be optimized, in particular when N <= 64
template <typename T> template <typename T>
T roundUp(const T value, const T alignment) { T roundUp(const T value, const T alignment) {

View File

@ -95,7 +95,7 @@ namespace gpu_info {
} }
} }
// TODO(jiawei.shao@intel.com): support other GPU vendors // TODO(crbug.com/dawn/823): support other GPU vendors
UNREACHABLE(); UNREACHABLE();
return 0; return 0;
} }

View File

@ -209,7 +209,7 @@ void SlabAllocatorImpl::Deallocate(void* ptr) {
mRecycledSlabs.Prepend(slab); mRecycledSlabs.Prepend(slab);
} }
// TODO(enga): Occasionally prune slabs if |blocksInUse == 0|. // TODO(crbug.com/dawn/825): Occasionally prune slabs if |blocksInUse == 0|.
// Doing so eagerly hurts performance. // Doing so eagerly hurts performance.
} }
@ -228,7 +228,7 @@ void SlabAllocatorImpl::GetNewSlab() {
return; return;
} }
// TODO(enga): Use aligned_alloc with C++17. // TODO(crbug.com/dawn/824): Use aligned_alloc with C++17.
char* allocation = new char[mTotalAllocationSize]; char* allocation = new char[mTotalAllocationSize];
char* alignedPtr = AlignPtr(allocation, mAllocationAlignment); char* alignedPtr = AlignPtr(allocation, mAllocationAlignment);

View File

@ -57,7 +57,7 @@ class SlabAllocatorImpl {
public: public:
// Allocations host their current index and the index of the next free block. // Allocations host their current index and the index of the next free block.
// Because this is an index, and not a byte offset, it can be much smaller than a size_t. // Because this is an index, and not a byte offset, it can be much smaller than a size_t.
// TODO(enga): Is uint8_t sufficient? // TODO(crbug.com/dawn/825): Is uint8_t sufficient?
using Index = uint16_t; using Index = uint16_t;
SlabAllocatorImpl(SlabAllocatorImpl&& rhs); SlabAllocatorImpl(SlabAllocatorImpl&& rhs);

View File

@ -85,8 +85,6 @@ namespace dawn_native {
} }
} }
// TODO(cwallez@chromium.org): This will eventually have validation that the device
// descriptor is valid and is a subset what's allowed on this adapter.
DAWN_TRY_ASSIGN(*result, CreateDeviceImpl(descriptor)); DAWN_TRY_ASSIGN(*result, CreateDeviceImpl(descriptor));
return {}; return {};
} }

View File

@ -29,7 +29,7 @@ namespace dawn_platform {
namespace dawn_native { namespace dawn_native {
// TODO(jiawei.shao@intel.com): we'll add additional things to AsyncTask in the future, like // TODO(crbug.com/dawn/826): we'll add additional things to AsyncTask in the future, like
// Cancel() and RunNow(). Cancelling helps avoid running the task's body when we are just // Cancel() and RunNow(). Cancelling helps avoid running the task's body when we are just
// shutting down the device. RunNow() could be used for more advanced scenarios, for example // shutting down the device. RunNow() could be used for more advanced scenarios, for example
// always doing ShaderModule initial compilation asynchronously, but being able to steal the // always doing ShaderModule initial compilation asynchronously, but being able to steal the

View File

@ -202,7 +202,7 @@ namespace dawn_native {
void BuddyAllocator::Deallocate(uint64_t offset) { void BuddyAllocator::Deallocate(uint64_t offset) {
BuddyBlock* curr = mRoot; BuddyBlock* curr = mRoot;
// TODO(bryan.bernhart@intel.com): Optimize de-allocation. // TODO(crbug.com/dawn/827): Optimize de-allocation.
// Passing allocationSize directly will avoid the following level-by-level search; // Passing allocationSize directly will avoid the following level-by-level search;
// however, it requires the size information to be stored outside the allocator. // however, it requires the size information to be stored outside the allocator.

View File

@ -100,7 +100,7 @@ namespace dawn_native {
// Keep track the head and tail (for faster insertion/removal). // Keep track the head and tail (for faster insertion/removal).
struct BlockList { struct BlockList {
BuddyBlock* head = nullptr; // First free block in level. BuddyBlock* head = nullptr; // First free block in level.
// TODO(bryan.bernhart@intel.com): Track the tail. // TODO(crbug.com/dawn/827): Track the tail.
}; };
BuddyBlock* mRoot = nullptr; // Used to deallocate non-free blocks. BuddyBlock* mRoot = nullptr; // Used to deallocate non-free blocks.

View File

@ -138,7 +138,7 @@ namespace dawn_native {
mUsage |= kReadOnlyStorageBuffer; mUsage |= kReadOnlyStorageBuffer;
} }
// TODO(hao.x.li@intel.com): This is just a workaround to make QueryResolve buffer pass the // TODO(crbug.com/dawn/434): This is just a workaround to make QueryResolve buffer pass the
// binding group validation when used as an internal resource. Instead the buffer made with // binding group validation when used as an internal resource. Instead the buffer made with
// QueryResolve usage would implicitly get StorageInternal usage which is only compatible // QueryResolve usage would implicitly get StorageInternal usage which is only compatible
// with StorageBufferInternal binding type in BGL, not StorageBuffer binding type. // with StorageBufferInternal binding type in BGL, not StorageBuffer binding type.
@ -213,8 +213,8 @@ namespace dawn_native {
} else { } else {
// If any of these fail, the buffer will be deleted and replaced with an // If any of these fail, the buffer will be deleted and replaced with an
// error buffer. // error buffer.
// TODO(enga): Suballocate and reuse memory from a larger staging buffer so we don't // TODO(crbug.com/dawn/828): Suballocate and reuse memory from a larger staging buffer
// create many small buffers. // so we don't create many small buffers.
DAWN_TRY_ASSIGN(mStagingBuffer, GetDevice()->CreateStagingBuffer(GetSize())); DAWN_TRY_ASSIGN(mStagingBuffer, GetDevice()->CreateStagingBuffer(GetSize()));
} }

View File

@ -104,7 +104,7 @@ namespace dawn_native {
return mBlocks[0].block == reinterpret_cast<const uint8_t*>(&mEndOfBlock); return mBlocks[0].block == reinterpret_cast<const uint8_t*>(&mEndOfBlock);
} }
// Potential TODO(cwallez@chromium.org): // Potential TODO(crbug.com/dawn/835):
// - Host the size and pointer to next block in the block itself to avoid having an allocation // - Host the size and pointer to next block in the block itself to avoid having an allocation
// in the vector // in the vector
// - Assume T's alignof is, say 64bits, static assert it, and make commandAlignment a constant // - Assume T's alignof is, say 64bits, static assert it, and make commandAlignment a constant

View File

@ -17,6 +17,7 @@
#include "common/Assert.h" #include "common/Assert.h"
#include "common/Math.h" #include "common/Math.h"
#include "common/NonCopyable.h"
#include <cstddef> #include <cstddef>
#include <cstdint> #include <cstdint>
@ -66,8 +67,7 @@ namespace dawn_native {
class CommandAllocator; class CommandAllocator;
// TODO(cwallez@chromium.org): prevent copy for both iterator and allocator class CommandIterator : public NonCopyable {
class CommandIterator {
public: public:
CommandIterator(); CommandIterator();
~CommandIterator(); ~CommandIterator();
@ -144,7 +144,7 @@ namespace dawn_native {
uint32_t mEndOfBlock = detail::kEndOfBlock; uint32_t mEndOfBlock = detail::kEndOfBlock;
}; };
class CommandAllocator { class CommandAllocator : public NonCopyable {
public: public:
CommandAllocator(); CommandAllocator();
~CommandAllocator(); ~CommandAllocator();

View File

@ -399,7 +399,7 @@ namespace dawn_native {
"set"); "set");
} }
// TODO(hao.x.li@intel.com): Validate that the queries between [firstQuery, firstQuery + // TODO(crbug.com/dawn/434): Validate that the queries between [firstQuery, firstQuery +
// queryCount - 1] must be available(written by query operations). // queryCount - 1] must be available(written by query operations).
// The destinationOffset must be a multiple of 8 bytes on D3D12 and Vulkan // The destinationOffset must be a multiple of 8 bytes on D3D12 and Vulkan

View File

@ -303,8 +303,6 @@ namespace dawn_native {
MaybeError ValidateTextureCopyRange(DeviceBase const* device, MaybeError ValidateTextureCopyRange(DeviceBase const* device,
const ImageCopyTexture& textureCopy, const ImageCopyTexture& textureCopy,
const Extent3D& copySize) { const Extent3D& copySize) {
// TODO(jiawei.shao@intel.com): add validations on the texture-to-texture copies within the
// same texture.
const TextureBase* texture = textureCopy.texture; const TextureBase* texture = textureCopy.texture;
ASSERT(texture->GetDimension() != wgpu::TextureDimension::e1D); ASSERT(texture->GetDimension() != wgpu::TextureDimension::e1D);

View File

@ -264,7 +264,7 @@ namespace dawn_native {
// Move away from the Alive state so that the application cannot use this device // Move away from the Alive state so that the application cannot use this device
// anymore. // anymore.
// TODO(cwallez@chromium.org): Do we need atomics for this to become visible to other // TODO(crbug.com/dawn/831): Do we need atomics for this to become visible to other
// threads in a multithreaded scenario? // threads in a multithreaded scenario?
mState = State::BeingDisconnected; mState = State::BeingDisconnected;
@ -896,7 +896,7 @@ namespace dawn_native {
AssumeCommandsComplete(); AssumeCommandsComplete();
} }
// TODO(cwallez@chromium.org): decouple TickImpl from updating the serial so that we can // TODO(crbug.com/dawn/833): decouple TickImpl from updating the serial so that we can
// tick the dynamic uploader before the backend resource allocators. This would allow // tick the dynamic uploader before the backend resource allocators. This would allow
// reclaiming resources one tick earlier. // reclaiming resources one tick earlier.
mDynamicUploader->Deallocate(mCompletedSerial); mDynamicUploader->Deallocate(mCompletedSerial);
@ -1126,7 +1126,7 @@ namespace dawn_native {
return layoutRef; return layoutRef;
} }
// TODO(jiawei.shao@intel.com): override this function with the async version on the backends // This function is overwritten with the async version on the backends
// that supports creating compute pipeline asynchronously // that supports creating compute pipeline asynchronously
void DeviceBase::CreateComputePipelineAsyncImpl(const ComputePipelineDescriptor* descriptor, void DeviceBase::CreateComputePipelineAsyncImpl(const ComputePipelineDescriptor* descriptor,
size_t blueprintHash, size_t blueprintHash,

View File

@ -297,14 +297,15 @@ namespace dawn_native {
// Depth-stencil formats // Depth-stencil formats
AddDepthFormat(wgpu::TextureFormat::Depth32Float, 4); AddDepthFormat(wgpu::TextureFormat::Depth32Float, 4);
// TODO(crbug.com/dawn/843): This is 4 because we read this to perform zero initialization,
// and textures are always use depth32float. We should improve this to be more robust. Perhaps,
// using 0 here to mean "unsized" and adding a backend-specific query for the block size.
AddDepthFormat(wgpu::TextureFormat::Depth24Plus, 4); AddDepthFormat(wgpu::TextureFormat::Depth24Plus, 4);
// TODO(dawn:666): Implement the stencil8 format // TODO(dawn:666): Implement the stencil8 format
AddStencilFormat(wgpu::TextureFormat::Stencil8); AddStencilFormat(wgpu::TextureFormat::Stencil8);
// TODO(cwallez@chromium.org): It isn't clear if this format should be copyable
// because its size isn't well defined, is it 4, 5 or 8?
AddMultiAspectFormat(wgpu::TextureFormat::Depth24PlusStencil8, AddMultiAspectFormat(wgpu::TextureFormat::Depth24PlusStencil8,
Aspect::Depth | Aspect::Stencil, wgpu::TextureFormat::Depth24Plus, wgpu::TextureFormat::Stencil8, true, true); Aspect::Depth | Aspect::Stencil, wgpu::TextureFormat::Depth24Plus, wgpu::TextureFormat::Stencil8, true, true);
// TODO(dawn:690): Implement Depth16Unorm, Depth24UnormStencil8, Depth32FloatStencil8. // TODO(dawn:690): Implement Depth16Unorm, Depth24UnormStencil8, Depth32FloatStencil8.
// BC compressed formats // BC compressed formats
bool isBCFormatSupported = device->IsExtensionEnabled(Extension::TextureCompressionBC); bool isBCFormatSupported = device->IsExtensionEnabled(Extension::TextureCompressionBC);

View File

@ -458,9 +458,6 @@ namespace dawn_native {
NormalizeBlendFactor(mTargetBlend[i].color.dstFactor); NormalizeBlendFactor(mTargetBlend[i].color.dstFactor);
} }
} }
// TODO(cwallez@chromium.org): Check against the shader module that the correct color
// attachment are set?
} }
RenderPipelineBase::RenderPipelineBase(DeviceBase* device, ObjectBase::ErrorTag tag) RenderPipelineBase::RenderPipelineBase(DeviceBase* device, ObjectBase::ErrorTag tag)

View File

@ -635,8 +635,6 @@ namespace dawn_native {
std::unique_ptr<EntryPointMetadata> metadata = std::make_unique<EntryPointMetadata>(); std::unique_ptr<EntryPointMetadata> metadata = std::make_unique<EntryPointMetadata>();
metadata->stage = stage; metadata->stage = stage;
// TODO(cwallez@chromium.org): make errors here creation errors
// currently errors here do not prevent the shadermodule from being used
const auto& resources = compiler.get_shader_resources(); const auto& resources = compiler.get_shader_resources();
if (resources.push_constant_buffers.size() > 0) { if (resources.push_constant_buffers.size() > 0) {

View File

@ -78,7 +78,7 @@ namespace dawn_native {
} }
uint8_t GetAspectCount(Aspect aspects) { uint8_t GetAspectCount(Aspect aspects) {
// TODO(cwallez@chromium.org): This should use popcount once Dawn has such a function. // TODO(crbug.com/dawn/829): This should use popcount once Dawn has such a function.
// Note that we can't do a switch because compilers complain that Depth | Stencil is not // Note that we can't do a switch because compilers complain that Depth | Stencil is not
// a valid enum value. // a valid enum value.
if (aspects == Aspect::Color || aspects == Aspect::Depth || if (aspects == Aspect::Color || aspects == Aspect::Depth ||

View File

@ -101,7 +101,7 @@ namespace dawn_native {
third_party/dawn/src/dawn_native third_party/dawn/src/dawn_native
*/ */
// //
// TODO(cwallez@chromium.org): Make the recompression optional, the calling code should know // TODO(crbug.com/dawn/836): Make the recompression optional, the calling code should know
// if recompression can happen or not in Update() and Merge() // if recompression can happen or not in Update() and Merge()
template <typename T> template <typename T>
class SubresourceStorage { class SubresourceStorage {

View File

@ -75,7 +75,7 @@ namespace dawn_native {
DAWN_TRY(ValidatePresentMode(descriptor->presentMode)); DAWN_TRY(ValidatePresentMode(descriptor->presentMode));
// TODO(cwallez@chromium.org): Lift this restriction once // TODO(crbug.com/dawn/160): Lift this restriction once
// wgpu::Instance::GetPreferredSurfaceFormat is implemented. // wgpu::Instance::GetPreferredSurfaceFormat is implemented.
if (descriptor->format != wgpu::TextureFormat::BGRA8Unorm) { if (descriptor->format != wgpu::TextureFormat::BGRA8Unorm) {
return DAWN_VALIDATION_ERROR("Format must (currently) be BGRA8Unorm"); return DAWN_VALIDATION_ERROR("Format must (currently) be BGRA8Unorm");

View File

@ -26,7 +26,8 @@
namespace dawn_native { namespace dawn_native {
namespace { namespace {
// TODO(jiawei.shao@intel.com): implement texture view format compatibility rule // WebGPU currently does not have texture format reinterpretation. If it does, the
// code to check for it might go here.
MaybeError ValidateTextureViewFormatCompatibility(const TextureBase* texture, MaybeError ValidateTextureViewFormatCompatibility(const TextureBase* texture,
const TextureViewDescriptor* descriptor) { const TextureViewDescriptor* descriptor) {
if (texture->GetFormat().format != descriptor->format) { if (texture->GetFormat().format != descriptor->format) {
@ -43,7 +44,7 @@ namespace dawn_native {
return {}; return {};
} }
// TODO(jiawei.shao@intel.com): support validation on all texture view dimensions // TODO(crbug.com/dawn/814): Implement for 1D texture.
bool IsTextureViewDimensionCompatibleWithTextureDimension( bool IsTextureViewDimensionCompatibleWithTextureDimension(
wgpu::TextureViewDimension textureViewDimension, wgpu::TextureViewDimension textureViewDimension,
wgpu::TextureDimension textureDimension) { wgpu::TextureDimension textureDimension) {
@ -63,7 +64,7 @@ namespace dawn_native {
} }
} }
// TODO(jiawei.shao@intel.com): support validation on all texture view dimensions // TODO(crbug.com/dawn/814): Implement for 1D texture.
bool IsArrayLayerValidForTextureViewDimension( bool IsArrayLayerValidForTextureViewDimension(
wgpu::TextureViewDimension textureViewDimension, wgpu::TextureViewDimension textureViewDimension,
uint32_t textureViewArrayLayer) { uint32_t textureViewArrayLayer) {
@ -102,7 +103,6 @@ namespace dawn_native {
} }
} }
// TODO(jiawei.shao@intel.com): support more sample count.
MaybeError ValidateSampleCount(const TextureDescriptor* descriptor, const Format* format) { MaybeError ValidateSampleCount(const TextureDescriptor* descriptor, const Format* format) {
if (!IsValidSampleCount(descriptor->sampleCount)) { if (!IsValidSampleCount(descriptor->sampleCount)) {
return DAWN_VALIDATION_ERROR("The sample count of the texture is not supported."); return DAWN_VALIDATION_ERROR("The sample count of the texture is not supported.");
@ -264,7 +264,6 @@ namespace dawn_native {
DAWN_TRY(ValidateTextureDimension(descriptor->dimension)); DAWN_TRY(ValidateTextureDimension(descriptor->dimension));
DAWN_TRY(ValidateSampleCount(descriptor, format)); DAWN_TRY(ValidateSampleCount(descriptor, format));
// TODO(jiawei.shao@intel.com): check stuff based on the dimension
if (descriptor->size.width == 0 || descriptor->size.height == 0 || if (descriptor->size.width == 0 || descriptor->size.height == 0 ||
descriptor->size.depthOrArrayLayers == 0 || descriptor->mipLevelCount == 0) { descriptor->size.depthOrArrayLayers == 0 || descriptor->mipLevelCount == 0) {
return DAWN_VALIDATION_ERROR("Cannot create an empty texture"); return DAWN_VALIDATION_ERROR("Cannot create an empty texture");
@ -326,7 +325,6 @@ namespace dawn_native {
return DAWN_VALIDATION_ERROR("Texture does not have selected aspect for texture view."); return DAWN_VALIDATION_ERROR("Texture does not have selected aspect for texture view.");
} }
// TODO(jiawei.shao@intel.com): check stuff based on resource limits
if (descriptor->arrayLayerCount == 0 || descriptor->mipLevelCount == 0) { if (descriptor->arrayLayerCount == 0 || descriptor->mipLevelCount == 0) {
return DAWN_VALIDATION_ERROR("Cannot create an empty texture view"); return DAWN_VALIDATION_ERROR("Cannot create an empty texture view");
} }
@ -392,6 +390,8 @@ namespace dawn_native {
return desc; return desc;
} }
// WebGPU only supports sample counts of 1 and 4. We could expand to more based on
// platform support, but it would probably be an extension.
bool IsValidSampleCount(uint32_t sampleCount) { bool IsValidSampleCount(uint32_t sampleCount) {
switch (sampleCount) { switch (sampleCount) {
case 1: case 1:
@ -443,7 +443,6 @@ namespace dawn_native {
return mDimension; return mDimension;
} }
// TODO(jiawei.shao@intel.com): return more information about texture format
const Format& TextureBase::GetFormat() const { const Format& TextureBase::GetFormat() const {
ASSERT(!IsError()); ASSERT(!IsError());
return mFormat; return mFormat;
@ -468,7 +467,7 @@ namespace dawn_native {
} }
uint32_t TextureBase::GetArrayLayers() const { uint32_t TextureBase::GetArrayLayers() const {
ASSERT(!IsError()); ASSERT(!IsError());
// TODO(cwallez@chromium.org): Update for 1D textures when they are supported. // TODO(crbug.com/dawn/814): Update for 1D textures when they are supported.
ASSERT(mDimension != wgpu::TextureDimension::e1D); ASSERT(mDimension != wgpu::TextureDimension::e1D);
if (mDimension == wgpu::TextureDimension::e3D) { if (mDimension == wgpu::TextureDimension::e3D) {
return 1; return 1;
@ -582,7 +581,7 @@ namespace dawn_native {
// Compressed Textures will have paddings if their width or height is not a multiple of // Compressed Textures will have paddings if their width or height is not a multiple of
// 4 at non-zero mipmap levels. // 4 at non-zero mipmap levels.
if (mFormat.isCompressed) { if (mFormat.isCompressed) {
// TODO(jiawei.shao@intel.com): check if there are any overflows. // TODO(crbug.com/dawn/830): check if there are any overflows.
const TexelBlockInfo& blockInfo = mFormat.GetAspectInfo(wgpu::TextureAspect::All).block; const TexelBlockInfo& blockInfo = mFormat.GetAspectInfo(wgpu::TextureAspect::All).block;
extent.width = (extent.width + blockInfo.width - 1) / blockInfo.width * blockInfo.width; extent.width = (extent.width + blockInfo.width - 1) / blockInfo.width * blockInfo.width;
extent.height = extent.height =

View File

@ -99,7 +99,6 @@ namespace dawn_native {
MaybeError ValidateDestroy() const; MaybeError ValidateDestroy() const;
wgpu::TextureDimension mDimension; wgpu::TextureDimension mDimension;
// TODO(cwallez@chromium.org): This should be deduplicated in the Device
const Format& mFormat; const Format& mFormat;
Extent3D mSize; Extent3D mSize;
uint32_t mMipLevelCount; uint32_t mMipLevelCount;
@ -134,7 +133,6 @@ namespace dawn_native {
Ref<TextureBase> mTexture; Ref<TextureBase> mTexture;
// TODO(cwallez@chromium.org): This should be deduplicated in the Device
const Format& mFormat; const Format& mFormat;
wgpu::TextureViewDimension mDimension; wgpu::TextureViewDimension mDimension;
SubresourceRange mRange; SubresourceRange mRange;

View File

@ -69,8 +69,6 @@ namespace dawn_native { namespace d3d12 {
switch (bindingInfo.buffer.type) { switch (bindingInfo.buffer.type) {
case wgpu::BufferBindingType::Uniform: { case wgpu::BufferBindingType::Uniform: {
D3D12_CONSTANT_BUFFER_VIEW_DESC desc; D3D12_CONSTANT_BUFFER_VIEW_DESC desc;
// TODO(enga@google.com): investigate if this needs to be a constraint
// at the API level
desc.SizeInBytes = Align(binding.size, 256); desc.SizeInBytes = Align(binding.size, 256);
desc.BufferLocation = desc.BufferLocation =
ToBackend(binding.buffer)->GetVA() + binding.offset; ToBackend(binding.buffer)->GetVA() + binding.offset;

View File

@ -109,8 +109,6 @@ namespace dawn_native { namespace d3d12 {
D3D12_RESOURCE_DESC resourceDescriptor; D3D12_RESOURCE_DESC resourceDescriptor;
resourceDescriptor.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER; resourceDescriptor.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
resourceDescriptor.Alignment = 0; resourceDescriptor.Alignment = 0;
// TODO(cwallez@chromium.org): Have a global "zero" buffer that can do everything instead
// of creating a new 4-byte buffer?
// D3D buffers are always resource size aligned to 64KB. However, D3D12's validation forbids // D3D buffers are always resource size aligned to 64KB. However, D3D12's validation forbids
// binding a CBV to an unaligned size. To prevent, one can always safely align the buffer // binding a CBV to an unaligned size. To prevent, one can always safely align the buffer
// desc size to the CBV data alignment as other buffer usages ignore it (no size check). // desc size to the CBV data alignment as other buffer usages ignore it (no size check).

View File

@ -744,7 +744,7 @@ namespace dawn_native { namespace d3d12 {
commandList->CopyResource(destination->GetD3D12Resource(), commandList->CopyResource(destination->GetD3D12Resource(),
source->GetD3D12Resource()); source->GetD3D12Resource());
} else { } else {
// TODO(jiawei.shao@intel.com): support copying with 1D and 3D textures. // TODO(crbug.com/dawn/814): support copying with 1D.
ASSERT(source->GetDimension() == wgpu::TextureDimension::e2D && ASSERT(source->GetDimension() == wgpu::TextureDimension::e2D &&
destination->GetDimension() == wgpu::TextureDimension::e2D); destination->GetDimension() == wgpu::TextureDimension::e2D);
const dawn_native::Extent3D copyExtentOneSlice = { const dawn_native::Extent3D copyExtentOneSlice = {

View File

@ -95,7 +95,7 @@ namespace dawn_native { namespace d3d12 {
mCurrentBuffer = mSwapChain->GetCurrentBackBufferIndex(); mCurrentBuffer = mSwapChain->GetCurrentBackBufferIndex();
nextTexture->texture.ptr = mBuffers[mCurrentBuffer].Get(); nextTexture->texture.ptr = mBuffers[mCurrentBuffer].Get();
// TODO(cwallez@chromium.org) Currently we force the CPU to wait for the GPU to be finished // TODO(crbug.com/dawn/269) Currently we force the CPU to wait for the GPU to be finished
// with the buffer. Ideally the synchronization should be all done on the GPU. // with the buffer. Ideally the synchronization should be all done on the GPU.
ASSERT(mDevice->WaitForSerial(mBufferSerials[mCurrentBuffer]).IsSuccess()); ASSERT(mDevice->WaitForSerial(mBufferSerials[mCurrentBuffer]).IsSuccess());
@ -106,7 +106,7 @@ namespace dawn_native { namespace d3d12 {
// This assumes the texture has already been transition to the PRESENT state. // This assumes the texture has already been transition to the PRESENT state.
ASSERT_SUCCESS(mSwapChain->Present(mInterval, 0)); ASSERT_SUCCESS(mSwapChain->Present(mInterval, 0));
// TODO(cwallez@chromium.org): Make the serial ticking implicit. // TODO(crbug.com/dawn/833): Make the serial ticking implicit.
ASSERT(mDevice->NextSerial().IsSuccess()); ASSERT(mDevice->NextSerial().IsSuccess());
mBufferSerials[mCurrentBuffer] = mDevice->GetPendingCommandSerial(); mBufferSerials[mCurrentBuffer] = mDevice->GetPendingCommandSerial();

View File

@ -161,17 +161,17 @@ namespace dawn_native { namespace d3d12 {
return InitializeSwapChainFromScratch(); return InitializeSwapChainFromScratch();
} }
// TODO(cwallez@chromium.org): figure out what should happen when surfaces are used by // TODO(crbug.com/dawn/269): figure out what should happen when surfaces are used by
// multiple backends one after the other. It probably needs to block until the backend // multiple backends one after the other. It probably needs to block until the backend
// and GPU are completely finished with the previous swapchain. // and GPU are completely finished with the previous swapchain.
if (previousSwapChain->GetBackendType() != wgpu::BackendType::D3D12) { if (previousSwapChain->GetBackendType() != wgpu::BackendType::D3D12) {
return DAWN_VALIDATION_ERROR("d3d12::SwapChain cannot switch between APIs"); return DAWN_VALIDATION_ERROR("d3d12::SwapChain cannot switch between APIs");
} }
// TODO(cwallez@chromium.org): use ToBackend once OldSwapChainBase is removed. // TODO(crbug.com/dawn/269): use ToBackend once OldSwapChainBase is removed.
SwapChain* previousD3D12SwapChain = static_cast<SwapChain*>(previousSwapChain); SwapChain* previousD3D12SwapChain = static_cast<SwapChain*>(previousSwapChain);
// TODO(cwallez@chromium.org): Figure out switching an HWND between devices, it might // TODO(crbug.com/dawn/269): Figure out switching an HWND between devices, it might
// require just losing the reference to the swapchain, but might also need to wait for // require just losing the reference to the swapchain, but might also need to wait for
// all previous operations to complete. // all previous operations to complete.
if (GetDevice() != previousSwapChain->GetDevice()) { if (GetDevice() != previousSwapChain->GetDevice()) {

View File

@ -32,7 +32,7 @@ namespace dawn_native {
// Add an extra texture usage for textures that will be presented, for use in backends // Add an extra texture usage for textures that will be presented, for use in backends
// that needs to transition to present usage. // that needs to transition to present usage.
// TODO(cwallez@chromium.org): It currently aliases wgpu::TextureUsage::Present, assign it // This currently aliases wgpu::TextureUsage::Present, we would assign it
// some bit when wgpu::TextureUsage::Present is removed. // some bit when wgpu::TextureUsage::Present is removed.
static constexpr wgpu::TextureUsage kPresentTextureUsage = wgpu::TextureUsage::Present; static constexpr wgpu::TextureUsage kPresentTextureUsage = wgpu::TextureUsage::Present;
} // namespace dawn_native } // namespace dawn_native

View File

@ -222,7 +222,7 @@ namespace dawn_native { namespace metal {
[*mDevice supportsFamily:MTLGPUFamilyApple5]) { [*mDevice supportsFamily:MTLGPUFamilyApple5]) {
mSupportedExtensions.EnableExtension(Extension::PipelineStatisticsQuery); mSupportedExtensions.EnableExtension(Extension::PipelineStatisticsQuery);
// TODO(hao.x.li@intel.com): Not enable timestamp query here becuase it's not // TODO(crbug.com/dawn/434): Not enable timestamp query here becuase it's not
// clear how to convert timestamps to nanoseconds on Metal. // clear how to convert timestamps to nanoseconds on Metal.
// See https://github.com/gpuweb/gpuweb/issues/1325 // See https://github.com/gpuweb/gpuweb/issues/1325
} }

View File

@ -1054,8 +1054,6 @@ std::ostringstream& DawnTestBase::AddTextureExpectationImpl(const char* file,
uint32_t size = utils::RequiredBytesInCopy(bytesPerRow, rowsPerImage, extent.width, uint32_t size = utils::RequiredBytesInCopy(bytesPerRow, rowsPerImage, extent.width,
extent.height, extent.depthOrArrayLayers, dataSize); extent.height, extent.depthOrArrayLayers, dataSize);
// TODO(enga): We should have the map async alignment in Contants.h. Also, it should change to 8
// for Float64Array.
auto readback = ReserveReadback(Align(size, 4)); auto readback = ReserveReadback(Align(size, 4));
// We need to enqueue the copy immediately because by the time we resolve the expectation, // We need to enqueue the copy immediately because by the time we resolve the expectation,
@ -1176,8 +1174,6 @@ void DawnTestBase::WaitForAllOperations() {
} }
DawnTestBase::ReadbackReservation DawnTestBase::ReserveReadback(uint64_t readbackSize) { DawnTestBase::ReadbackReservation DawnTestBase::ReserveReadback(uint64_t readbackSize) {
// For now create a new MapRead buffer for each readback
// TODO(cwallez@chromium.org): eventually make bigger buffers and allocate linearly?
ReadbackSlot slot; ReadbackSlot slot;
slot.bufferSize = readbackSize; slot.bufferSize = readbackSize;

View File

@ -84,7 +84,6 @@
#define EXPECT_PIXEL_RGBA8_BETWEEN(color0, color1, texture, x, y) \ #define EXPECT_PIXEL_RGBA8_BETWEEN(color0, color1, texture, x, y) \
AddTextureBetweenColorsExpectation(__FILE__, __LINE__, color0, color1, texture, x, y) AddTextureBetweenColorsExpectation(__FILE__, __LINE__, color0, color1, texture, x, y)
// TODO(enga): Migrate other texure expectation helpers to this common one.
#define EXPECT_TEXTURE_EQ(...) AddTextureExpectation(__FILE__, __LINE__, __VA_ARGS__) #define EXPECT_TEXTURE_EQ(...) AddTextureExpectation(__FILE__, __LINE__, __VA_ARGS__)
// Should only be used to test validation of function that can't be tested by regular validation // Should only be used to test validation of function that can't be tested by regular validation

View File

@ -1198,8 +1198,8 @@ TEST_P(BufferZeroInitTest, ResolveQuerySet) {
// Timestamp query is not supported on OpenGL // Timestamp query is not supported on OpenGL
DAWN_TEST_UNSUPPORTED_IF(IsOpenGL()); DAWN_TEST_UNSUPPORTED_IF(IsOpenGL());
// TODO(hao.x.li@intel.com): Crash occurs if we only call WriteTimestamp in a command encoder // TODO(crbug.com/dawn/545): Crash occurs if we only call WriteTimestamp in a command encoder
// without any copy commands on Metal on AMD GPU. See https://crbug.com/dawn/545. // without any copy commands on Metal on AMD GPU.
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsAMD()); DAWN_SUPPRESS_TEST_IF(IsMetal() && IsAMD());
// Skip if timestamp extension is not supported on device // Skip if timestamp extension is not supported on device

View File

@ -402,8 +402,7 @@ class CompressedTextureBCFormatTest : public DawnTest {
return expectedData; return expectedData;
} }
// Right now we only test 2D array textures with BC formats. // Note: BC formats are only valid with 2D (array) textures.
// TODO(jiawei.shao@intel.com): support 1D/3D textures
static wgpu::Extent3D GetVirtualSizeAtLevel(const CopyConfig& config) { static wgpu::Extent3D GetVirtualSizeAtLevel(const CopyConfig& config) {
return {config.textureDescriptor.size.width >> config.viewMipmapLevel, return {config.textureDescriptor.size.width >> config.viewMipmapLevel,
config.textureDescriptor.size.height >> config.viewMipmapLevel, config.textureDescriptor.size.height >> config.viewMipmapLevel,
@ -431,7 +430,7 @@ class CompressedTextureBCFormatTest : public DawnTest {
// Test copying into the whole BC texture with 2x2 blocks and sampling from it. // Test copying into the whole BC texture with 2x2 blocks and sampling from it.
TEST_P(CompressedTextureBCFormatTest, Basic) { TEST_P(CompressedTextureBCFormatTest, Basic) {
// TODO(jiawei.shao@intel.com): find out why this test fails on Windows Intel OpenGL drivers. // TODO(crbug.com/dawn/815): find out why this test fails on Windows Intel OpenGL drivers.
DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows()); DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows());
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
@ -468,7 +467,7 @@ TEST_P(CompressedTextureBCFormatTest, CopyIntoSubRegion) {
// Test copying into the non-zero layer of a 2D array texture with BC formats works correctly. // Test copying into the non-zero layer of a 2D array texture with BC formats works correctly.
TEST_P(CompressedTextureBCFormatTest, CopyIntoNonZeroArrayLayer) { TEST_P(CompressedTextureBCFormatTest, CopyIntoNonZeroArrayLayer) {
// TODO(jiawei.shao@intel.com): find out why this test fails on Windows Intel OpenGL drivers. // TODO(crbug.com/dawn/815): find out why this test fails on Windows Intel OpenGL drivers.
DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows()); DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows());
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
@ -493,7 +492,7 @@ TEST_P(CompressedTextureBCFormatTest, CopyIntoNonZeroArrayLayer) {
// Test copying into a non-zero mipmap level of a texture with BC texture formats. // Test copying into a non-zero mipmap level of a texture with BC texture formats.
TEST_P(CompressedTextureBCFormatTest, CopyBufferIntoNonZeroMipmapLevel) { TEST_P(CompressedTextureBCFormatTest, CopyBufferIntoNonZeroMipmapLevel) {
// TODO(jiawei.shao@intel.com): find out why this test fails on Windows Intel OpenGL drivers. // TODO(crbug.com/dawn/815): find out why this test fails on Windows Intel OpenGL drivers.
DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows()); DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows());
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
@ -532,7 +531,7 @@ TEST_P(CompressedTextureBCFormatTest, CopyBufferIntoNonZeroMipmapLevel) {
// Test texture-to-texture whole-size copies with BC formats. // Test texture-to-texture whole-size copies with BC formats.
TEST_P(CompressedTextureBCFormatTest, CopyWholeTextureSubResourceIntoNonZeroMipmapLevel) { TEST_P(CompressedTextureBCFormatTest, CopyWholeTextureSubResourceIntoNonZeroMipmapLevel) {
// TODO(jiawei.shao@intel.com): find out why this test fails on Windows Intel OpenGL drivers. // TODO(crbug.com/dawn/815): find out why this test fails on Windows Intel OpenGL drivers.
DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows()); DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows());
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
@ -540,9 +539,8 @@ TEST_P(CompressedTextureBCFormatTest, CopyWholeTextureSubResourceIntoNonZeroMipm
// This test uses glTextureView() which is not supported in OpenGL ES. // This test uses glTextureView() which is not supported in OpenGL ES.
DAWN_TEST_UNSUPPORTED_IF(IsOpenGLES()); DAWN_TEST_UNSUPPORTED_IF(IsOpenGLES());
// TODO(cwallez@chromium.org): This consistently fails on with the 12th pixel being opaque black // TODO(crbug.com/dawn/816): This consistently fails on with the 12th pixel being opaque black
// instead of opaque red on Win10 FYI Release (NVIDIA GeForce GTX 1660). See // instead of opaque red on Win10 FYI Release (NVIDIA GeForce GTX 1660).
// https://bugs.chromium.org/p/chromium/issues/detail?id=981393
DAWN_SUPPRESS_TEST_IF(IsWindows() && IsVulkan() && IsNvidia()); DAWN_SUPPRESS_TEST_IF(IsWindows() && IsVulkan() && IsNvidia());
CopyConfig config; CopyConfig config;
@ -591,7 +589,7 @@ TEST_P(CompressedTextureBCFormatTest, CopyWholeTextureSubResourceIntoNonZeroMipm
TEST_P(CompressedTextureBCFormatTest, CopyIntoSubresourceWithPhysicalSizeNotEqualToVirtualSize) { TEST_P(CompressedTextureBCFormatTest, CopyIntoSubresourceWithPhysicalSizeNotEqualToVirtualSize) {
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
// TODO(jiawei.shao@intel.com): add workaround on the T2T copies where Extent3D fits in one // TODO(crbug.com/dawn/817): add workaround on the T2T copies where Extent3D fits in one
// subresource and does not fit in another one on OpenGL. // subresource and does not fit in another one on OpenGL.
DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES()); DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
@ -651,7 +649,7 @@ TEST_P(CompressedTextureBCFormatTest, CopyIntoSubresourceWithPhysicalSizeNotEqua
TEST_P(CompressedTextureBCFormatTest, CopyFromSubresourceWithPhysicalSizeNotEqualToVirtualSize) { TEST_P(CompressedTextureBCFormatTest, CopyFromSubresourceWithPhysicalSizeNotEqualToVirtualSize) {
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
// TODO(jiawei.shao@intel.com): add workaround on the T2T copies where Extent3D fits in one // TODO(crbug.com/dawn/817): add workaround on the T2T copies where Extent3D fits in one
// subresource and does not fit in another one on OpenGL. // subresource and does not fit in another one on OpenGL.
DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES()); DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
@ -707,7 +705,7 @@ TEST_P(CompressedTextureBCFormatTest, CopyFromSubresourceWithPhysicalSizeNotEqua
TEST_P(CompressedTextureBCFormatTest, MultipleCopiesWithPhysicalSizeNotEqualToVirtualSize) { TEST_P(CompressedTextureBCFormatTest, MultipleCopiesWithPhysicalSizeNotEqualToVirtualSize) {
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
// TODO(jiawei.shao@intel.com): add workaround on the T2T copies where Extent3D fits in one // TODO(crbug.com/dawn/817): add workaround on the T2T copies where Extent3D fits in one
// subresource and does not fit in another one on OpenGL. // subresource and does not fit in another one on OpenGL.
DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES()); DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
@ -787,7 +785,7 @@ TEST_P(CompressedTextureBCFormatTest, MultipleCopiesWithPhysicalSizeNotEqualToVi
TEST_P(CompressedTextureBCFormatTest, CopyWithMultipleLayerAndPhysicalSizeNotEqualToVirtualSize) { TEST_P(CompressedTextureBCFormatTest, CopyWithMultipleLayerAndPhysicalSizeNotEqualToVirtualSize) {
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
// TODO(jiawei.shao@intel.com): add workaround on the T2T copies where Extent3D fits in one // TODO(crbug.com/dawn/817): add workaround on the T2T copies where Extent3D fits in one
// subresource and does not fit in another one on OpenGL. // subresource and does not fit in another one on OpenGL.
DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES()); DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
@ -857,7 +855,7 @@ TEST_P(CompressedTextureBCFormatTest, CopyWithMultipleLayerAndPhysicalSizeNotEqu
// Test the special case of the B2T copies on the D3D12 backend that the buffer offset and texture // Test the special case of the B2T copies on the D3D12 backend that the buffer offset and texture
// extent exactly fit the RowPitch. // extent exactly fit the RowPitch.
TEST_P(CompressedTextureBCFormatTest, BufferOffsetAndExtentFitRowPitch) { TEST_P(CompressedTextureBCFormatTest, BufferOffsetAndExtentFitRowPitch) {
// TODO(jiawei.shao@intel.com): find out why this test fails on Windows Intel OpenGL drivers. // TODO(crbug.com/dawn/815): find out why this test fails on Windows Intel OpenGL drivers.
DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows()); DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows());
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
@ -886,7 +884,7 @@ TEST_P(CompressedTextureBCFormatTest, BufferOffsetAndExtentFitRowPitch) {
// backend the texelOffset.y will be greater than 0 after calcuting the texelOffset in the function // backend the texelOffset.y will be greater than 0 after calcuting the texelOffset in the function
// ComputeTexelOffsets(). // ComputeTexelOffsets().
TEST_P(CompressedTextureBCFormatTest, BufferOffsetExceedsSlicePitch) { TEST_P(CompressedTextureBCFormatTest, BufferOffsetExceedsSlicePitch) {
// TODO(jiawei.shao@intel.com): find out why this test fails on Windows Intel OpenGL drivers. // TODO(crbug.com/dawn/815): find out why this test fails on Windows Intel OpenGL drivers.
DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows()); DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows());
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
@ -917,7 +915,7 @@ TEST_P(CompressedTextureBCFormatTest, BufferOffsetExceedsSlicePitch) {
// Test the special case of the B2T copies on the D3D12 backend that the buffer offset and texture // Test the special case of the B2T copies on the D3D12 backend that the buffer offset and texture
// extent exceed the RowPitch. On D3D12 backend two copies are required for this case. // extent exceed the RowPitch. On D3D12 backend two copies are required for this case.
TEST_P(CompressedTextureBCFormatTest, CopyWithBufferOffsetAndExtentExceedRowPitch) { TEST_P(CompressedTextureBCFormatTest, CopyWithBufferOffsetAndExtentExceedRowPitch) {
// TODO(jiawei.shao@intel.com): find out why this test fails on Windows Intel OpenGL drivers. // TODO(crbug.com/dawn/815): find out why this test fails on Windows Intel OpenGL drivers.
DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows()); DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows());
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
@ -974,7 +972,7 @@ TEST_P(CompressedTextureBCFormatTest, RowPitchEqualToSlicePitch) {
// copyExtent.depthOrArrayLayers) on Metal backends. As copyExtent.depthOrArrayLayers can only be 1 // copyExtent.depthOrArrayLayers) on Metal backends. As copyExtent.depthOrArrayLayers can only be 1
// for BC formats, on Metal backend we will use two copies to implement such copy. // for BC formats, on Metal backend we will use two copies to implement such copy.
TEST_P(CompressedTextureBCFormatTest, LargeImageHeight) { TEST_P(CompressedTextureBCFormatTest, LargeImageHeight) {
// TODO(jiawei.shao@intel.com): find out why this test fails on Windows Intel OpenGL drivers. // TODO(crbug.com/dawn/815): find out why this test fails on Windows Intel OpenGL drivers.
DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows()); DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows());
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
@ -995,7 +993,7 @@ TEST_P(CompressedTextureBCFormatTest, LargeImageHeight) {
// Test the workaround in the B2T copies when (bufferSize - bufferOffset < bytesPerImage * // Test the workaround in the B2T copies when (bufferSize - bufferOffset < bytesPerImage *
// copyExtent.depthOrArrayLayers) and copyExtent needs to be clamped. // copyExtent.depthOrArrayLayers) and copyExtent needs to be clamped.
TEST_P(CompressedTextureBCFormatTest, LargeImageHeightAndClampedCopyExtent) { TEST_P(CompressedTextureBCFormatTest, LargeImageHeightAndClampedCopyExtent) {
// TODO(jiawei.shao@intel.com): find out why this test fails on Windows Intel OpenGL drivers. // TODO(crbug.com/dawn/815): find out why this test fails on Windows Intel OpenGL drivers.
DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows()); DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows());
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
@ -1037,7 +1035,7 @@ TEST_P(CompressedTextureBCFormatTest, LargeImageHeightAndClampedCopyExtent) {
// Test copying a whole 2D array texture with array layer count > 1 in one copy command works with // Test copying a whole 2D array texture with array layer count > 1 in one copy command works with
// BC formats. // BC formats.
TEST_P(CompressedTextureBCFormatTest, CopyWhole2DArrayTexture) { TEST_P(CompressedTextureBCFormatTest, CopyWhole2DArrayTexture) {
// TODO(jiawei.shao@intel.com): find out why this test fails on Windows Intel OpenGL drivers. // TODO(crbug.com/dawn/815): find out why this test fails on Windows Intel OpenGL drivers.
DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows()); DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows());
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
@ -1063,7 +1061,7 @@ TEST_P(CompressedTextureBCFormatTest, CopyWhole2DArrayTexture) {
// Test copying a multiple 2D texture array layers in one copy command works with BC formats. // Test copying a multiple 2D texture array layers in one copy command works with BC formats.
TEST_P(CompressedTextureBCFormatTest, CopyMultiple2DArrayLayers) { TEST_P(CompressedTextureBCFormatTest, CopyMultiple2DArrayLayers) {
// TODO(jiawei.shao@intel.com): find out why this test fails on Windows Intel OpenGL drivers. // TODO(crbug.com/dawn/815): find out why this test fails on Windows Intel OpenGL drivers.
DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows()); DAWN_SUPPRESS_TEST_IF(IsIntel() && IsOpenGL() && IsWindows());
DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported()); DAWN_TEST_UNSUPPORTED_IF(!IsBCFormatSupported());
@ -1120,7 +1118,6 @@ TEST_P(CompressedTextureBCFormatTest, UnalignedDynamicUploader) {
queue.Submit(1, &commands); queue.Submit(1, &commands);
} }
// TODO(jiawei.shao@intel.com): support BC formats on OpenGL backend
DAWN_INSTANTIATE_TEST(CompressedTextureBCFormatTest, DAWN_INSTANTIATE_TEST(CompressedTextureBCFormatTest,
D3D12Backend(), D3D12Backend(),
MetalBackend(), MetalBackend(),

View File

@ -59,7 +59,7 @@ class CopyTests : public DawnTest {
return textureData; return textureData;
} }
// TODO(jiawei.shao@intel.com): remove this function when all the tests in this file support // TODO(crbug.com/dawn/818): remove this function when all the tests in this file support
// testing arbitrary formats. // testing arbitrary formats.
static std::vector<RGBA8> GetExpectedTextureDataRGBA8( static std::vector<RGBA8> GetExpectedTextureDataRGBA8(
const utils::TextureDataCopyLayout& layout) { const utils::TextureDataCopyLayout& layout) {
@ -132,7 +132,7 @@ class CopyTests_T2B : public CopyTests {
const BufferSpec& bufferSpec, const BufferSpec& bufferSpec,
const wgpu::Extent3D& copySize, const wgpu::Extent3D& copySize,
wgpu::TextureDimension dimension = wgpu::TextureDimension::e2D) { wgpu::TextureDimension dimension = wgpu::TextureDimension::e2D) {
// TODO(jiawei.shao@intel.com): support testing arbitrary formats // TODO(crbug.com/dawn/818): support testing arbitrary formats
ASSERT_EQ(kDefaultFormat, textureSpec.format); ASSERT_EQ(kDefaultFormat, textureSpec.format);
const uint32_t bytesPerTexel = utils::GetTexelBlockSizeInBytes(textureSpec.format); const uint32_t bytesPerTexel = utils::GetTexelBlockSizeInBytes(textureSpec.format);
@ -244,7 +244,7 @@ class CopyTests_B2T : public CopyTests {
const BufferSpec& bufferSpec, const BufferSpec& bufferSpec,
const wgpu::Extent3D& copySize, const wgpu::Extent3D& copySize,
wgpu::TextureDimension dimension = wgpu::TextureDimension::e2D) { wgpu::TextureDimension dimension = wgpu::TextureDimension::e2D) {
// TODO(jiawei.shao@intel.com): support testing arbitrary formats // TODO(crbug.com/dawn/818): support testing arbitrary formats
ASSERT_EQ(kDefaultFormat, textureSpec.format); ASSERT_EQ(kDefaultFormat, textureSpec.format);
// Create a buffer of size `size` and populate it with data // Create a buffer of size `size` and populate it with data
const uint32_t bytesPerTexel = utils::GetTexelBlockSizeInBytes(textureSpec.format); const uint32_t bytesPerTexel = utils::GetTexelBlockSizeInBytes(textureSpec.format);
@ -2008,7 +2008,7 @@ TEST_P(CopyTests_T2B, CopyOneRowWithDepth32Float) {
// texture formats. See http://crbug.com/1161355 for more details. // texture formats. See http://crbug.com/1161355 for more details.
TEST_P(CopyTests_T2T, CopyFromNonZeroMipLevelWithTexelBlockSizeLessThan4Bytes) { TEST_P(CopyTests_T2T, CopyFromNonZeroMipLevelWithTexelBlockSizeLessThan4Bytes) {
// This test can pass on the Windows Intel Vulkan driver version 27.20.100.9168. // This test can pass on the Windows Intel Vulkan driver version 27.20.100.9168.
// TODO(jiawei.shao@intel.com): enable this test on Intel Vulkan drivers after the upgrade of // TODO(crbug.com/dawn/819): enable this test on Intel Vulkan drivers after the upgrade of
// try bots. // try bots.
DAWN_SUPPRESS_TEST_IF(IsVulkan() && IsWindows() && IsIntel()); DAWN_SUPPRESS_TEST_IF(IsVulkan() && IsWindows() && IsIntel());

View File

@ -312,7 +312,7 @@ TEST_P(DepthBiasTests, PositiveBiasOn24bit) {
0.25f * (1 << 25), 0, 0); 0.25f * (1 << 25), 0, 0);
// Only the bottom left quad has colors. 0.5 quad > 0.4 clear. // Only the bottom left quad has colors. 0.5 quad > 0.4 clear.
// TODO(enrico.galli@intel.com): Switch to depth sampling once feature has been enabled. // TODO(crbug.com/dawn/820): Switch to depth sampling once feature has been enabled.
std::vector<RGBA8> expected = { std::vector<RGBA8> expected = {
RGBA8::kRed, RGBA8::kRed, // RGBA8::kRed, RGBA8::kRed, //
RGBA8::kRed, RGBA8::kRed, // RGBA8::kRed, RGBA8::kRed, //
@ -333,7 +333,7 @@ TEST_P(DepthBiasTests, PositiveBiasOn24bitWithClamp) {
// Since we cleared with a depth of 0.4 and clamped bias at 0.4, the depth test will fail. 0.25 // Since we cleared with a depth of 0.4 and clamped bias at 0.4, the depth test will fail. 0.25
// + 0.125 < 0.4 clear. // + 0.125 < 0.4 clear.
// TODO(enrico.galli@intel.com): Switch to depth sampling once feature has been enabled. // TODO(crbug.com/dawn/820): Switch to depth sampling once feature has been enabled.
std::vector<RGBA8> zero = { std::vector<RGBA8> zero = {
RGBA8::kZero, RGBA8::kZero, // RGBA8::kZero, RGBA8::kZero, //
RGBA8::kZero, RGBA8::kZero, // RGBA8::kZero, RGBA8::kZero, //
@ -348,7 +348,7 @@ TEST_P(DepthBiasTests, PositiveSlopeBiasOn24bit) {
RunDepthBiasTest(wgpu::TextureFormat::Depth24PlusStencil8, 0.4f, QuadAngle::TiltedX, 0, 1, 0); RunDepthBiasTest(wgpu::TextureFormat::Depth24PlusStencil8, 0.4f, QuadAngle::TiltedX, 0, 1, 0);
// Only the top half of the quad has a depth > 0.4 clear // Only the top half of the quad has a depth > 0.4 clear
// TODO(enrico.galli@intel.com): Switch to depth sampling once feature has been enabled. // TODO(crbug.com/dawn/820): Switch to depth sampling once feature has been enabled.
std::vector<RGBA8> expected = { std::vector<RGBA8> expected = {
RGBA8::kRed, RGBA8::kRed, // RGBA8::kRed, RGBA8::kRed, //
RGBA8::kZero, RGBA8::kZero, // RGBA8::kZero, RGBA8::kZero, //

View File

@ -215,7 +215,7 @@ class DepthStencilCopyTests : public DawnTest {
uploadBufferDesc.usage = wgpu::BufferUsage::CopySrc; uploadBufferDesc.usage = wgpu::BufferUsage::CopySrc;
uploadBufferDesc.mappedAtCreation = true; uploadBufferDesc.mappedAtCreation = true;
// TODO(enga): Use WriteTexture when implemented on OpenGL. // TODO(crbug.com/dawn/822): Use WriteTexture when implemented on OpenGL.
wgpu::Buffer uploadBuffer = device.CreateBuffer(&uploadBufferDesc); wgpu::Buffer uploadBuffer = device.CreateBuffer(&uploadBufferDesc);
uint8_t* dst = static_cast<uint8_t*>(uploadBuffer.GetMappedRange()); uint8_t* dst = static_cast<uint8_t*>(uploadBuffer.GetMappedRange());
float* src = expected.data(); float* src = expected.data();
@ -269,7 +269,7 @@ class DepthStencilCopyTests : public DawnTest {
depthStencil->depthCompare = wgpu::CompareFunction::Equal; depthStencil->depthCompare = wgpu::CompareFunction::Equal;
pipelineDescriptor.cTargets[0].format = colorTexDesc.format; pipelineDescriptor.cTargets[0].format = colorTexDesc.format;
// TODO(jiawei.shao@intel.com): The Intel Mesa Vulkan driver can't set gl_FragDepth unless // TODO(crbug.com/dawn/821): The Intel Mesa Vulkan driver can't set gl_FragDepth unless
// depthWriteEnabled == true. This either needs to be fixed in the driver or restricted by // depthWriteEnabled == true. This either needs to be fixed in the driver or restricted by
// the WebGPU API. // the WebGPU API.
depthStencil->depthWriteEnabled = true; depthStencil->depthWriteEnabled = true;
@ -353,8 +353,8 @@ TEST_P(DepthStencilCopyTests, FromStencilAspect) {
// Test copying the non-zero mip, stencil-only aspect into a buffer. // Test copying the non-zero mip, stencil-only aspect into a buffer.
TEST_P(DepthStencilCopyTests, FromNonZeroMipStencilAspect) { TEST_P(DepthStencilCopyTests, FromNonZeroMipStencilAspect) {
// TODO(enga): Figure out why this fails on MacOS Intel Iris. // TODO(crbug.com/dawn/704): Readback after clear via stencil copy does not work
// It passes on AMD Radeon Pro and Intel HD Graphics 630. // on some Intel drivers.
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel()); DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
// TODO(crbug.com/dawn/667): Work around some platforms' inability to read back stencil. // TODO(crbug.com/dawn/667): Work around some platforms' inability to read back stencil.
@ -396,8 +396,8 @@ TEST_P(DepthStencilCopyTests, FromNonZeroMipDepthAspect) {
// Test copying both aspects in a T2T copy, then copying only stencil. // Test copying both aspects in a T2T copy, then copying only stencil.
TEST_P(DepthStencilCopyTests, T2TBothAspectsThenCopyStencil) { TEST_P(DepthStencilCopyTests, T2TBothAspectsThenCopyStencil) {
// TODO(enga): Figure out why this fails on MacOS Intel Iris. // TODO(crbug.com/dawn/704): Readback after clear via stencil copy does not work
// It passes on AMD Radeon Pro and Intel HD Graphics 630. // on some Intel drivers.
// Maybe has to do with the RenderAttachment usage. Notably, a later test // Maybe has to do with the RenderAttachment usage. Notably, a later test
// T2TBothAspectsThenCopyNonRenderableStencil does not use RenderAttachment and works correctly. // T2TBothAspectsThenCopyNonRenderableStencil does not use RenderAttachment and works correctly.
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel()); DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
@ -449,8 +449,8 @@ TEST_P(DepthStencilCopyTests, T2TBothAspectsThenCopyNonRenderableStencil) {
// Test that part of a non-renderable, non-zero mip stencil aspect can be copied. Notably, // Test that part of a non-renderable, non-zero mip stencil aspect can be copied. Notably,
// this test has different behavior on some platforms than T2TBothAspectsThenCopyStencil. // this test has different behavior on some platforms than T2TBothAspectsThenCopyStencil.
TEST_P(DepthStencilCopyTests, T2TBothAspectsThenCopyNonRenderableNonZeroMipStencil) { TEST_P(DepthStencilCopyTests, T2TBothAspectsThenCopyNonRenderableNonZeroMipStencil) {
// TODO(enga): Figure out why this fails on MacOS Intel Iris. /// TODO(crbug.com/dawn/704): Readback after clear via stencil copy does not work
// It passes on AMD Radeon Pro and Intel HD Graphics 630. // on some Intel drivers.
// Maybe has to do with the non-zero mip. Notably, a previous test // Maybe has to do with the non-zero mip. Notably, a previous test
// T2TBothAspectsThenCopyNonRenderableStencil works correctly. // T2TBothAspectsThenCopyNonRenderableStencil works correctly.
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel()); DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
@ -539,8 +539,8 @@ TEST_P(DepthStencilCopyTests, T2TBothAspectsThenCopyStencilThenDepth) {
// Test copying both aspects in a T2T copy, then copying depth, then copying stencil // Test copying both aspects in a T2T copy, then copying depth, then copying stencil
TEST_P(DepthStencilCopyTests, T2TBothAspectsThenCopyDepthThenStencil) { TEST_P(DepthStencilCopyTests, T2TBothAspectsThenCopyDepthThenStencil) {
// TODO(enga): Figure out why this fails on MacOS Intel Iris. // TODO(crbug.com/dawn/704): Readback after clear via stencil copy does not work
// It passes on AMD Radeon Pro and Intel HD Graphics 630. // on some Intel drivers.
// It seems like the depth readback copy mutates the stencil because the previous // It seems like the depth readback copy mutates the stencil because the previous
// test T2TBothAspectsThenCopyStencil passes. // test T2TBothAspectsThenCopyStencil passes.
// T2TBothAspectsThenCopyStencilThenDepth which checks stencil first also passes. // T2TBothAspectsThenCopyStencilThenDepth which checks stencil first also passes.
@ -583,8 +583,8 @@ TEST_P(DepthStencilCopyTests, ToStencilAspect) {
DAWN_TEST_UNSUPPORTED_IF(IsOpenGL()); DAWN_TEST_UNSUPPORTED_IF(IsOpenGL());
DAWN_TEST_UNSUPPORTED_IF(IsOpenGLES()); DAWN_TEST_UNSUPPORTED_IF(IsOpenGLES());
// TODO(enga): Figure out why this fails on MacOS Intel Iris. // TODO(crbug.com/dawn/704): Readback after clear via stencil copy does not work
// It passes on AMD Radeon Pro and Intel HD Graphics 630. // on some Intel drivers.
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel()); DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
// Create a stencil texture // Create a stencil texture

View File

@ -192,8 +192,8 @@ class DepthStencilSamplingTest : public DawnTest {
return textureSampleCompare(tex, samp, vec2<f32>(0.5, 0.5), uniforms.compareRef); return textureSampleCompare(tex, samp, vec2<f32>(0.5, 0.5), uniforms.compareRef);
})"); })");
// TODO(dawn:367): Cannot use GetBindGroupLayout for comparison samplers without shader // TODO(crbug.com/dawn/367): Cannot use GetBindGroupLayout for comparison samplers without
// reflection data. // shader reflection data.
wgpu::BindGroupLayout bgl = utils::MakeBindGroupLayout( wgpu::BindGroupLayout bgl = utils::MakeBindGroupLayout(
device, {{0, wgpu::ShaderStage::Fragment, wgpu::SamplerBindingType::Comparison}, device, {{0, wgpu::ShaderStage::Fragment, wgpu::SamplerBindingType::Comparison},
{1, wgpu::ShaderStage::Fragment, wgpu::TextureSampleType::Depth}, {1, wgpu::ShaderStage::Fragment, wgpu::TextureSampleType::Depth},
@ -227,7 +227,7 @@ class DepthStencilSamplingTest : public DawnTest {
samplerResult.value = textureSampleCompare(tex, samp, vec2<f32>(0.5, 0.5), uniforms.compareRef); samplerResult.value = textureSampleCompare(tex, samp, vec2<f32>(0.5, 0.5), uniforms.compareRef);
})"); })");
// TODO(dawn:367): Cannot use GetBindGroupLayout without shader reflection data. // TODO(crbug.com/dawn/367): Cannot use GetBindGroupLayout without shader reflection data.
wgpu::BindGroupLayout bgl = utils::MakeBindGroupLayout( wgpu::BindGroupLayout bgl = utils::MakeBindGroupLayout(
device, {{0, wgpu::ShaderStage::Compute, wgpu::SamplerBindingType::Comparison}, device, {{0, wgpu::ShaderStage::Compute, wgpu::SamplerBindingType::Comparison},
{1, wgpu::ShaderStage::Compute, wgpu::TextureSampleType::Depth}, {1, wgpu::ShaderStage::Compute, wgpu::TextureSampleType::Depth},

View File

@ -159,10 +159,10 @@ TEST_P(IOSurfaceValidationTests, PlaneTooLarge) {
} }
// Test an error occurs if the descriptor dimension isn't 2D // Test an error occurs if the descriptor dimension isn't 2D
// TODO(cwallez@chromium.org): Reenable when 1D or 3D textures are implemented // TODO(crbug.com/dawn/814): Test 1D textures when implemented
TEST_P(IOSurfaceValidationTests, DISABLED_InvalidTextureDimension) { TEST_P(IOSurfaceValidationTests, InvalidTextureDimension) {
DAWN_TEST_UNSUPPORTED_IF(UsesWire()); DAWN_TEST_UNSUPPORTED_IF(UsesWire());
descriptor.dimension = wgpu::TextureDimension::e2D; descriptor.dimension = wgpu::TextureDimension::e3D;
ASSERT_DEVICE_ERROR(wgpu::Texture texture = ASSERT_DEVICE_ERROR(wgpu::Texture texture =
WrapIOSurface(&descriptor, defaultIOSurface.get(), 0)); WrapIOSurface(&descriptor, defaultIOSurface.get(), 0));

View File

@ -418,7 +418,7 @@ TEST_P(MultisampledRenderingTest, ResolveInAnotherRenderPass) {
// Test doing MSAA resolve into multiple resolve targets works correctly. // Test doing MSAA resolve into multiple resolve targets works correctly.
TEST_P(MultisampledRenderingTest, ResolveIntoMultipleResolveTargets) { TEST_P(MultisampledRenderingTest, ResolveIntoMultipleResolveTargets) {
// TODO(dawn:462): Investigate backend validation failure. // TODO(dawn:462): Issue in the D3D12 validation layers.
DAWN_SUPPRESS_TEST_IF(IsD3D12() && IsNvidia() && IsBackendValidationEnabled()); DAWN_SUPPRESS_TEST_IF(IsD3D12() && IsNvidia() && IsBackendValidationEnabled());
wgpu::TextureView multisampledColorView2 = wgpu::TextureView multisampledColorView2 =
@ -496,7 +496,7 @@ TEST_P(MultisampledRenderingTest, ResolveOneMultisampledTextureTwice) {
// Test using a layer of a 2D texture as resolve target works correctly. // Test using a layer of a 2D texture as resolve target works correctly.
TEST_P(MultisampledRenderingTest, ResolveIntoOneMipmapLevelOf2DTexture) { TEST_P(MultisampledRenderingTest, ResolveIntoOneMipmapLevelOf2DTexture) {
// TODO(dawn:462): Investigate backend validation failure. // TODO(dawn:462): Issue in the D3D12 validation layers.
DAWN_SUPPRESS_TEST_IF(IsD3D12() && IsBackendValidationEnabled()); DAWN_SUPPRESS_TEST_IF(IsD3D12() && IsBackendValidationEnabled());
constexpr uint32_t kBaseMipLevel = 2; constexpr uint32_t kBaseMipLevel = 2;
@ -534,7 +534,7 @@ TEST_P(MultisampledRenderingTest, ResolveIntoOneMipmapLevelOf2DTexture) {
// Test using a level or a layer of a 2D array texture as resolve target works correctly. // Test using a level or a layer of a 2D array texture as resolve target works correctly.
TEST_P(MultisampledRenderingTest, ResolveInto2DArrayTexture) { TEST_P(MultisampledRenderingTest, ResolveInto2DArrayTexture) {
// TODO(dawn:462): Investigate backend validation failure. // TODO(dawn:462): Issue in the D3D12 validation layers.
DAWN_SUPPRESS_TEST_IF(IsD3D12() && IsBackendValidationEnabled()); DAWN_SUPPRESS_TEST_IF(IsD3D12() && IsBackendValidationEnabled());
wgpu::TextureView multisampledColorView2 = wgpu::TextureView multisampledColorView2 =
@ -762,7 +762,7 @@ TEST_P(MultisampledRenderingTest, ResolveInto2DTextureWithSampleMaskAndShaderOut
// supported on some platforms. // supported on some platforms.
DAWN_TEST_UNSUPPORTED_IF(HasToggleEnabled("disable_sample_variables")); DAWN_TEST_UNSUPPORTED_IF(HasToggleEnabled("disable_sample_variables"));
// TODO(cwallez@chromium.org): Fails on Metal / D3D12 because SPIRV-Cross produces bad shaders // TODO(crbug.com/dawn/571): Fails on Metal / D3D12 because SPIRV-Cross produces bad shaders
// for the SPIR-V outputted by Tint. Reenable once we use Tint's MSL / HLSL generators. // for the SPIR-V outputted by Tint. Reenable once we use Tint's MSL / HLSL generators.
DAWN_SUPPRESS_TEST_IF(IsD3D12() || IsMetal()); DAWN_SUPPRESS_TEST_IF(IsD3D12() || IsMetal());
@ -824,7 +824,7 @@ TEST_P(MultisampledRenderingTest, ResolveIntoMultipleResolveTargetsWithShaderOut
// supported on some platforms. // supported on some platforms.
DAWN_TEST_UNSUPPORTED_IF(HasToggleEnabled("disable_sample_variables")); DAWN_TEST_UNSUPPORTED_IF(HasToggleEnabled("disable_sample_variables"));
// TODO(cwallez@chromium.org): Fails on Metal / D3D12 because SPIRV-Cross produces bad shaders // TODO(crbug.com/dawn/571): Fails on Metal / D3D12 because SPIRV-Cross produces bad shaders
// for the SPIR-V outputted by Tint. Reenable once we use Tint's MSL / HLSL generators. // for the SPIR-V outputted by Tint. Reenable once we use Tint's MSL / HLSL generators.
DAWN_SUPPRESS_TEST_IF(IsD3D12() || IsMetal()); DAWN_SUPPRESS_TEST_IF(IsD3D12() || IsMetal());

View File

@ -98,8 +98,8 @@ class OpArrayLengthTest : public DawnTest {
// Test OpArrayLength in the compute stage // Test OpArrayLength in the compute stage
TEST_P(OpArrayLengthTest, Compute) { TEST_P(OpArrayLengthTest, Compute) {
// TODO(cwallez@chromium.org): The computations for length() of unsized buffer is broken on // TODO(crbug.com/dawn/197): The computations for length() of unsized buffer is broken on
// Nvidia OpenGL. See https://bugs.chromium.org/p/dawn/issues/detail?id=197 // Nvidia OpenGL.
DAWN_SUPPRESS_TEST_IF(IsNvidia() && (IsOpenGL() || IsOpenGLES())); DAWN_SUPPRESS_TEST_IF(IsNvidia() && (IsOpenGL() || IsOpenGLES()));
// Create a buffer to hold the result sizes and create a bindgroup for it. // Create a buffer to hold the result sizes and create a bindgroup for it.
@ -155,8 +155,8 @@ TEST_P(OpArrayLengthTest, Compute) {
// Test OpArrayLength in the fragment stage // Test OpArrayLength in the fragment stage
TEST_P(OpArrayLengthTest, Fragment) { TEST_P(OpArrayLengthTest, Fragment) {
// TODO(cwallez@chromium.org): The computations for length() of unsized buffer is broken on // TODO(crbug.com/dawn/197): The computations for length() of unsized buffer is broken on
// Nvidia OpenGL. See https://bugs.chromium.org/p/dawn/issues/detail?id=197 // Nvidia OpenGL.
DAWN_SUPPRESS_TEST_IF(IsNvidia() && (IsOpenGL() || IsOpenGLES())); DAWN_SUPPRESS_TEST_IF(IsNvidia() && (IsOpenGL() || IsOpenGLES()));
utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, 1, 1); utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, 1, 1);
@ -206,9 +206,8 @@ TEST_P(OpArrayLengthTest, Fragment) {
// Test OpArrayLength in the vertex stage // Test OpArrayLength in the vertex stage
TEST_P(OpArrayLengthTest, Vertex) { TEST_P(OpArrayLengthTest, Vertex) {
// TODO(cwallez@chromium.org): The computations for length() of unsized buffer is broken on // TODO(crbug.com/dawn/197): The computations for length() of unsized buffer is broken on
// Nvidia OpenGL. Also failing on all GLES (NV, Intel, SwANGLE). See // Nvidia OpenGL. Also failing on all GLES (NV, Intel, SwANGLE).
// https://bugs.chromium.org/p/dawn/issues/detail?id=197
DAWN_SUPPRESS_TEST_IF(IsNvidia() && IsOpenGL()); DAWN_SUPPRESS_TEST_IF(IsNvidia() && IsOpenGL());
DAWN_SUPPRESS_TEST_IF(IsOpenGLES()); DAWN_SUPPRESS_TEST_IF(IsOpenGLES());

View File

@ -760,8 +760,8 @@ TEST_P(TimestampQueryTests, ResolveToBufferWithOffset) {
// the issue is fixed. // the issue is fixed.
DAWN_SUPPRESS_TEST_IF(IsWindows() && IsVulkan() && IsIntel()); DAWN_SUPPRESS_TEST_IF(IsWindows() && IsVulkan() && IsIntel());
// TODO(hao.x.li@intel.com): Crash occurs if we only call WriteTimestamp in a command encoder // TODO(crbug.com/dawn/545): Crash occurs if we only call WriteTimestamp in a command encoder
// without any copy commands on Metal on AMD GPU. See https://crbug.com/dawn/545. // without any copy commands on Metal on AMD GPU.
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsAMD()); DAWN_SUPPRESS_TEST_IF(IsMetal() && IsAMD());
constexpr uint32_t kQueryCount = 2; constexpr uint32_t kQueryCount = 2;

View File

@ -112,8 +112,7 @@ TEST_P(QueueWriteBufferTests, ManyWriteBuffer) {
// fails the test. Since GPUs may or may not complete by then, this test must be disabled OR // fails the test. Since GPUs may or may not complete by then, this test must be disabled OR
// modified to be well-below the timeout limit. // modified to be well-below the timeout limit.
// TODO(https://bugs.chromium.org/p/dawn/issues/detail?id=228): Re-enable // TODO(crbug.com/dawn/228): Re-enable once the issue with Metal on 10.14.6 is fixed.
// once the issue with Metal on 10.14.6 is fixed.
DAWN_SUPPRESS_TEST_IF(IsMacOS() && IsIntel() && IsMetal()); DAWN_SUPPRESS_TEST_IF(IsMacOS() && IsIntel() && IsMetal());
// The Vulkan Validation Layers' memory barrier validation keeps track of every range written // The Vulkan Validation Layers' memory barrier validation keeps track of every range written

View File

@ -50,12 +50,10 @@ TEST_P(ShaderFloat16Tests, Basic16BitFloatFeaturesTest) {
wgpu::Buffer bufferIn = utils::CreateBufferFromData(device, &bufferInData, sizeof(bufferInData), wgpu::Buffer bufferIn = utils::CreateBufferFromData(device, &bufferInData, sizeof(bufferInData),
wgpu::BufferUsage::Storage); wgpu::BufferUsage::Storage);
// TODO(xinghua.cao@intel.com): the zero for padding is required now. No need to wgpu::BufferDescriptor bufferDesc;
// createBufferFromData once buffer lazy-zero-init is done. bufferDesc.size = 2 * sizeof(uint16_t);
uint16_t bufferOutData[] = {Float32ToFloat16(0.0), Float32ToFloat16(0.0)}; bufferDesc.usage = wgpu::BufferUsage::Storage | wgpu::BufferUsage::CopySrc;
wgpu::Buffer bufferOut = wgpu::Buffer bufferOut = device.CreateBuffer(&bufferDesc);
utils::CreateBufferFromData(device, &bufferOutData, sizeof(bufferOutData),
wgpu::BufferUsage::Storage | wgpu::BufferUsage::CopySrc);
// SPIR-V ASM produced by glslang for the following fragment shader: // SPIR-V ASM produced by glslang for the following fragment shader:
// //
@ -157,7 +155,7 @@ TEST_P(ShaderFloat16Tests, Basic16BitFloatFeaturesTest) {
{ {
{0, uniformBuffer, 0, sizeof(uniformData)}, {0, uniformBuffer, 0, sizeof(uniformData)},
{1, bufferIn, 0, sizeof(bufferInData)}, {1, bufferIn, 0, sizeof(bufferInData)},
{2, bufferOut, 0, sizeof(bufferOutData)}, {2, bufferOut},
}); });
wgpu::CommandEncoder encoder = device.CreateCommandEncoder(); wgpu::CommandEncoder encoder = device.CreateCommandEncoder();

View File

@ -552,8 +552,6 @@ fn IsEqualTo(pixel : vec4<f32>, expected : vec4<f32>) -> bool {
wgpu::CommandEncoder encoder = device.CreateCommandEncoder(); wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
// TODO(jiawei.shao@intel.com): remove the render attachment when Dawn supports beginning a
// render pass with no attachments.
wgpu::Texture dummyOutputTexture = wgpu::Texture dummyOutputTexture =
CreateTexture(kRenderAttachmentFormat, CreateTexture(kRenderAttachmentFormat,
wgpu::TextureUsage::RenderAttachment | wgpu::TextureUsage::CopySrc, 1, 1); wgpu::TextureUsage::RenderAttachment | wgpu::TextureUsage::CopySrc, 1, 1);

View File

@ -786,9 +786,6 @@ TEST_P(TextureFormatTest, RGB9E5Ufloat) {
// This format is not renderable. // This format is not renderable.
} }
// TODO(cwallez@chromium.org): Add tests for depth-stencil formats when we know if they are copyable
// in WebGPU.
DAWN_INSTANTIATE_TEST(TextureFormatTest, DAWN_INSTANTIATE_TEST(TextureFormatTest,
D3D12Backend(), D3D12Backend(),
MetalBackend(), MetalBackend(),

View File

@ -586,7 +586,8 @@ TEST_P(TextureZeroInitTest, RenderingLoadingDepthStencil) {
// Test that clear state is tracked independently for depth/stencil textures. // Test that clear state is tracked independently for depth/stencil textures.
TEST_P(TextureZeroInitTest, IndependentDepthStencilLoadAfterDiscard) { TEST_P(TextureZeroInitTest, IndependentDepthStencilLoadAfterDiscard) {
// TODO(enga): Figure out why this fails on Metal Intel. // TODO(crbug.com/dawn/704): Readback after clear via stencil copy does not work
// on some Intel drivers.
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel()); DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
wgpu::TextureDescriptor depthStencilDescriptor = CreateTextureDescriptor( wgpu::TextureDescriptor depthStencilDescriptor = CreateTextureDescriptor(

View File

@ -49,6 +49,9 @@ class VertexFormatTest : public DawnTest {
void SetUp() override { void SetUp() override {
DawnTest::SetUp(); DawnTest::SetUp();
// TODO(crbug.com/dawn/259): Failing because of a SPIRV-Cross issue.
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
renderPass = utils::CreateBasicRenderPass(device, kRTSize, kRTSize); renderPass = utils::CreateBasicRenderPass(device, kRTSize, kRTSize);
} }
@ -398,10 +401,6 @@ class VertexFormatTest : public DawnTest {
}; };
TEST_P(VertexFormatTest, Uint8x2) { TEST_P(VertexFormatTest, Uint8x2) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<uint8_t> vertexData = { std::vector<uint8_t> vertexData = {
std::numeric_limits<uint8_t>::max(), std::numeric_limits<uint8_t>::max(),
0, 0,
@ -425,10 +424,6 @@ TEST_P(VertexFormatTest, Uint8x2) {
} }
TEST_P(VertexFormatTest, Uint8x4) { TEST_P(VertexFormatTest, Uint8x4) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<uint8_t> vertexData = { std::vector<uint8_t> vertexData = {
std::numeric_limits<uint8_t>::max(), std::numeric_limits<uint8_t>::max(),
0, 0,
@ -448,10 +443,6 @@ TEST_P(VertexFormatTest, Uint8x4) {
} }
TEST_P(VertexFormatTest, Sint8x2) { TEST_P(VertexFormatTest, Sint8x2) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<int8_t> vertexData = { std::vector<int8_t> vertexData = {
std::numeric_limits<int8_t>::max(), std::numeric_limits<int8_t>::max(),
0, 0,
@ -475,10 +466,6 @@ TEST_P(VertexFormatTest, Sint8x2) {
} }
TEST_P(VertexFormatTest, Sint8x4) { TEST_P(VertexFormatTest, Sint8x4) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<int8_t> vertexData = { std::vector<int8_t> vertexData = {
std::numeric_limits<int8_t>::max(), std::numeric_limits<int8_t>::max(),
0, 0,
@ -498,10 +485,6 @@ TEST_P(VertexFormatTest, Sint8x4) {
} }
TEST_P(VertexFormatTest, Unorm8x2) { TEST_P(VertexFormatTest, Unorm8x2) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<uint8_t> vertexData = { std::vector<uint8_t> vertexData = {
std::numeric_limits<uint8_t>::max(), std::numeric_limits<uint8_t>::max(),
std::numeric_limits<uint8_t>::min(), std::numeric_limits<uint8_t>::min(),
@ -528,10 +511,6 @@ TEST_P(VertexFormatTest, Unorm8x2) {
} }
TEST_P(VertexFormatTest, Unorm8x4) { TEST_P(VertexFormatTest, Unorm8x4) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<uint8_t> vertexData = {std::numeric_limits<uint8_t>::max(), std::vector<uint8_t> vertexData = {std::numeric_limits<uint8_t>::max(),
std::numeric_limits<uint8_t>::min(), std::numeric_limits<uint8_t>::min(),
0, 0,
@ -549,10 +528,6 @@ TEST_P(VertexFormatTest, Unorm8x4) {
} }
TEST_P(VertexFormatTest, Snorm8x2) { TEST_P(VertexFormatTest, Snorm8x2) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<int8_t> vertexData = { std::vector<int8_t> vertexData = {
std::numeric_limits<int8_t>::max(), std::numeric_limits<int8_t>::max(),
std::numeric_limits<int8_t>::min(), std::numeric_limits<int8_t>::min(),
@ -581,10 +556,6 @@ TEST_P(VertexFormatTest, Snorm8x2) {
} }
TEST_P(VertexFormatTest, Snorm8x4) { TEST_P(VertexFormatTest, Snorm8x4) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<int8_t> vertexData = {std::numeric_limits<int8_t>::max(), std::vector<int8_t> vertexData = {std::numeric_limits<int8_t>::max(),
std::numeric_limits<int8_t>::min(), std::numeric_limits<int8_t>::min(),
0, 0,
@ -602,10 +573,6 @@ TEST_P(VertexFormatTest, Snorm8x4) {
} }
TEST_P(VertexFormatTest, Uint16x2) { TEST_P(VertexFormatTest, Uint16x2) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<uint16_t> vertexData = {std::numeric_limits<uint16_t>::max(), std::vector<uint16_t> vertexData = {std::numeric_limits<uint16_t>::max(),
0, 0,
std::numeric_limits<uint16_t>::min(), std::numeric_limits<uint16_t>::min(),
@ -617,10 +584,6 @@ TEST_P(VertexFormatTest, Uint16x2) {
} }
TEST_P(VertexFormatTest, Uint16x4) { TEST_P(VertexFormatTest, Uint16x4) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<uint16_t> vertexData = { std::vector<uint16_t> vertexData = {
std::numeric_limits<uint16_t>::max(), std::numeric_limits<uint16_t>::max(),
std::numeric_limits<uint8_t>::max(), std::numeric_limits<uint8_t>::max(),
@ -640,10 +603,6 @@ TEST_P(VertexFormatTest, Uint16x4) {
} }
TEST_P(VertexFormatTest, Sint16x2) { TEST_P(VertexFormatTest, Sint16x2) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<int16_t> vertexData = {std::numeric_limits<int16_t>::max(), std::vector<int16_t> vertexData = {std::numeric_limits<int16_t>::max(),
0, 0,
std::numeric_limits<int16_t>::min(), std::numeric_limits<int16_t>::min(),
@ -655,10 +614,6 @@ TEST_P(VertexFormatTest, Sint16x2) {
} }
TEST_P(VertexFormatTest, Sint16x4) { TEST_P(VertexFormatTest, Sint16x4) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<int16_t> vertexData = { std::vector<int16_t> vertexData = {
std::numeric_limits<int16_t>::max(), std::numeric_limits<int16_t>::max(),
0, 0,
@ -678,10 +633,6 @@ TEST_P(VertexFormatTest, Sint16x4) {
} }
TEST_P(VertexFormatTest, Unorm16x2) { TEST_P(VertexFormatTest, Unorm16x2) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<uint16_t> vertexData = {std::numeric_limits<uint16_t>::max(), std::vector<uint16_t> vertexData = {std::numeric_limits<uint16_t>::max(),
std::numeric_limits<uint16_t>::min(), std::numeric_limits<uint16_t>::min(),
std::numeric_limits<uint16_t>::max() / 2u, std::numeric_limits<uint16_t>::max() / 2u,
@ -693,10 +644,6 @@ TEST_P(VertexFormatTest, Unorm16x2) {
} }
TEST_P(VertexFormatTest, Unorm16x4) { TEST_P(VertexFormatTest, Unorm16x4) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<uint16_t> vertexData = {std::numeric_limits<uint16_t>::max(), std::vector<uint16_t> vertexData = {std::numeric_limits<uint16_t>::max(),
std::numeric_limits<uint16_t>::min(), std::numeric_limits<uint16_t>::min(),
0, 0,
@ -714,10 +661,6 @@ TEST_P(VertexFormatTest, Unorm16x4) {
} }
TEST_P(VertexFormatTest, Snorm16x2) { TEST_P(VertexFormatTest, Snorm16x2) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<int16_t> vertexData = {std::numeric_limits<int16_t>::max(), std::vector<int16_t> vertexData = {std::numeric_limits<int16_t>::max(),
std::numeric_limits<int16_t>::min(), std::numeric_limits<int16_t>::min(),
std::numeric_limits<int16_t>::max() / 2, std::numeric_limits<int16_t>::max() / 2,
@ -729,10 +672,6 @@ TEST_P(VertexFormatTest, Snorm16x2) {
} }
TEST_P(VertexFormatTest, Snorm16x4) { TEST_P(VertexFormatTest, Snorm16x4) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<int16_t> vertexData = {std::numeric_limits<int16_t>::max(), std::vector<int16_t> vertexData = {std::numeric_limits<int16_t>::max(),
std::numeric_limits<int16_t>::min(), std::numeric_limits<int16_t>::min(),
0, 0,
@ -750,10 +689,6 @@ TEST_P(VertexFormatTest, Snorm16x4) {
} }
TEST_P(VertexFormatTest, Float16x2) { TEST_P(VertexFormatTest, Float16x2) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
// Fails on NVIDIA's Vulkan drivers on CQ but passes locally. // Fails on NVIDIA's Vulkan drivers on CQ but passes locally.
DAWN_SUPPRESS_TEST_IF(IsVulkan() && IsNvidia()); DAWN_SUPPRESS_TEST_IF(IsVulkan() && IsNvidia());
@ -764,10 +699,6 @@ TEST_P(VertexFormatTest, Float16x2) {
} }
TEST_P(VertexFormatTest, Float16x4) { TEST_P(VertexFormatTest, Float16x4) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
// Fails on NVIDIA's Vulkan drivers on CQ but passes locally. // Fails on NVIDIA's Vulkan drivers on CQ but passes locally.
DAWN_SUPPRESS_TEST_IF(IsVulkan() && IsNvidia()); DAWN_SUPPRESS_TEST_IF(IsVulkan() && IsNvidia());
@ -778,10 +709,6 @@ TEST_P(VertexFormatTest, Float16x4) {
} }
TEST_P(VertexFormatTest, Float32) { TEST_P(VertexFormatTest, Float32) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<float> vertexData = {1.3f, +0.0f, -0.0f}; std::vector<float> vertexData = {1.3f, +0.0f, -0.0f};
DoVertexFormatTest(wgpu::VertexFormat::Float32, vertexData, vertexData); DoVertexFormatTest(wgpu::VertexFormat::Float32, vertexData, vertexData);
@ -792,10 +719,6 @@ TEST_P(VertexFormatTest, Float32) {
} }
TEST_P(VertexFormatTest, Float32x2) { TEST_P(VertexFormatTest, Float32x2) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
// Fails on NVIDIA's Vulkan drivers on CQ but passes locally. // Fails on NVIDIA's Vulkan drivers on CQ but passes locally.
DAWN_SUPPRESS_TEST_IF(IsVulkan() && IsNvidia()); DAWN_SUPPRESS_TEST_IF(IsVulkan() && IsNvidia());
@ -805,10 +728,6 @@ TEST_P(VertexFormatTest, Float32x2) {
} }
TEST_P(VertexFormatTest, Float32x3) { TEST_P(VertexFormatTest, Float32x3) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
// Fails on NVIDIA's Vulkan drivers on CQ but passes locally. // Fails on NVIDIA's Vulkan drivers on CQ but passes locally.
DAWN_SUPPRESS_TEST_IF(IsVulkan() && IsNvidia()); DAWN_SUPPRESS_TEST_IF(IsVulkan() && IsNvidia());
@ -820,10 +739,6 @@ TEST_P(VertexFormatTest, Float32x3) {
} }
TEST_P(VertexFormatTest, Float32x4) { TEST_P(VertexFormatTest, Float32x4) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<float> vertexData = { std::vector<float> vertexData = {
19.2f, -19.3f, +0.0f, 1.0f, -0.0f, 1.0f, 1.3f, -1.0f, 13.078f, 21.1965f, -1.1f, -1.2f, 19.2f, -19.3f, +0.0f, 1.0f, -0.0f, 1.0f, 1.3f, -1.0f, 13.078f, 21.1965f, -1.1f, -1.2f,
}; };
@ -832,10 +747,6 @@ TEST_P(VertexFormatTest, Float32x4) {
} }
TEST_P(VertexFormatTest, Uint32) { TEST_P(VertexFormatTest, Uint32) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<uint32_t> vertexData = {std::numeric_limits<uint32_t>::max(), std::vector<uint32_t> vertexData = {std::numeric_limits<uint32_t>::max(),
std::numeric_limits<uint16_t>::max(), std::numeric_limits<uint16_t>::max(),
std::numeric_limits<uint8_t>::max()}; std::numeric_limits<uint8_t>::max()};
@ -844,10 +755,6 @@ TEST_P(VertexFormatTest, Uint32) {
} }
TEST_P(VertexFormatTest, Uint32x2) { TEST_P(VertexFormatTest, Uint32x2) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<uint32_t> vertexData = {std::numeric_limits<uint32_t>::max(), 32, std::vector<uint32_t> vertexData = {std::numeric_limits<uint32_t>::max(), 32,
std::numeric_limits<uint16_t>::max(), 64, std::numeric_limits<uint16_t>::max(), 64,
std::numeric_limits<uint8_t>::max(), 128}; std::numeric_limits<uint8_t>::max(), 128};
@ -856,10 +763,6 @@ TEST_P(VertexFormatTest, Uint32x2) {
} }
TEST_P(VertexFormatTest, Uint32x3) { TEST_P(VertexFormatTest, Uint32x3) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<uint32_t> vertexData = {std::numeric_limits<uint32_t>::max(), 32, 64, std::vector<uint32_t> vertexData = {std::numeric_limits<uint32_t>::max(), 32, 64,
std::numeric_limits<uint16_t>::max(), 164, 128, std::numeric_limits<uint16_t>::max(), 164, 128,
std::numeric_limits<uint8_t>::max(), 1283, 256}; std::numeric_limits<uint8_t>::max(), 1283, 256};
@ -868,10 +771,6 @@ TEST_P(VertexFormatTest, Uint32x3) {
} }
TEST_P(VertexFormatTest, Uint32x4) { TEST_P(VertexFormatTest, Uint32x4) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<uint32_t> vertexData = {std::numeric_limits<uint32_t>::max(), 32, 64, 5460, std::vector<uint32_t> vertexData = {std::numeric_limits<uint32_t>::max(), 32, 64, 5460,
std::numeric_limits<uint16_t>::max(), 164, 128, 0, std::numeric_limits<uint16_t>::max(), 164, 128, 0,
std::numeric_limits<uint8_t>::max(), 1283, 256, 4567}; std::numeric_limits<uint8_t>::max(), 1283, 256, 4567};
@ -880,10 +779,6 @@ TEST_P(VertexFormatTest, Uint32x4) {
} }
TEST_P(VertexFormatTest, Sint32) { TEST_P(VertexFormatTest, Sint32) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<int32_t> vertexData = {std::numeric_limits<int32_t>::max(), std::vector<int32_t> vertexData = {std::numeric_limits<int32_t>::max(),
std::numeric_limits<int32_t>::min(), std::numeric_limits<int32_t>::min(),
std::numeric_limits<int8_t>::max()}; std::numeric_limits<int8_t>::max()};
@ -892,10 +787,6 @@ TEST_P(VertexFormatTest, Sint32) {
} }
TEST_P(VertexFormatTest, Sint32x2) { TEST_P(VertexFormatTest, Sint32x2) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<int32_t> vertexData = { std::vector<int32_t> vertexData = {
std::numeric_limits<int32_t>::max(), std::numeric_limits<int32_t>::min(), std::numeric_limits<int32_t>::max(), std::numeric_limits<int32_t>::min(),
std::numeric_limits<int16_t>::max(), std::numeric_limits<int16_t>::min(), std::numeric_limits<int16_t>::max(), std::numeric_limits<int16_t>::min(),
@ -905,10 +796,6 @@ TEST_P(VertexFormatTest, Sint32x2) {
} }
TEST_P(VertexFormatTest, Sint32x3) { TEST_P(VertexFormatTest, Sint32x3) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<int32_t> vertexData = { std::vector<int32_t> vertexData = {
std::numeric_limits<int32_t>::max(), std::numeric_limits<int32_t>::min(), 64, std::numeric_limits<int32_t>::max(), std::numeric_limits<int32_t>::min(), 64,
std::numeric_limits<int16_t>::max(), std::numeric_limits<int16_t>::min(), 128, std::numeric_limits<int16_t>::max(), std::numeric_limits<int16_t>::min(), 128,
@ -918,10 +805,6 @@ TEST_P(VertexFormatTest, Sint32x3) {
} }
TEST_P(VertexFormatTest, Sint32x4) { TEST_P(VertexFormatTest, Sint32x4) {
// TODO(cwallez@chromium.org): Failing because of a SPIRV-Cross issue.
// See http://crbug.com/dawn/259
DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel());
std::vector<int32_t> vertexData = { std::vector<int32_t> vertexData = {
std::numeric_limits<int32_t>::max(), std::numeric_limits<int32_t>::min(), 64, -5460, std::numeric_limits<int32_t>::max(), std::numeric_limits<int32_t>::min(), 64, -5460,
std::numeric_limits<int16_t>::max(), std::numeric_limits<int16_t>::min(), -128, 0, std::numeric_limits<int16_t>::max(), std::numeric_limits<int16_t>::min(), -128, 0,