dawn_wire: Tag deserialize commands with volatile pointer

This prevents bugs where the compiler assumes a piece of memory
will be the same if read from twice.

Bug: dawn:230
Change-Id: Ib3358e56b6cf8f1fbf449c5d564ef85c969d695b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/11840
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
This commit is contained in:
Austin Eng
2019-10-07 20:38:47 +00:00
committed by Commit Bot service account
parent d561448d0d
commit 8eb8385e2e
13 changed files with 47 additions and 27 deletions

View File

@@ -32,7 +32,7 @@ namespace dawn_wire {
class DAWN_WIRE_EXPORT CommandHandler {
public:
virtual ~CommandHandler() = default;
virtual const char* HandleCommands(const char* commands, size_t size) = 0;
virtual const volatile char* HandleCommands(const volatile char* commands, size_t size) = 0;
};
} // namespace dawn_wire

View File

@@ -44,7 +44,8 @@ namespace dawn_wire {
DawnDevice GetDevice() const;
DawnProcTable GetProcs() const;
const char* HandleCommands(const char* commands, size_t size) override final;
const volatile char* HandleCommands(const volatile char* commands,
size_t size) override final;
ReservedTexture ReserveTexture(DawnDevice device);

View File

@@ -38,7 +38,8 @@ namespace dawn_wire {
WireServer(const WireServerDescriptor& descriptor);
~WireServer();
const char* HandleCommands(const char* commands, size_t size) override final;
const volatile char* HandleCommands(const volatile char* commands,
size_t size) override final;
bool InjectTexture(DawnTexture texture, uint32_t id, uint32_t generation);