Skip to content

Commit

Permalink
Compat: Add FlexibleTextureViews feature
Browse files Browse the repository at this point in the history
To remove texture views' restrictions in Compat Mode.

Bug: 382071071
Change-Id: Ia3b603b41e5f41b84f39a5d8fa80f6bffb9db744
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/219214
Commit-Queue: Kai Ninomiya <[email protected]>
Auto-Submit: Quyen Le <[email protected]>
Reviewed-by: Kai Ninomiya <[email protected]>
  • Loading branch information
kakashidinho authored and Dawn LUCI CQ committed Dec 19, 2024
1 parent 3bf3e9b commit d17bdb0
Show file tree
Hide file tree
Showing 23 changed files with 224 additions and 105 deletions.
7 changes: 7 additions & 0 deletions docs/dawn/features/flexible_texture_views.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Flexible Texture Views
In Compat Mode, a texture by default:
- Must be created with texture view dimension specified.
- Cannot use different views in the same draw call.
- Cannot create a 2D view of a 2DArray texture.

The `FlexibleTextureViews` feature removes the above restrictions.
3 changes: 2 additions & 1 deletion src/dawn/dawn.json
Original file line number Diff line number Diff line change
Expand Up @@ -2523,7 +2523,8 @@
{"value": 52, "name": "dawn partial load resolve texture", "tags": ["dawn"]},
{"value": 53, "name": "multi draw indirect", "tags": ["dawn"]},
{"value": 54, "name": "clip distances", "tags": ["dawn"]},
{"value": 55, "name": "dawn texel copy buffer row alignment", "tags": ["dawn"]}
{"value": 55, "name": "dawn texel copy buffer row alignment", "tags": ["dawn"]},
{"value": 56, "name": "flexible texture views", "tags": ["dawn"]}
]
},
"filter mode": {
Expand Down
4 changes: 2 additions & 2 deletions src/dawn/native/BindGroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ MaybeError ValidateSampledTextureBinding(DeviceBase* device,
"Dimension (%s) of %s doesn't match the expected dimension (%s).",
entry.textureView->GetDimension(), entry.textureView, layout.viewDimension);

if (device->IsCompatibilityMode()) {
if (!device->HasFlexibleTextureViews()) {
DAWN_INVALID_IF(
view->GetDimension() != texture->GetCompatibilityTextureBindingViewDimension(),
"Dimension (%s) of %s must match textureBindingViewDimension (%s) of "
Expand Down Expand Up @@ -261,7 +261,7 @@ MaybeError ValidateStorageTextureBinding(DeviceBase* device,
DAWN_INVALID_IF(view->GetLevelCount() != 1, "mipLevelCount (%u) of %s expected to be 1.",
view->GetLevelCount(), view);

if (device->IsCompatibilityMode()) {
if (!device->HasFlexibleTextureViews()) {
DAWN_TRY(ValidateCompatibilityModeTextureViewArrayLayer(device, view, texture));
}

Expand Down
2 changes: 1 addition & 1 deletion src/dawn/native/BlitBufferToDepthStencil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ MaybeError BlitR8ToStencil(DeviceBase* device,

// In compat mode view dimension needs to match texture binding view dimension.
wgpu::TextureViewDimension textureViewDimension;
if (device->IsCompatibilityMode()) {
if (!device->HasFlexibleTextureViews()) {
textureViewDimension = dataTexture->GetCompatibilityTextureBindingViewDimension();
} else {
textureViewDimension = wgpu::TextureViewDimension::e2DArray;
Expand Down
2 changes: 1 addition & 1 deletion src/dawn/native/BlitTextureToBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -962,7 +962,7 @@ MaybeError BlitTextureToBuffer(DeviceBase* device,
const Extent3D& copyExtent) {
wgpu::TextureViewDimension textureViewDimension;
{
if (device->IsCompatibilityMode()) {
if (!device->HasFlexibleTextureViews()) {
textureViewDimension = src.texture->GetCompatibilityTextureBindingViewDimension();
} else {
wgpu::TextureDimension dimension = src.texture->GetDimension();
Expand Down
4 changes: 2 additions & 2 deletions src/dawn/native/ComputePassEncoder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ void ComputePassEncoder::APIDispatchWorkgroups(uint32_t workgroupCountX,
DAWN_INCREASE_LIMIT_MESSAGE(GetDevice()->GetAdapter(),
maxComputeWorkgroupsPerDimension, workgroupCountZ));

if (GetDevice()->IsCompatibilityMode()) {
if (!GetDevice()->HasFlexibleTextureViews()) {
DAWN_TRY(mCommandBufferState.ValidateNoDifferentTextureViewsOnSameTexture());
}
}
Expand Down Expand Up @@ -374,7 +374,7 @@ void ComputePassEncoder::APIDispatchWorkgroupsIndirect(BufferBase* indirectBuffe
"size (%u).",
indirectOffset, kDispatchIndirectSize, indirectBuffer->GetSize());

if (GetDevice()->IsCompatibilityMode()) {
if (!GetDevice()->HasFlexibleTextureViews()) {
DAWN_TRY(mCommandBufferState.ValidateNoDifferentTextureViewsOnSameTexture());
}
}
Expand Down
8 changes: 8 additions & 0 deletions src/dawn/native/Device.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1788,6 +1788,8 @@ void DeviceBase::ApplyFeatures(const UnpackedPtr<DeviceDescriptor>& deviceDescri
for (uint32_t i = 0; i < deviceDescriptor->requiredFeatureCount; ++i) {
mEnabledFeatures.EnableFeature(deviceDescriptor->requiredFeatures[i]);
}

// TODO(384921944): Enable Compat's optional features by default in Core Mode.
}

bool DeviceBase::HasFeature(Feature feature) const {
Expand Down Expand Up @@ -2592,6 +2594,12 @@ ResultOrError<Ref<BufferBase>> DeviceBase::GetOrCreateTemporaryUniformBuffer(siz
return mTemporaryUniformBuffer;
}

bool DeviceBase::HasFlexibleTextureViews() const {
// TODO(384921944): Once FlexibleTextureViews is enabled by default in Core Mode, we only need
// to check HasFeature(FlexibleTextureViews).
return !IsCompatibilityMode() || HasFeature(Feature::FlexibleTextureViews);
}

IgnoreLazyClearCountScope::IgnoreLazyClearCountScope(DeviceBase* device)
: mDevice(device), mLazyClearCountForTesting(device->mLazyClearCountForTesting) {}

Expand Down
2 changes: 2 additions & 0 deletions src/dawn/native/Device.h
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,8 @@ class DeviceBase : public ErrorSink, public RefCountedWithExternalCount<RefCount

ResultOrError<Ref<BufferBase>> GetOrCreateTemporaryUniformBuffer(size_t size);

bool HasFlexibleTextureViews() const;

protected:
// Constructor used only for mocking and testing.
DeviceBase();
Expand Down
8 changes: 7 additions & 1 deletion src/dawn/native/Features.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,8 @@ static constexpr FeatureEnumAndInfo kFeatureInfo[] = {
{"Allows the STORAGE usage on textures with format \"bgra8unorm\".",
"https://gpuweb.github.io/gpuweb/#bgra8unorm-storage", FeatureInfo::FeatureState::Stable}},
{Feature::Float32Filterable,
{"Allows textures with formats \"r32float\" \"rg32float\" and \"rgba32float\" to be filtered.",
{"Allows textures with formats \"r32float\" \"rg32float\" and \"rgba32float\" to be "
"filtered.",
"https://gpuweb.github.io/gpuweb/#float32-filterable", FeatureInfo::FeatureState::Stable}},
{Feature::Float32Blendable,
{"Allows textures with formats \"r32float\" \"rg32float\" and \"rgba32float\" to be "
Expand Down Expand Up @@ -389,6 +390,11 @@ static constexpr FeatureEnumAndInfo kFeatureInfo[] = {
{"Expose the min row alignment in buffer for texel copy operations.",
"https://dawn.googlesource.com/dawn/+/refs/heads/main/docs/dawn/features/"
"dawn_texel_copy_buffer_row_alignment.md",
FeatureInfo::FeatureState::Stable}},
{Feature::FlexibleTextureViews,
{"Remove the texture view restrictions in Compat Mode.",
"https://dawn.googlesource.com/dawn/+/refs/heads/main/docs/dawn/features/"
"flexible_texture_views.md",
FeatureInfo::FeatureState::Stable}}};
} // anonymous namespace

Expand Down
12 changes: 6 additions & 6 deletions src/dawn/native/RenderEncoderBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ void RenderEncoderBase::APIDraw(uint32_t vertexCount,

DAWN_TRY(mCommandBufferState.ValidateCanDraw());

if (GetDevice()->IsCompatibilityMode()) {
if (!GetDevice()->HasFlexibleTextureViews()) {
DAWN_TRY(mCommandBufferState.ValidateNoDifferentTextureViewsOnSameTexture());
}

Expand Down Expand Up @@ -164,7 +164,7 @@ void RenderEncoderBase::APIDrawIndexed(uint32_t indexCount,

DAWN_TRY(mCommandBufferState.ValidateCanDrawIndexed());

if (GetDevice()->IsCompatibilityMode()) {
if (!GetDevice()->HasFlexibleTextureViews()) {
DAWN_TRY(mCommandBufferState.ValidateNoDifferentTextureViewsOnSameTexture());
}

Expand Down Expand Up @@ -204,7 +204,7 @@ void RenderEncoderBase::APIDrawIndirect(BufferBase* indirectBuffer, uint64_t ind
DAWN_TRY(GetDevice()->ValidateObject(indirectBuffer));
DAWN_TRY(ValidateCanUseAs(indirectBuffer, wgpu::BufferUsage::Indirect));
DAWN_TRY(mCommandBufferState.ValidateCanDraw());
if (GetDevice()->IsCompatibilityMode()) {
if (!GetDevice()->HasFlexibleTextureViews()) {
DAWN_TRY(mCommandBufferState.ValidateNoDifferentTextureViewsOnSameTexture());
}

Expand Down Expand Up @@ -263,7 +263,7 @@ void RenderEncoderBase::APIDrawIndexedIndirect(BufferBase* indirectBuffer,
DAWN_TRY(GetDevice()->ValidateObject(indirectBuffer));
DAWN_TRY(ValidateCanUseAs(indirectBuffer, wgpu::BufferUsage::Indirect));
DAWN_TRY(mCommandBufferState.ValidateCanDrawIndexed());
if (GetDevice()->IsCompatibilityMode()) {
if (!GetDevice()->HasFlexibleTextureViews()) {
DAWN_TRY(mCommandBufferState.ValidateNoDifferentTextureViewsOnSameTexture());
}

Expand Down Expand Up @@ -375,7 +375,7 @@ void RenderEncoderBase::APIMultiDrawIndirect(BufferBase* indirectBuffer,

DAWN_TRY(mCommandBufferState.ValidateCanDraw());

if (GetDevice()->IsCompatibilityMode()) {
if (!GetDevice()->HasFlexibleTextureViews()) {
DAWN_TRY(mCommandBufferState.ValidateNoDifferentTextureViewsOnSameTexture());
}
}
Expand Down Expand Up @@ -481,7 +481,7 @@ void RenderEncoderBase::APIMultiDrawIndexedIndirect(BufferBase* indirectBuffer,

DAWN_TRY(mCommandBufferState.ValidateCanDrawIndexed());

if (GetDevice()->IsCompatibilityMode()) {
if (!GetDevice()->HasFlexibleTextureViews()) {
DAWN_TRY(mCommandBufferState.ValidateNoDifferentTextureViewsOnSameTexture());
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/dawn/native/Texture.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,7 @@ wgpu::TextureViewDimension ResolveDefaultCompatiblityTextureBindingViewDimension
const UnpackedPtr<TextureDescriptor>& descriptor) {
// In non-compatibility mode this value is not used so return undefined so that it is not
// used by mistake.
if (!device->IsCompatibilityMode()) {
if (device->HasFlexibleTextureViews()) {
return wgpu::TextureViewDimension::Undefined;
}

Expand Down Expand Up @@ -691,7 +691,7 @@ MaybeError ValidateTextureDescriptor(
DAWN_TRY(ValidateTextureUsage(device, descriptor->dimension, usage, format,
std::move(allowedSharedTextureMemoryUsage)));
DAWN_TRY(ValidateTextureDimension(descriptor->dimension));
if (device->IsCompatibilityMode()) {
if (!device->HasFlexibleTextureViews()) {
const auto textureBindingViewDimension =
ResolveDefaultCompatiblityTextureBindingViewDimension(device, descriptor);
DAWN_TRY_CONTEXT(ValidateTextureViewDimension(textureBindingViewDimension),
Expand Down
1 change: 1 addition & 0 deletions src/dawn/native/d3d11/PhysicalDeviceD3D11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ void PhysicalDevice::InitializeSupportedFeaturesImpl() {
}

EnableFeature(Feature::DawnTexelCopyBufferRowAlignment);
EnableFeature(Feature::FlexibleTextureViews);
}

MaybeError PhysicalDevice::InitializeSupportedLimitsImpl(CombinedLimits* limits) {
Expand Down
1 change: 1 addition & 0 deletions src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ void PhysicalDevice::InitializeSupportedFeaturesImpl() {
EnableFeature(Feature::StaticSamplers);
EnableFeature(Feature::MultiDrawIndirect);
EnableFeature(Feature::ClipDistances);
EnableFeature(Feature::FlexibleTextureViews);

if (AreTimestampQueriesSupported()) {
EnableFeature(Feature::TimestampQuery);
Expand Down
1 change: 1 addition & 0 deletions src/dawn/native/metal/PhysicalDeviceMTL.mm
Original file line number Diff line number Diff line change
Expand Up @@ -740,6 +740,7 @@ bool IsGPUCounterSupported(id<MTLDevice> device,
EnableFeature(Feature::DawnLoadResolveTexture);
EnableFeature(Feature::ClipDistances);
EnableFeature(Feature::Float32Blendable);
EnableFeature(Feature::FlexibleTextureViews);

// SIMD-scoped permute operations is supported by GPU family Metal3, Apple6, Apple7, Apple8,
// and Mac2.
Expand Down
1 change: 1 addition & 0 deletions src/dawn/native/vulkan/PhysicalDeviceVk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ MaybeError PhysicalDevice::InitializeImpl() {
void PhysicalDevice::InitializeSupportedFeaturesImpl() {
EnableFeature(Feature::AdapterPropertiesMemoryHeaps);
EnableFeature(Feature::StaticSamplers);
EnableFeature(Feature::FlexibleTextureViews);

// Initialize supported extensions
if (mDeviceInfo.features.textureCompressionBC == VK_TRUE) {
Expand Down
1 change: 1 addition & 0 deletions src/dawn/node/binding/Converter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1618,6 +1618,7 @@ bool Converter::Convert(interop::GPUFeatureName& out, wgpu::FeatureName in) {
case wgpu::FeatureName::DawnLoadResolveTexture:
case wgpu::FeatureName::DawnPartialLoadResolveTexture:
case wgpu::FeatureName::DawnTexelCopyBufferRowAlignment:
case wgpu::FeatureName::FlexibleTextureViews:
return false;
}
return false;
Expand Down
11 changes: 8 additions & 3 deletions src/dawn/tests/end2end/CopyTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -268,10 +268,14 @@ class CopyTests_T2B : public CopyTests, public DawnTestWithParams<CopyTextureFor
};

std::vector<wgpu::FeatureName> GetRequiredFeatures() override {
if (!SupportsFeatures({wgpu::FeatureName::DawnTexelCopyBufferRowAlignment})) {
return {};
std::vector<wgpu::FeatureName> requiredFeatures = {};
if (SupportsFeatures({wgpu::FeatureName::FlexibleTextureViews})) {
requiredFeatures.push_back(wgpu::FeatureName::FlexibleTextureViews);
}
return {wgpu::FeatureName::DawnTexelCopyBufferRowAlignment};
if (SupportsFeatures({wgpu::FeatureName::DawnTexelCopyBufferRowAlignment})) {
requiredFeatures.push_back(wgpu::FeatureName::DawnTexelCopyBufferRowAlignment);
}
return requiredFeatures;
}

void SetUp() override {
Expand Down Expand Up @@ -1930,6 +1934,7 @@ TEST_P(CopyTests_T2B_Compat, TextureCubeRegionNonzeroRowsPerImage) {

DAWN_INSTANTIATE_TEST_P(CopyTests_T2B_Compat,
{
D3D11Backend(),
OpenGLBackend(),
OpenGLESBackend(),
},
Expand Down
12 changes: 0 additions & 12 deletions src/dawn/tests/end2end/DepthBiasTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -183,10 +183,6 @@ TEST_P(DepthBiasTests, PositiveBiasOnFloat) {

// Test adding positive bias to output with a clamp
TEST_P(DepthBiasTests, PositiveBiasOnFloatWithClamp) {
// Clamping support in OpenGL is spotty
DAWN_TEST_UNSUPPORTED_IF(IsOpenGL());
DAWN_TEST_UNSUPPORTED_IF(IsOpenGLES());

// Depth bias clamp is not supported in compat mode.
// https://github.com/gpuweb/gpuweb/blob/main/proposals/compatibility-mode.md#9-depth-bias-clamp-must-be-zero
DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
Expand Down Expand Up @@ -225,10 +221,6 @@ TEST_P(DepthBiasTests, NegativeBiasOnFloat) {

// Test adding negative bias to output with a clamp
TEST_P(DepthBiasTests, NegativeBiasOnFloatWithClamp) {
// Clamping support in OpenGL is spotty
DAWN_TEST_UNSUPPORTED_IF(IsOpenGL());
DAWN_TEST_UNSUPPORTED_IF(IsOpenGLES());

// Depth bias clamp is not supported in compat mode.
// https://github.com/gpuweb/gpuweb/blob/main/proposals/compatibility-mode.md#9-depth-bias-clamp-must-be-zero
DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
Expand Down Expand Up @@ -348,10 +340,6 @@ TEST_P(DepthBiasTests, PositiveBiasOn24bit) {

// Test adding positive bias to output with a clamp
TEST_P(DepthBiasTests, PositiveBiasOn24bitWithClamp) {
// Clamping support in OpenGL is spotty
DAWN_TEST_UNSUPPORTED_IF(IsOpenGL());
DAWN_TEST_UNSUPPORTED_IF(IsOpenGLES());

// Depth bias clamp is not supported in compat mode.
// https://github.com/gpuweb/gpuweb/blob/main/proposals/compatibility-mode.md#9-depth-bias-clamp-must-be-zero
DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
Expand Down
27 changes: 20 additions & 7 deletions src/dawn/tests/end2end/TextureViewTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,19 @@ constexpr uint32_t kBytesPerTexel = 4;

class TextureViewTestBase : public DawnTest {
protected:
std::vector<wgpu::FeatureName> GetRequiredFeatures() override {
std::vector<wgpu::FeatureName> requiredFeatures = {};
if (SupportsFeatures({wgpu::FeatureName::FlexibleTextureViews})) {
requiredFeatures.push_back(wgpu::FeatureName::FlexibleTextureViews);
}
return requiredFeatures;
}

bool HasFlexibleTextureViews() {
return !IsCompatibilityMode() ||
SupportsFeatures({wgpu::FeatureName::FlexibleTextureViews});
}

wgpu::Texture Create2DTexture(uint32_t width,
uint32_t height,
uint32_t arrayLayerCount,
Expand All @@ -67,7 +80,7 @@ class TextureViewTestBase : public DawnTest {
// Only set the textureBindingViewDimension in compat mode. It's not needed
// nor used in non-compat.
wgpu::TextureBindingViewDimensionDescriptor textureBindingViewDimensionDesc;
if (IsCompatibilityMode()) {
if (!HasFlexibleTextureViews()) {
textureBindingViewDimensionDesc.textureBindingViewDimension =
textureBindingViewDimension;
descriptor.nextInChain = &textureBindingViewDimensionDesc;
Expand Down Expand Up @@ -485,13 +498,13 @@ TEST_P(TextureViewSamplingTest, CubeArrayTextureSignedNegativeIndex) {

// Test sampling from a 2D texture view created on a 2D array texture.
TEST_P(TextureViewSamplingTest, Texture2DViewOn2DArrayTexture) {
DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
DAWN_TEST_UNSUPPORTED_IF(!HasFlexibleTextureViews());
Texture2DViewTest(6, 1, 4, 0);
}

// Test sampling from a 2D array texture view created on a 2D array texture.
TEST_P(TextureViewSamplingTest, Texture2DArrayViewOn2DArrayTexture) {
DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
DAWN_TEST_UNSUPPORTED_IF(!HasFlexibleTextureViews());
Texture2DArrayViewTest(6, 1, 2, 0);
}

Expand Down Expand Up @@ -531,13 +544,13 @@ TEST_P(TextureViewSamplingTest, Texture2DViewOnOneLevelOf2DTexture) {

// Test sampling from a 2D texture view created on a mipmap level of a 2D array texture layer.
TEST_P(TextureViewSamplingTest, Texture2DViewOnOneLevelOf2DArrayTexture) {
DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
DAWN_TEST_UNSUPPORTED_IF(!HasFlexibleTextureViews());
Texture2DViewTest(6, 6, 3, 4);
}

// Test sampling from a 2D array texture view created on a mipmap level of a 2D array texture.
TEST_P(TextureViewSamplingTest, Texture2DArrayViewOnOneLevelOf2DArrayTexture) {
DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
DAWN_TEST_UNSUPPORTED_IF(!HasFlexibleTextureViews());
Texture2DArrayViewTest(6, 6, 2, 4);
}

Expand Down Expand Up @@ -641,7 +654,7 @@ TEST_P(TextureViewSamplingTest, TextureCubeMapOnWholeTexture) {

// Test sampling from a cube map texture view that covers a sub part of a 2D array texture.
TEST_P(TextureViewSamplingTest, TextureCubeMapViewOnPartOfTexture) {
DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
DAWN_TEST_UNSUPPORTED_IF(!HasFlexibleTextureViews());
// TODO(dawn:1935): Total layers have to be at least 12 on Intel D3D11 Gen12.
DAWN_SUPPRESS_TEST_IF(IsD3D11() && IsIntelGen12());

Expand All @@ -650,7 +663,7 @@ TEST_P(TextureViewSamplingTest, TextureCubeMapViewOnPartOfTexture) {

// Test sampling from a cube map texture view that covers the last layer of a 2D array texture.
TEST_P(TextureViewSamplingTest, TextureCubeMapViewCoveringLastLayer) {
DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
DAWN_TEST_UNSUPPORTED_IF(!HasFlexibleTextureViews());

// TODO(dawn:1812): the test fails with DXGI_ERROR_DEVICE_HUNG on Intel D3D11 driver.
DAWN_SUPPRESS_TEST_IF(IsD3D11() && IsIntel());
Expand Down
Loading

0 comments on commit d17bdb0

Please sign in to comment.