blob: b45fbc714ee9c89516f059ef8cae0e4f6ffc5c80 [file] [log] [blame]
Austin Engcac04422020-10-13 22:35:34 +00001// Copyright 2020 The Dawn Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#include "dawn_wire/ChunkedCommandSerializer.h"
16
Corentin Wallez5d846ab2022-01-11 09:57:33 +000017namespace dawn::wire {
Austin Engcac04422020-10-13 22:35:34 +000018
19 ChunkedCommandSerializer::ChunkedCommandSerializer(CommandSerializer* serializer)
20 : mSerializer(serializer), mMaxAllocationSize(serializer->GetMaximumAllocationSize()) {
21 }
22
23 void ChunkedCommandSerializer::SerializeChunkedCommand(const char* allocatedBuffer,
24 size_t remainingSize) {
25 while (remainingSize > 0) {
26 size_t chunkSize = std::min(remainingSize, mMaxAllocationSize);
27 void* dst = mSerializer->GetCmdSpace(chunkSize);
28 if (dst == nullptr) {
29 return;
30 }
31 memcpy(dst, allocatedBuffer, chunkSize);
32
33 allocatedBuffer += chunkSize;
34 remainingSize -= chunkSize;
35 }
36 }
37
Corentin Wallez5d846ab2022-01-11 09:57:33 +000038} // namespace dawn::wire