[dawn][headers] Update default values generated in headers.
- For enums with an explicit "undefined" value, that should
be the default for the struct in the header instead of the
"default_value" from dawn.json. The "default_value" from
dawn.json should only be applied when calling
`WithTrivialFrontendDefaults`.
- Updates RequestAdapterOptions to use
WithTrivialFrontendDefaults where applicable.
- Updates some TextureDescriptor usages to use
WithTrivialFrontendDefaults where applicable.
- Adds Undefined for PresentMode, and handling of it. Note
that this required adding some switch cases for C++, but
maybe we shouldn't bother generating the Undefined enum
in C++ all together? Will follow up with another change
depending on decisions.
- Updates defaults in dawn.json to match upstream.
Bug: 402498095
Change-Id: I8fd5b5b9620f35652b8c38ec145972740a8ad5b8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/230315
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
diff --git a/generator/dawn_json_generator.py b/generator/dawn_json_generator.py
index 284b6647..5905157 100644
--- a/generator/dawn_json_generator.py
+++ b/generator/dawn_json_generator.py
@@ -242,9 +242,6 @@
self.default_value = default_value
self.skip_serialize = skip_serialize
- if self.type.category == "bitmask" and not self.default_value:
- self.default_value = "none"
-
def set_handle_type(self, handle_type):
assert self.type.dict_name == "ObjectHandle"
self.handle_type = handle_type
diff --git a/generator/templates/api.h b/generator/templates/api.h
index 7940c4c..92087c3 100644
--- a/generator/templates/api.h
+++ b/generator/templates/api.h
@@ -168,17 +168,24 @@
//* Callback function types should always default to NULL.
NULL
{%- elif member.type.category == "enum" -%}
- //* Enum types are either their default values, or zero-init.
- {%- if member.default_value != None -%}
+ {%- if member.type.hasUndefined -%}
+ //* For enums that have an undefined value, instead of using the
+ //* default, just put undefined.
+ {{as_cEnum(member.type.name, Name("undefined"))}}
+ {%- elif member.default_value != None -%}
+ //* Enum types are either their default values, or zero-init.
{{as_cEnum(member.type.name, Name(member.default_value))}}
{%- else -%}
_{{api}}_ENUM_ZERO_INIT({{as_cType(member.type.name)}})
{%- endif -%}
{%- elif member.type.category == "bitmask" -%}
- //* Bitmask types should always have a default since they are set in
- //* the generator.
- {{- assert(member.default_value != None) -}}
- {{as_cEnum(member.type.name, Name(member.default_value))}}
+ {%- if member.default_value != None -%}
+ {{as_cEnum(member.type.name, Name(member.default_value))}}
+ {%- else -%}
+ //* Bitmask types should currently always default to "none" if not
+ //* explicitly set.
+ {{as_cEnum(member.type.name, Name("none"))}}
+ {%- endif -%}
{%- elif member.type.category in ["structure", "callback info"] -%}
//* Structure types, must be by value here, otherwise, they should have
//* been caught as a pointer type.
diff --git a/generator/templates/api_cpp.h b/generator/templates/api_cpp.h
index 1c7bc79..2a64ada 100644
--- a/generator/templates/api_cpp.h
+++ b/generator/templates/api_cpp.h
@@ -301,12 +301,30 @@
{%- if forced_default_value -%}
{{" "}}= {{forced_default_value}}
{%- elif member.json_data.get("no_default", false) -%}
- {%- elif member.annotation in ["*", "const*", "const*const*"] and member.optional or member.default_value == "nullptr" -%}
+ {%- elif member.annotation in ["*", "const*", "const*const*"] and (is_struct or member.optional or member.default_value == "nullptr") -%}
{{" "}}= nullptr
- {%- elif member.type.category == "object" and member.optional and is_struct -%}
+ {%- elif member.type.category == "object" and (is_struct or member.optional) -%}
{{" "}}= nullptr
- {%- elif member.type.category in ["enum", "bitmask"] and member.default_value != None -%}
- {{" "}}= {{as_cppType(member.type.name)}}::{{as_cppEnum(Name(member.default_value))}}
+ {%- elif member.type.category == "enum" -%}
+ //* For enums that have an undefined value, instead of using the
+ //* default, just put undefined because they should be the same.
+ {%- if member.type.hasUndefined and is_struct -%}
+ {{" "}}= {{as_cppType(member.type.name)}}::{{as_cppEnum(Name("undefined"))}}
+ {%- elif member.default_value != None -%}
+ {{" "}}= {{as_cppType(member.type.name)}}::{{as_cppEnum(Name(member.default_value))}}
+ {%- elif is_struct -%}
+ {{" "}}= {}
+ {%- endif -%}
+ {%- elif member.type.category == "bitmask" -%}
+ {%- if is_struct or member.optional -%}
+ {%- if member.default_value != None -%}
+ {{" "}}= {{as_cppType(member.type.name)}}::{{as_cppEnum(Name(member.default_value))}}
+ {%- else -%}
+ //* Bitmask types should currently always default to "none" if not
+ //* explicitly set.
+ {{" "}}= {{as_cppType(member.type.name)}}::{{as_cppEnum(Name("none"))}}
+ {%- endif -%}
+ {%- endif -%}
{%- elif member.type.category == "native" and member.default_value != None -%}
{{" "}}= {{member.default_value}}
{%- elif member.default_value != None -%}
diff --git a/generator/templates/dawn/native/api_structs.h b/generator/templates/dawn/native/api_structs.h
index b6616d0..e4027a1 100644
--- a/generator/templates/dawn/native/api_structs.h
+++ b/generator/templates/dawn/native/api_structs.h
@@ -48,16 +48,33 @@
namespace {{native_namespace}} {
{% macro render_cpp_default_value(member, forced_default_value="") -%}
+ //* Apply default values over undefined when dealing with the Dawn
+ //* native header to avoid needing to do the additional step of
+ //* resolving trivial defaults internally.
{%- if forced_default_value -%}
{{" "}}= {{forced_default_value}}
- {%- elif member.annotation in ["*", "const*", "const*const*"] and member.optional or member.default_value == "nullptr" -%}
+ {%- elif member.annotation in ["*", "const*", "const*const*"] or member.default_value == "nullptr" -%}
{{" "}}= nullptr
{%- elif member.type.category == "object" and member.optional -%}
{{" "}}= nullptr
{%- elif member.type.category == "callback info" -%}
{{" "}}= {{CAPI}}_{{member.name.SNAKE_CASE()}}_INIT
- {%- elif member.type.category in ["enum", "bitmask"] and member.default_value != None -%}
- {{" "}}= {{namespace}}::{{as_cppType(member.type.name)}}::{{as_cppEnum(Name(member.default_value))}}
+ {%- elif member.type.category == "enum" -%}
+ {%- if member.default_value != None -%}
+ {{" "}}= {{namespace}}::{{as_cppType(member.type.name)}}::{{as_cppEnum(Name(member.default_value))}}
+ {%- elif member.type.hasUndefined -%}
+ {{" "}}= {{namespace}}::{{as_cppType(member.type.name)}}::{{as_cppEnum(Name("undefined"))}}
+ {%- else -%}
+ {{" "}}= {}
+ {%- endif -%}
+ {%- elif member.type.category == "bitmask" -%}
+ {%- if member.default_value != None -%}
+ {{" "}}= {{namespace}}::{{as_cppType(member.type.name)}}::{{as_cppEnum(Name(member.default_value))}}
+ {%- else -%}
+ //* Bitmask types should currently always default to "none" if not
+ //* explicitly set.
+ {{" "}}= {{namespace}}::{{as_cppType(member.type.name)}}::{{as_cppEnum(Name("none"))}}
+ {%- endif -%}
{%- elif member.type.category == "native" and member.default_value != None -%}
{{" "}}= {{member.default_value}}
{%- elif member.default_value != None -%}
diff --git a/src/dawn/dawn.json b/src/dawn/dawn.json
index 5f468fd..6cb3ce1 100644
--- a/src/dawn/dawn.json
+++ b/src/dawn/dawn.json
@@ -74,9 +74,9 @@
"extensible": "in",
"members": [
{"name": "feature level", "type": "feature level", "default": "core"},
- {"name": "power preference", "type": "power preference", "default": "undefined"},
+ {"name": "power preference", "type": "power preference"},
{"name": "force fallback adapter", "type": "bool", "default": "false"},
- {"name": "backend type", "type": "backend type", "default": "undefined"},
+ {"name": "backend type", "type": "backend type"},
{"name": "compatible surface", "type": "surface", "optional": true}
]
},
@@ -186,7 +186,7 @@
{"name": "architecture", "type": "string view"},
{"name": "device", "type": "string view"},
{"name": "description", "type": "string view"},
- {"name": "backend type", "type": "backend type", "default": "undefined"},
+ {"name": "backend type", "type": "backend type"},
{"name": "adapter type", "type": "adapter type"},
{"name": "vendor ID", "type": "uint32_t"},
{"name": "device ID", "type": "uint32_t"},
@@ -481,7 +481,7 @@
"extensible": "in",
"members": [
{"name": "access", "type": "storage texture access", "default": "write only"},
- {"name": "format", "type": "texture format", "default": "undefined"},
+ {"name": "format", "type": "texture format"},
{"name": "view dimension", "type": "texture view dimension", "default": "2D"}
]
},
@@ -2661,6 +2661,7 @@
"category": "enum",
"emscripten_no_enum_table": true,
"values": [
+ {"value": 0, "name": "undefined"},
{"value": 1, "name": "fifo"},
{"value": 2, "name": "fifo relaxed"},
{"value": 3, "name": "immediate"},
@@ -2963,7 +2964,7 @@
{"name": "label", "type": "string view", "optional": true},
{"name": "color format count", "type": "size_t"},
{"name": "color formats", "type": "texture format", "annotation": "const*", "length": "color format count"},
- {"name": "depth stencil format", "type": "texture format", "default": "undefined"},
+ {"name": "depth stencil format", "type": "texture format"},
{"name": "sample count", "type": "uint32_t", "default": "1"},
{"name": "depth read only", "type": "bool", "default": "false"},
{"name": "stencil read only", "type": "bool", "default": "false"}
@@ -2996,12 +2997,12 @@
"extensible": "in",
"members": [
{"name": "view", "type": "texture view"},
- {"name": "depth load op", "type": "load op", "default": "undefined"},
- {"name": "depth store op", "type": "store op", "default": "undefined"},
+ {"name": "depth load op", "type": "load op"},
+ {"name": "depth store op", "type": "store op"},
{"name": "depth clear value", "type": "float", "default": "NAN"},
{"name": "depth read only", "type": "bool", "default": "false"},
- {"name": "stencil load op", "type": "load op", "default": "undefined"},
- {"name": "stencil store op", "type": "store op", "default": "undefined"},
+ {"name": "stencil load op", "type": "load op"},
+ {"name": "stencil store op", "type": "store op"},
{"name": "stencil clear value", "type": "uint32_t", "default": "0"},
{"name": "stencil read only", "type": "bool", "default": "false"}
]
@@ -3318,7 +3319,7 @@
"extensible": "in",
"members": [
{"name": "topology", "type": "primitive topology", "default": "triangle list"},
- {"name": "strip index format", "type": "index format", "default": "undefined"},
+ {"name": "strip index format", "type": "index format"},
{"name": "front face", "type": "front face", "default": "CCW"},
{"name": "cull mode", "type": "cull mode", "default": "none"},
{"name": "unclipped depth", "type": "bool", "default": "false"}
@@ -3330,8 +3331,8 @@
"extensible": "in",
"members": [
{"name": "format", "type": "texture format"},
- {"name": "depth write enabled", "type": "optional bool", "default": "undefined"},
- {"name": "depth compare", "type": "compare function", "default": "undefined"},
+ {"name": "depth write enabled", "type": "optional bool"},
+ {"name": "depth compare", "type": "compare function"},
{"name": "stencil front", "type": "stencil face state"},
{"name": "stencil back", "type": "stencil face state"},
{"name": "stencil read mask", "type": "uint32_t", "default": "0xFFFFFFFF"},
@@ -3430,7 +3431,7 @@
{"name": "mipmap filter", "type": "mipmap filter mode", "default": "nearest"},
{"name": "lod min clamp", "type": "float", "default": "0.0f"},
{"name": "lod max clamp", "type": "float", "default": "32.0f"},
- {"name": "compare", "type": "compare function", "default": "undefined"},
+ {"name": "compare", "type": "compare function"},
{"name": "max anisotropy", "type": "uint16_t", "default": "1"}
]
},
@@ -3931,7 +3932,7 @@
"chained": "in",
"chain roots": ["texture descriptor"],
"members": [
- {"name": "texture binding view dimension", "type": "texture view dimension", "default": "undefined"}
+ {"name": "texture binding view dimension", "type": "texture view dimension"}
]
},
"texture dimension": {
@@ -4087,8 +4088,8 @@
"extensible": "in",
"members": [
{"name": "label", "type": "string view", "optional": true},
- {"name": "format", "type": "texture format", "default": "undefined"},
- {"name": "dimension", "type": "texture view dimension", "default": "undefined"},
+ {"name": "format", "type": "texture format"},
+ {"name": "dimension", "type": "texture view dimension"},
{"name": "base mip level", "type": "uint32_t", "default": "0"},
{"name": "mip level count", "type": "uint32_t", "default": "WGPU_MIP_LEVEL_COUNT_UNDEFINED"},
{"name": "base array layer", "type": "uint32_t", "default": "0"},
@@ -4328,7 +4329,7 @@
"chain roots": ["adapter info"],
"tags": ["dawn"],
"members": [
- {"name": "power preference", "type": "power preference", "default": "undefined"}
+ {"name": "power preference", "type": "power preference"}
]
},
"heap property": {
diff --git a/src/dawn/native/Adapter.cpp b/src/dawn/native/Adapter.cpp
index c63acb2..28792e0 100644
--- a/src/dawn/native/Adapter.cpp
+++ b/src/dawn/native/Adapter.cpp
@@ -516,9 +516,8 @@
}
std::vector<Ref<AdapterBase>> SortAdapters(std::vector<Ref<AdapterBase>> adapters,
- const RequestAdapterOptions* options) {
- const bool highPerformance =
- options != nullptr && options->powerPreference == wgpu::PowerPreference::HighPerformance;
+ const UnpackedPtr<RequestAdapterOptions>& options) {
+ const bool highPerformance = options->powerPreference == wgpu::PowerPreference::HighPerformance;
const auto ComputeAdapterTypeRank = [&](const Ref<AdapterBase>& a) {
switch (a->GetPhysicalDevice()->GetAdapterType()) {
diff --git a/src/dawn/native/Adapter.h b/src/dawn/native/Adapter.h
index 2674e67..d8b286c 100644
--- a/src/dawn/native/Adapter.h
+++ b/src/dawn/native/Adapter.h
@@ -117,7 +117,7 @@
};
std::vector<Ref<AdapterBase>> SortAdapters(std::vector<Ref<AdapterBase>> adapters,
- const RequestAdapterOptions* options);
+ const UnpackedPtr<RequestAdapterOptions>& options);
} // namespace dawn::native
diff --git a/src/dawn/native/Instance.cpp b/src/dawn/native/Instance.cpp
index 01c75e9..8c54cd9 100644
--- a/src/dawn/native/Instance.cpp
+++ b/src/dawn/native/Instance.cpp
@@ -357,24 +357,25 @@
return EnumerateAdapters(&kDefaultOptions);
}
- UnpackedPtr<RequestAdapterOptions> unpacked = Unpack(options);
+ RequestAdapterOptions rawOptions = options->WithTrivialFrontendDefaults();
+ UnpackedPtr<RequestAdapterOptions> unpacked = Unpack(&rawOptions);
auto* togglesDesc = unpacked.Get<DawnTogglesDescriptor>();
std::vector<Ref<AdapterBase>> adapters;
for (const auto& physicalDevice : EnumeratePhysicalDevices(unpacked)) {
- DAWN_ASSERT(physicalDevice->SupportsFeatureLevel(options->featureLevel, this));
- adapters.push_back(CreateAdapter(physicalDevice, options->featureLevel, togglesDesc,
+ DAWN_ASSERT(physicalDevice->SupportsFeatureLevel(unpacked->featureLevel, this));
+ adapters.push_back(CreateAdapter(physicalDevice, unpacked->featureLevel, togglesDesc,
unpacked->powerPreference));
}
- if (options->backendType == wgpu::BackendType::D3D11 ||
- options->backendType == wgpu::BackendType::D3D12) {
+ if (unpacked->backendType == wgpu::BackendType::D3D11 ||
+ unpacked->backendType == wgpu::BackendType::D3D12) {
// If a D3D backend was requested, the order of the adapters returned by DXGI should be
// preserved instead of sorting by whether they are integrated vs. discrete. DXGI
// returns the correct order based on system settings and configuration.
return adapters;
}
- return SortAdapters(std::move(adapters), options);
+ return SortAdapters(std::move(adapters), unpacked);
}
BackendConnection* InstanceBase::GetBackendConnection(wgpu::BackendType backendType) {
diff --git a/src/dawn/native/Sampler.cpp b/src/dawn/native/Sampler.cpp
index 8f69413..0f4eedc 100644
--- a/src/dawn/native/Sampler.cpp
+++ b/src/dawn/native/Sampler.cpp
@@ -97,7 +97,7 @@
mMaxAnisotropy(descriptor->maxAnisotropy) {
if (auto* yCbCrVkDescriptor = Unpack(descriptor).Get<YCbCrVkDescriptor>()) {
mIsYCbCr = true;
- mYCbCrVkDescriptor = *yCbCrVkDescriptor;
+ mYCbCrVkDescriptor = yCbCrVkDescriptor->WithTrivialFrontendDefaults();
mYCbCrVkDescriptor.nextInChain = nullptr;
}
}
diff --git a/src/dawn/native/SharedTextureMemory.cpp b/src/dawn/native/SharedTextureMemory.cpp
index 0f5d8ca..23a96ab 100644
--- a/src/dawn/native/SharedTextureMemory.cpp
+++ b/src/dawn/native/SharedTextureMemory.cpp
@@ -165,8 +165,9 @@
DAWN_TRY(GetDevice()->ValidateIsAlive());
DAWN_TRY(GetDevice()->ValidateObject(this));
+ TextureDescriptor reifiedDescriptor = rawDescriptor->WithTrivialFrontendDefaults();
UnpackedPtr<TextureDescriptor> descriptor;
- DAWN_TRY_ASSIGN(descriptor, ValidateAndUnpack(rawDescriptor));
+ DAWN_TRY_ASSIGN(descriptor, ValidateAndUnpack(&reifiedDescriptor));
// Validate that there is one 2D, single-sampled subresource
DAWN_INVALID_IF(descriptor->dimension != wgpu::TextureDimension::e2D,
diff --git a/src/dawn/native/d3d/SwapChainD3D.cpp b/src/dawn/native/d3d/SwapChainD3D.cpp
index e5a436b..eb9a69f 100644
--- a/src/dawn/native/d3d/SwapChainD3D.cpp
+++ b/src/dawn/native/d3d/SwapChainD3D.cpp
@@ -50,7 +50,8 @@
return 2;
case wgpu::PresentMode::Mailbox:
return 3;
- default:
+ case wgpu::PresentMode::FifoRelaxed:
+ case wgpu::PresentMode::Undefined:
break;
}
DAWN_UNREACHABLE();
@@ -63,7 +64,8 @@
return 0;
case wgpu::PresentMode::Fifo:
return 1;
- default:
+ case wgpu::PresentMode::FifoRelaxed:
+ case wgpu::PresentMode::Undefined:
break;
}
DAWN_UNREACHABLE();
diff --git a/src/dawn/native/opengl/DeviceGL.cpp b/src/dawn/native/opengl/DeviceGL.cpp
index 160c5a9..3ec7956 100644
--- a/src/dawn/native/opengl/DeviceGL.cpp
+++ b/src/dawn/native/opengl/DeviceGL.cpp
@@ -358,8 +358,10 @@
::EGLImage image) {
const OpenGLFunctions& gl = GetGL();
+ TextureDescriptor reifiedDescriptor =
+ FromAPI(descriptor->cTextureDescriptor)->WithTrivialFrontendDefaults();
UnpackedPtr<TextureDescriptor> textureDescriptor;
- DAWN_TRY_ASSIGN(textureDescriptor, ValidateAndUnpack(FromAPI(descriptor->cTextureDescriptor)));
+ DAWN_TRY_ASSIGN(textureDescriptor, ValidateAndUnpack(&reifiedDescriptor));
DAWN_TRY(ValidateTextureDescriptor(this, textureDescriptor));
DAWN_TRY(ValidateTextureCanBeWrapped(textureDescriptor));
// The EGLImage was created from outside of Dawn so it must be on the same display that was
@@ -410,8 +412,10 @@
GLuint texture) {
const OpenGLFunctions& gl = GetGL();
+ TextureDescriptor reifiedDescriptor =
+ FromAPI(descriptor->cTextureDescriptor)->WithTrivialFrontendDefaults();
UnpackedPtr<TextureDescriptor> textureDescriptor;
- DAWN_TRY_ASSIGN(textureDescriptor, ValidateAndUnpack(FromAPI(descriptor->cTextureDescriptor)));
+ DAWN_TRY_ASSIGN(textureDescriptor, ValidateAndUnpack(&reifiedDescriptor));
DAWN_TRY(ValidateTextureDescriptor(this, textureDescriptor));
if (!HasFeature(Feature::ANGLETextureSharing)) {
return DAWN_VALIDATION_ERROR("Device does not support ANGLE GL texture sharing.");
diff --git a/src/dawn/native/vulkan/DeviceVk.cpp b/src/dawn/native/vulkan/DeviceVk.cpp
index 1ecae43..576f657 100644
--- a/src/dawn/native/vulkan/DeviceVk.cpp
+++ b/src/dawn/native/vulkan/DeviceVk.cpp
@@ -797,9 +797,10 @@
if (ConsumedError(ValidateIsAlive())) {
return nullptr;
}
+ TextureDescriptor reifiedDescriptor =
+ FromAPI(descriptor->cTextureDescriptor)->WithTrivialFrontendDefaults();
UnpackedPtr<TextureDescriptor> textureDescriptor;
- if (ConsumedError(ValidateAndUnpack(FromAPI(descriptor->cTextureDescriptor)),
- &textureDescriptor)) {
+ if (ConsumedError(ValidateAndUnpack(&reifiedDescriptor), &textureDescriptor)) {
return nullptr;
}
if (ConsumedError(ValidateTextureDescriptor(this, textureDescriptor,
diff --git a/src/dawn/native/vulkan/SwapChainVk.cpp b/src/dawn/native/vulkan/SwapChainVk.cpp
index 311df2d..ed487ef 100644
--- a/src/dawn/native/vulkan/SwapChainVk.cpp
+++ b/src/dawn/native/vulkan/SwapChainVk.cpp
@@ -62,6 +62,8 @@
return VK_PRESENT_MODE_IMMEDIATE_KHR;
case wgpu::PresentMode::Mailbox:
return VK_PRESENT_MODE_MAILBOX_KHR;
+ case wgpu::PresentMode::Undefined:
+ break;
}
DAWN_UNREACHABLE();
}
diff --git a/src/dawn/native/vulkan/TextureVk.cpp b/src/dawn/native/vulkan/TextureVk.cpp
index 9861608..098423a 100644
--- a/src/dawn/native/vulkan/TextureVk.cpp
+++ b/src/dawn/native/vulkan/TextureVk.cpp
@@ -1950,7 +1950,7 @@
VkSamplerYcbcrConversionInfo samplerYCbCrInfo = {};
if (auto* yCbCrVkDescriptor = descriptor.Get<YCbCrVkDescriptor>()) {
mIsYCbCr = true;
- mYCbCrVkDescriptor = *yCbCrVkDescriptor;
+ mYCbCrVkDescriptor = yCbCrVkDescriptor->WithTrivialFrontendDefaults();
mYCbCrVkDescriptor.nextInChain = nullptr;
DAWN_TRY_ASSIGN(mSamplerYCbCrConversion,
diff --git a/src/dawn/tests/unittests/native/mocks/ExternalTextureMock.cpp b/src/dawn/tests/unittests/native/mocks/ExternalTextureMock.cpp
index b3aa5e9..14c7463 100644
--- a/src/dawn/tests/unittests/native/mocks/ExternalTextureMock.cpp
+++ b/src/dawn/tests/unittests/native/mocks/ExternalTextureMock.cpp
@@ -44,8 +44,6 @@
const ExternalTextureDescriptor* descriptor) {
Ref<ExternalTextureMock> externalTexture =
AcquireRef(new NiceMock<ExternalTextureMock>(device, descriptor));
-
- externalTexture->Initialize(device, descriptor).AcquireSuccess();
return externalTexture;
}
diff --git a/src/dawn/tests/unittests/wire/WireArgumentTests.cpp b/src/dawn/tests/unittests/wire/WireArgumentTests.cpp
index 505c487..e9855d7 100644
--- a/src/dawn/tests/unittests/wire/WireArgumentTests.cpp
+++ b/src/dawn/tests/unittests/wire/WireArgumentTests.cpp
@@ -299,9 +299,9 @@
apiDevice, MatchesLambda([](const WGPUSamplerDescriptor* desc) -> bool {
return desc->nextInChain == nullptr &&
desc->magFilter == WGPUFilterMode_Linear &&
- desc->minFilter == WGPUFilterMode_Nearest &&
+ desc->minFilter == WGPUFilterMode_Undefined &&
desc->mipmapFilter == WGPUMipmapFilterMode_Linear &&
- desc->addressModeU == WGPUAddressMode_ClampToEdge &&
+ desc->addressModeU == WGPUAddressMode_Undefined &&
desc->addressModeV == WGPUAddressMode_Repeat &&
desc->addressModeW == WGPUAddressMode_MirrorRepeat &&
desc->compare == WGPUCompareFunction_Never &&