Revert "Special-case GetDefaultQueue in the wire"

This reverts commit f93791ab62965964f413744bb73884dd6b9abc42.

Reason for revert: breaks gl_tests on roll.

Original change's description:
> Special-case GetDefaultQueue in the wire
> 
> This makes it so calling GetDefaultQueue always returns the same
> object. It required updating various WireTests to account for the
> additional wire calls.
> 
> Bug: dawn:22
> 
> Change-Id: I8c74374b7c732b8bb7d0490bbc740dee0d2dface
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/19726
> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
> Reviewed-by: Austin Eng <enga@chromium.org>
> Reviewed-by: Kai Ninomiya <kainino@chromium.org>

TBR=cwallez@chromium.org,kainino@chromium.org,enga@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: dawn:22
Change-Id: Id2f051b1d4be64a6e16ee8bbe998d72028660334
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/19980
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/dawn_wire.json b/dawn_wire.json
index cdd0d97..b43098f 100644
--- a/dawn_wire.json
+++ b/dawn_wire.json
@@ -101,7 +101,6 @@
             "BufferUnmap",
             "DeviceCreateBuffer",
             "DeviceCreateBufferMapped",
-            "DeviceGetDefaultQueue",
             "DevicePushErrorScope",
             "QueueCreateFence",
             "QueueSignal"
diff --git a/src/dawn_wire/client/ApiProcs.cpp b/src/dawn_wire/client/ApiProcs.cpp
index fddbbde..1d73a7e 100644
--- a/src/dawn_wire/client/ApiProcs.cpp
+++ b/src/dawn_wire/client/ApiProcs.cpp
@@ -370,11 +370,6 @@
     void ClientDeviceRelease(WGPUDevice) {
     }
 
