Remove marking of CreatePipelineAsync as unsafe.
We are going to send another PSA about new APIs in Dawn/Chromium and want developers to be able to use CreatePipelineAsync. The implementation is safe, it just doesn't offload the work to a different thread yet. Bug: dawn:529 Change-Id: Ia093e46f8c3d389fd42eb5c1ad6b94ab8e64957b Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/46448 Auto-Submit: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
parent
0e92e9bf3c
commit
61fbb28547
|
@ -805,14 +805,6 @@ namespace dawn_native {
|
||||||
void DeviceBase::APICreateComputePipelineAsync(const ComputePipelineDescriptor* descriptor,
|
void DeviceBase::APICreateComputePipelineAsync(const ComputePipelineDescriptor* descriptor,
|
||||||
WGPUCreateComputePipelineAsyncCallback callback,
|
WGPUCreateComputePipelineAsyncCallback callback,
|
||||||
void* userdata) {
|
void* userdata) {
|
||||||
if (IsToggleEnabled(Toggle::DisallowUnsafeAPIs)) {
|
|
||||||
callback(WGPUCreatePipelineAsyncStatus_Error, nullptr,
|
|
||||||
"CreateComputePipelineAsync is disallowed because it isn't completely "
|
|
||||||
"implemented yet.",
|
|
||||||
userdata);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ResultOrError<Ref<ComputePipelineBase>> maybeResult =
|
ResultOrError<Ref<ComputePipelineBase>> maybeResult =
|
||||||
CreateComputePipelineInternal(descriptor);
|
CreateComputePipelineInternal(descriptor);
|
||||||
if (maybeResult.IsError()) {
|
if (maybeResult.IsError()) {
|
||||||
|
@ -852,14 +844,6 @@ namespace dawn_native {
|
||||||
void DeviceBase::APICreateRenderPipelineAsync(const RenderPipelineDescriptor2* descriptor,
|
void DeviceBase::APICreateRenderPipelineAsync(const RenderPipelineDescriptor2* descriptor,
|
||||||
WGPUCreateRenderPipelineAsyncCallback callback,
|
WGPUCreateRenderPipelineAsyncCallback callback,
|
||||||
void* userdata) {
|
void* userdata) {
|
||||||
if (IsToggleEnabled(Toggle::DisallowUnsafeAPIs)) {
|
|
||||||
callback(WGPUCreatePipelineAsyncStatus_Error, nullptr,
|
|
||||||
"CreateRenderPipelineAsync is disallowed because it isn't completely "
|
|
||||||
"implemented yet.",
|
|
||||||
userdata);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ResultOrError<Ref<RenderPipelineBase>> maybeResult =
|
ResultOrError<Ref<RenderPipelineBase>> maybeResult =
|
||||||
CreateRenderPipelineInternal(descriptor);
|
CreateRenderPipelineInternal(descriptor);
|
||||||
if (maybeResult.IsError()) {
|
if (maybeResult.IsError()) {
|
||||||
|
|
|
@ -212,52 +212,3 @@ TEST_F(UnsafeAPIValidationTest, OcclusionQueryDisallowed) {
|
||||||
ASSERT_DEVICE_ERROR(encoder.Finish());
|
ASSERT_DEVICE_ERROR(encoder.Finish());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that CreateComputePipelineAsync is disallowed as part of unsafe APIs
|
|
||||||
TEST_F(UnsafeAPIValidationTest, CreateComputePipelineAsyncDisallowed) {
|
|
||||||
wgpu::ComputePipelineDescriptor desc;
|
|
||||||
desc.computeStage.module = utils::CreateShaderModule(device, R"(
|
|
||||||
[[stage(compute)]] fn main() -> void {
|
|
||||||
})");
|
|
||||||
desc.computeStage.entryPoint = "main";
|
|
||||||
|
|
||||||
// Control case: CreateComputePipeline is allowed.
|
|
||||||
device.CreateComputePipeline(&desc);
|
|
||||||
|
|
||||||
testing::MockCallback<WGPUCreateComputePipelineAsyncCallback> callback;
|
|
||||||
EXPECT_CALL(callback,
|
|
||||||
Call(WGPUCreatePipelineAsyncStatus_Error, nullptr, testing::NotNull(), this));
|
|
||||||
// Error case: CreateComputePipelineAsync is disallowed.
|
|
||||||
device.CreateComputePipelineAsync(&desc, callback.Callback(), callback.MakeUserdata(this));
|
|
||||||
|
|
||||||
WaitForAllOperations(device);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check that CreateRenderPipelineAsync is disallowed as part of unsafe APIs
|
|
||||||
TEST_F(UnsafeAPIValidationTest, CreateRenderPipelineAsyncDisallowed) {
|
|
||||||
utils::ComboRenderPipelineDescriptor2 desc;
|
|
||||||
desc.vertex.module = utils::CreateShaderModule(device, R"(
|
|
||||||
[[builtin(position)]] var<out> Position : vec4<f32>;
|
|
||||||
[[stage(vertex)]] fn main() -> void {
|
|
||||||
Position = vec4<f32>(0.0, 0.0, 0.0, 1.0);
|
|
||||||
})");
|
|
||||||
desc.cFragment.module = utils::CreateShaderModule(device, R"(
|
|
||||||
[[location(0)]] var<out> o_color : vec4<f32>;
|
|
||||||
[[stage(fragment)]] fn main() -> void {
|
|
||||||
o_color = vec4<f32>(0.0, 1.0, 0.0, 1.0);
|
|
||||||
})");
|
|
||||||
desc.cTargets[0].format = wgpu::TextureFormat::RGBA8Unorm;
|
|
||||||
|
|
||||||
// Control case: CreateRenderPipeline is allowed.
|
|
||||||
device.CreateRenderPipeline2(&desc);
|
|
||||||
// TODO(bajones): Enable this when the deprecation warning is re-enabled in Device.cpp.
|
|
||||||
// EXPECT_DEPRECATION_WARNING(device.CreateRenderPipeline(&desc));
|
|
||||||
|
|
||||||
testing::MockCallback<WGPUCreateRenderPipelineAsyncCallback> callback;
|
|
||||||
EXPECT_CALL(callback,
|
|
||||||
Call(WGPUCreatePipelineAsyncStatus_Error, nullptr, testing::NotNull(), this));
|
|
||||||
// Error case: CreateRenderPipelineAsync is disallowed.
|
|
||||||
device.CreateRenderPipelineAsync(&desc, callback.Callback(), callback.MakeUserdata(this));
|
|
||||||
|
|
||||||
WaitForAllOperations(device);
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue