mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-14 07:36:15 +00:00
dawn_wire: Move manual class members from ServerBase to Server
Bug: dawn:88 Change-Id: Ic216006aa52cace7aa7451b957e72119783e6d7a Reviewed-on: https://dawn-review.googlesource.com/c/4100 Commit-Queue: Austin Eng <enga@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
2427666df1
commit
8749506bae
@@ -17,9 +17,9 @@
|
||||
namespace dawn_wire { namespace server {
|
||||
|
||||
Server::Server(dawnDevice device, const dawnProcTable& procs, CommandSerializer* serializer)
|
||||
: ServerBase(device, procs, serializer) {
|
||||
: mSerializer(serializer), mProcs(procs) {
|
||||
// The client-server knowledge is bootstrapped with device 1.
|
||||
auto* deviceData = mKnownDevice.Allocate(1);
|
||||
auto* deviceData = DeviceObjects().Allocate(1);
|
||||
deviceData->handle = device;
|
||||
deviceData->valid = true;
|
||||
|
||||
@@ -28,6 +28,11 @@ namespace dawn_wire { namespace server {
|
||||
}
|
||||
|
||||
Server::~Server() {
|
||||
DestroyAllObjects(mProcs);
|
||||
}
|
||||
|
||||
void* Server::GetCmdSpace(size_t size) {
|
||||
return mSerializer->GetCmdSpace(size);
|
||||
}
|
||||
|
||||
}} // namespace dawn_wire::server
|
||||
|
||||
@@ -19,6 +19,22 @@
|
||||
|
||||
namespace dawn_wire { namespace server {
|
||||
|
||||
class Server;
|
||||
|
||||
struct MapUserdata {
|
||||
Server* server;
|
||||
ObjectHandle buffer;
|
||||
uint32_t requestSerial;
|
||||
uint32_t size;
|
||||
bool isWrite;
|
||||
};
|
||||
|
||||
struct FenceCompletionUserdata {
|
||||
Server* server;
|
||||
ObjectHandle fence;
|
||||
uint64_t value;
|
||||
};
|
||||
|
||||
class Server : public ServerBase, public CommandHandler {
|
||||
public:
|
||||
Server(dawnDevice device, const dawnProcTable& procs, CommandSerializer* serializer);
|
||||
@@ -27,6 +43,8 @@ namespace dawn_wire { namespace server {
|
||||
const char* HandleCommands(const char* commands, size_t size);
|
||||
|
||||
private:
|
||||
void* GetCmdSpace(size_t size);
|
||||
|
||||
// Forwarding callbacks
|
||||
static void ForwardDeviceErrorToServer(const char* message, dawnCallbackUserdata userdata);
|
||||
static void ForwardBufferMapReadAsync(dawnBufferMapAsyncStatus status,
|
||||
@@ -56,6 +74,10 @@ namespace dawn_wire { namespace server {
|
||||
bool HandleDestroyObject(const char** commands, size_t* size);
|
||||
|
||||
#include "dawn_wire/server/ServerPrototypes_autogen.inl"
|
||||
|
||||
CommandSerializer* mSerializer = nullptr;
|
||||
WireDeserializeAllocator mAllocator;
|
||||
dawnProcTable mProcs;
|
||||
};
|
||||
|
||||
}} // namespace dawn_wire::server
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
namespace dawn_wire { namespace server {
|
||||
|
||||
bool Server::PreHandleBufferUnmap(const BufferUnmapCmd& cmd) {
|
||||
auto* selfData = mKnownBuffer.Get(cmd.selfId);
|
||||
auto* selfData = BufferObjects().Get(cmd.selfId);
|
||||
ASSERT(selfData != nullptr);
|
||||
|
||||
selfData->mappedData = nullptr;
|
||||
@@ -49,7 +49,7 @@ namespace dawn_wire { namespace server {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto* buffer = mKnownBuffer.Get(bufferId);
|
||||
auto* buffer = BufferObjects().Get(bufferId);
|
||||
if (buffer == nullptr) {
|
||||
return false;
|
||||
}
|
||||
@@ -100,7 +100,7 @@ namespace dawn_wire { namespace server {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto* buffer = mKnownBuffer.Get(bufferId);
|
||||
auto* buffer = BufferObjects().Get(bufferId);
|
||||
if (buffer == nullptr || !buffer->valid || buffer->mappedData == nullptr ||
|
||||
buffer->mappedDataSize != dataLength) {
|
||||
return false;
|
||||
@@ -133,7 +133,7 @@ namespace dawn_wire { namespace server {
|
||||
std::unique_ptr<MapUserdata> data(userdata);
|
||||
|
||||
// Skip sending the callback if the buffer has already been destroyed.
|
||||
auto* bufferData = mKnownBuffer.Get(data->buffer.id);
|
||||
auto* bufferData = BufferObjects().Get(data->buffer.id);
|
||||
if (bufferData == nullptr || bufferData->serial != data->buffer.serial) {
|
||||
return;
|
||||
}
|
||||
@@ -160,7 +160,7 @@ namespace dawn_wire { namespace server {
|
||||
std::unique_ptr<MapUserdata> data(userdata);
|
||||
|
||||
// Skip sending the callback if the buffer has already been destroyed.
|
||||
auto* bufferData = mKnownBuffer.Get(data->buffer.id);
|
||||
auto* bufferData = BufferObjects().Get(data->buffer.id);
|
||||
if (bufferData == nullptr || bufferData->serial != data->buffer.serial) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -21,9 +21,9 @@ namespace dawn_wire { namespace server {
|
||||
if (cmd.fence == nullptr) {
|
||||
return false;
|
||||
}
|
||||
ObjectId fenceId = mFenceIdTable.Get(cmd.fence);
|
||||
ObjectId fenceId = FenceObjectIdTable().Get(cmd.fence);
|
||||
ASSERT(fenceId != 0);
|
||||
auto* fence = mKnownFence.Get(fenceId);
|
||||
auto* fence = FenceObjects().Get(fenceId);
|
||||
ASSERT(fence != nullptr);
|
||||
|
||||
auto* data = new FenceCompletionUserdata;
|
||||
|
||||
Reference in New Issue
Block a user