-    WGPUQueue ClientHandwrittenDeviceGetDefaultQueue(WGPUDevice cSelf) {
-        Device* device = reinterpret_cast<Device*>(cSelf);
-        return device->GetDefaultQueue();
-    }
-
     void ClientHandwrittenDeviceSetUncapturedErrorCallback(WGPUDevice cSelf,
                                                            WGPUErrorCallback callback,
                                                            void* userdata) {
diff --git a/src/dawn_wire/client/Client.cpp b/src/dawn_wire/client/Client.cpp
index 7024559..1214e38 100644
--- a/src/dawn_wire/client/Client.cpp
+++ b/src/dawn_wire/client/Client.cpp
@@ -21,6 +21,7 @@
 
     Client::Client(CommandSerializer* serializer, MemoryTransferService* memoryTransferService)
         : ClientBase(),
+          mDevice(DeviceAllocator().New(this)->object.get()),
           mSerializer(serializer),
           mMemoryTransferService(memoryTransferService) {
         if (mMemoryTransferService == nullptr) {
@@ -28,8 +29,6 @@
             mOwnedMemoryTransferService = CreateInlineMemoryTransferService();
             mMemoryTransferService = mOwnedMemoryTransferService.get();
         }
-
-        mDevice = DeviceAllocator().New(this)->object.get();
     }
 
     Client::~Client() {
diff --git a/src/dawn_wire/client/Device.cpp b/src/dawn_wire/client/Device.cpp
index c69983a..67021ef 100644
--- a/src/dawn_wire/client/Device.cpp
+++ b/src/dawn_wire/client/Device.cpp
@@ -16,46 +16,20 @@
 
 #include "common/Assert.h"
 #include "dawn_wire/WireCmd_autogen.h"
-#include "dawn_wire/client/ApiObjects_autogen.h"
 #include "dawn_wire/client/Client.h"
-#include "dawn_wire/client/ObjectAllocator.h"
 
 namespace dawn_wire { namespace client {
 
     Device::Device(Client* client, uint32_t initialRefcount, uint32_t initialId)
         : ObjectBase(this, initialRefcount, initialId), mClient(client) {
         this->device = this;
-
-        // Get the default queue for this device.
-        ObjectAllocator<Queue>::ObjectAndSerial* allocation = mClient->QueueAllocator().New(this);
-        mDefaultQueue = allocation->object.get();
-
-        DeviceGetDefaultQueueCmd cmd;
-        cmd.self = reinterpret_cast<WGPUDevice>(this);
-        cmd.result = ObjectHandle{allocation->object->id, allocation->generation};
-
-        size_t requiredSize = cmd.GetRequiredSize();
-        char* allocatedBuffer = static_cast<char*>(mClient->GetCmdSpace(requiredSize));
-        cmd.Serialize(allocatedBuffer, *mClient);
     }
 
     Device::~Device() {
-        // Fire pending error scopes
         auto errorScopes = std::move(mErrorScopes);
         for (const auto& it : errorScopes) {
             it.second.callback(WGPUErrorType_Unknown, "Device destroyed", it.second.userdata);
         }
-
-        // Destroy the default queue
-        DestroyObjectCmd cmd;
-        cmd.objectType = ObjectType::Queue;
-        cmd.objectId = mDefaultQueue->id;
-
-        size_t requiredSize = cmd.GetRequiredSize();
-        char* allocatedBuffer = static_cast<char*>(mClient->GetCmdSpace(requiredSize));
-        cmd.Serialize(allocatedBuffer);
-
-        mClient->QueueAllocator().Free(mDefaultQueue);
     }
 
     Client* Device::GetClient() {
@@ -145,9 +119,4 @@
         return true;
     }
 
-    WGPUQueue Device::GetDefaultQueue() {
-        mDefaultQueue->refcount++;
-        return reinterpret_cast<WGPUQueue>(mDefaultQueue);
-    }
-
 }}  // namespace dawn_wire::client
diff --git a/src/dawn_wire/client/Device.h b/src/dawn_wire/client/Device.h
index f32259a..e70cae2 100644
--- a/src/dawn_wire/client/Device.h
+++ b/src/dawn_wire/client/Device.h
@@ -24,7 +24,6 @@
 namespace dawn_wire { namespace client {
 
     class Client;
-    struct Queue;
 
     class Device : public ObjectBase {
       public:
@@ -41,8 +40,6 @@
         bool RequestPopErrorScope(WGPUErrorCallback callback, void* userdata);
         bool PopErrorScope(uint64_t requestSerial, WGPUErrorType type, const char* message);
 
-        WGPUQueue GetDefaultQueue();
-
       private:
         struct ErrorScopeData {
             WGPUErrorCallback callback = nullptr;
@@ -56,10 +53,8 @@
         WGPUErrorCallback mErrorCallback = nullptr;
         WGPUDeviceLostCallback mDeviceLostCallback = nullptr;
         bool mDidRunLostCallback = false;
-        void* mErrorUserdata = nullptr;
-        void* mDeviceLostUserdata = nullptr;
-
-        Queue* mDefaultQueue = nullptr;
+        void* mErrorUserdata;
+        void* mDeviceLostUserdata;
     };
 
 }}  // namespace dawn_wire::client
diff --git a/src/tests/end2end/QueueTests.cpp b/src/tests/end2end/QueueTests.cpp
index 710caec..242503b 100644
--- a/src/tests/end2end/QueueTests.cpp
+++ b/src/tests/end2end/QueueTests.cpp
@@ -25,7 +25,7 @@
 TEST_P(QueueTests, GetDefaultQueueSameObject) {
     wgpu::Queue q1 = device.GetDefaultQueue();
     wgpu::Queue q2 = device.GetDefaultQueue();
-    EXPECT_EQ(q1.Get(), q2.Get());
+    EXPECT_EQ(q1.Get() == q2.Get(), !UsesWire());
 }
 
 DAWN_INSTANTIATE_TEST(QueueTests,
diff --git a/src/tests/unittests/wire/WireArgumentTests.cpp b/src/tests/unittests/wire/WireArgumentTests.cpp
index f37b203..cbcd793 100644
--- a/src/tests/unittests/wire/WireArgumentTests.cpp
+++ b/src/tests/unittests/wire/WireArgumentTests.cpp
@@ -232,6 +232,11 @@
             .WillOnce(Return(apiCmdBufs[i]));
     }
 
+    // Create queue
+    WGPUQueue queue = wgpuDeviceGetDefaultQueue(device);
+    WGPUQueue apiQueue = api.GetNewQueue();
+    EXPECT_CALL(api, DeviceGetDefaultQueue(apiDevice)).WillOnce(Return(apiQueue));
+
     // Submit command buffer and check we got a call with both API-side command buffers
     wgpuQueueSubmit(queue, 2, cmdBufs);
 
diff --git a/src/tests/unittests/wire/WireFenceTests.cpp b/src/tests/unittests/wire/WireFenceTests.cpp
index 1cd5770..ffff49f 100644
--- a/src/tests/unittests/wire/WireFenceTests.cpp
+++ b/src/tests/unittests/wire/WireFenceTests.cpp
@@ -44,6 +44,12 @@
             std::make_unique<StrictMock<MockFenceOnCompletionCallback>>();
 
         {
+            queue = wgpuDeviceGetDefaultQueue(device);
+            apiQueue = api.GetNewQueue();
+            EXPECT_CALL(api, DeviceGetDefaultQueue(apiDevice)).WillOnce(Return(apiQueue));
+            FlushClient();
+        }
+        {
             WGPUFenceDescriptor descriptor = {};
             descriptor.initialValue = 1;
 
@@ -83,6 +89,9 @@
     // A successfully created fence
     WGPUFence fence;
     WGPUFence apiFence;
+
+    WGPUQueue queue;
+    WGPUQueue apiQueue;
 };
 
 // Check that signaling a fence succeeds
@@ -218,8 +227,7 @@
 }
 
 // Test that signaling a fence on a wrong queue is invalid
-// DISABLED until we have support for multiple queues.
-TEST_F(WireFenceTests, DISABLED_SignalWrongQueue) {
+TEST_F(WireFenceTests, SignalWrongQueue) {
     WGPUQueue queue2 = wgpuDeviceGetDefaultQueue(device);
     WGPUQueue apiQueue2 = api.GetNewQueue();
     EXPECT_CALL(api, DeviceGetDefaultQueue(apiDevice)).WillOnce(Return(apiQueue2));
@@ -232,8 +240,7 @@
 }
 
 // Test that signaling a fence on a wrong queue does not update fence signaled value
-// DISABLED until we have support for multiple queues.
-TEST_F(WireFenceTests, DISABLED_SignalWrongQueueDoesNotUpdateValue) {
+TEST_F(WireFenceTests, SignalWrongQueueDoesNotUpdateValue) {
     WGPUQueue queue2 = wgpuDeviceGetDefaultQueue(device);
     WGPUQueue apiQueue2 = api.GetNewQueue();
     EXPECT_CALL(api, DeviceGetDefaultQueue(apiDevice)).WillOnce(Return(apiQueue2));
diff --git a/src/tests/unittests/wire/WireMultipleDeviceTests.cpp b/src/tests/unittests/wire/WireMultipleDeviceTests.cpp
index e3aef3a..da6f1e0 100644
--- a/src/tests/unittests/wire/WireMultipleDeviceTests.cpp
+++ b/src/tests/unittests/wire/WireMultipleDeviceTests.cpp
@@ -69,12 +69,6 @@
             mS2cBuf->SetHandler(mWireClient.get());
 
             mClientDevice = mWireClient->GetDevice();
-
-            // The GetDefaultQueue is done on WireClient startup so we expect it now.
-            mClientQueue = wgpuDeviceGetDefaultQueue(mClientDevice);
-            mServerQueue = mApi.GetNewQueue();
-            EXPECT_CALL(mApi, DeviceGetDefaultQueue(mServerDevice)).WillOnce(Return(mServerQueue));
-            FlushClient();
         }
 
         ~WireHolder() {
@@ -103,14 +97,6 @@
             return mServerDevice;
         }
 
-        WGPUQueue ClientQueue() {
-            return mClientQueue;
-        }
-
-        WGPUQueue ServerQueue() {
-            return mServerQueue;
-        }
-
       private:
         testing::StrictMock<MockProcTable> mApi;
         std::unique_ptr<dawn_wire::WireServer> mWireServer;
@@ -119,8 +105,6 @@
         std::unique_ptr<utils::TerribleCommandBuffer> mC2sBuf;
         WGPUDevice mServerDevice;
         WGPUDevice mClientDevice;
-        WGPUQueue mServerQueue;
-        WGPUQueue mClientQueue;
     };
 
     void ExpectInjectedError(WireHolder* wire) {
@@ -150,12 +134,20 @@
     WireHolder wireA;
     WireHolder wireB;
 
-    // Create the fence
+    // Create the objects
+    WGPUQueue queueA = wgpuDeviceGetDefaultQueue(wireA.ClientDevice());
+    WGPUQueue queueB = wgpuDeviceGetDefaultQueue(wireB.ClientDevice());
+
     WGPUFenceDescriptor desc = {};
-    WGPUFence fenceA = wgpuQueueCreateFence(wireA.ClientQueue(), &desc);
+    WGPUFence fenceA = wgpuQueueCreateFence(queueA, &desc);
+
+    // Flush on wire B. We should see the queue created.
+    EXPECT_CALL(*wireB.Api(), DeviceGetDefaultQueue(wireB.ServerDevice()))
+        .WillOnce(Return(wireB.Api()->GetNewQueue()));
+    wireB.FlushClient();
 
     // Signal with a fence from a different wire.
-    wgpuQueueSignal(wireB.ClientQueue(), fenceA, 1u);
+    wgpuQueueSignal(queueB, fenceA, 1u);
 
     // We should inject an error into the server.
     ExpectInjectedError(&wireB);
diff --git a/src/tests/unittests/wire/WireTest.cpp b/src/tests/unittests/wire/WireTest.cpp
index bdac99f..ee4a62b 100644
--- a/src/tests/unittests/wire/WireTest.cpp
+++ b/src/tests/unittests/wire/WireTest.cpp
@@ -70,12 +70,6 @@
     dawnProcSetProcs(&clientProcs);
 
     apiDevice = mockDevice;
-
-    // The GetDefaultQueue is done on WireClient startup so we expect it now.
-    queue = wgpuDeviceGetDefaultQueue(device);
-    apiQueue = api.GetNewQueue();
-    EXPECT_CALL(api, DeviceGetDefaultQueue(apiDevice)).WillOnce(Return(apiQueue));
-    FlushClient();
 }
 
 void WireTest::TearDown() {
@@ -110,7 +104,6 @@
 }
 
 void WireTest::DeleteServer() {
-    EXPECT_CALL(api, QueueRelease(apiQueue)).Times(1);
     mWireServer = nullptr;
 }
 
diff --git a/src/tests/unittests/wire/WireTest.h b/src/tests/unittests/wire/WireTest.h
index 7a8ed5a..7a6c234 100644
--- a/src/tests/unittests/wire/WireTest.h
+++ b/src/tests/unittests/wire/WireTest.h
@@ -123,9 +123,7 @@
 
     testing::StrictMock<MockProcTable> api;
     WGPUDevice apiDevice;
-    WGPUQueue apiQueue;
     WGPUDevice device;
-    WGPUQueue queue;
 
     dawn_wire::WireServer* GetWireServer();
     dawn_wire::WireClient* GetWireClient();