164 lines
4.9 KiB
JavaScript
Executable File
164 lines
4.9 KiB
JavaScript
Executable File
// Copyright 2014 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
'use strict';
|
|
|
|
(function() {
|
|
var mojomId = 'gpu/ipc/common/sync_token.mojom';
|
|
if (mojo.internal.isMojomLoaded(mojomId)) {
|
|
console.warn('The following mojom is loaded multiple times: ' + mojomId);
|
|
return;
|
|
}
|
|
mojo.internal.markMojomLoaded(mojomId);
|
|
var bindings = mojo;
|
|
var associatedBindings = mojo;
|
|
var codec = mojo.internal;
|
|
var validator = mojo.internal;
|
|
|
|
var exports = mojo.internal.exposeNamespace('gpu.mojom');
|
|
|
|
|
|
var CommandBufferNamespace = {};
|
|
CommandBufferNamespace.INVALID = -1;
|
|
CommandBufferNamespace.GPU_IO = CommandBufferNamespace.INVALID + 1;
|
|
CommandBufferNamespace.IN_PROCESS = CommandBufferNamespace.GPU_IO + 1;
|
|
CommandBufferNamespace.MOJO = CommandBufferNamespace.IN_PROCESS + 1;
|
|
CommandBufferNamespace.MOJO_LOCAL = CommandBufferNamespace.MOJO + 1;
|
|
CommandBufferNamespace.NUM_COMMAND_BUFFER_NAMESPACES = CommandBufferNamespace.MOJO_LOCAL + 1;
|
|
|
|
CommandBufferNamespace.isKnownEnumValue = function(value) {
|
|
switch (value) {
|
|
case -1:
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
return true;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
CommandBufferNamespace.validate = function(enumValue) {
|
|
var isExtensible = false;
|
|
if (isExtensible || this.isKnownEnumValue(enumValue))
|
|
return validator.validationError.NONE;
|
|
|
|
return validator.validationError.UNKNOWN_ENUM_VALUE;
|
|
};
|
|
|
|
function SyncToken(values) {
|
|
this.initDefaults_();
|
|
this.initFields_(values);
|
|
}
|
|
|
|
|
|
SyncToken.prototype.initDefaults_ = function() {
|
|
this.verifiedFlush = false;
|
|
this.namespaceId = 0;
|
|
this.commandBufferId = 0;
|
|
this.releaseCount = 0;
|
|
};
|
|
SyncToken.prototype.initFields_ = function(fields) {
|
|
for(var field in fields) {
|
|
if (this.hasOwnProperty(field))
|
|
this[field] = fields[field];
|
|
}
|
|
};
|
|
SyncToken.generate = function(generator_) {
|
|
var generated = new SyncToken;
|
|
generated.verifiedFlush = generator_.generateBool();
|
|
generated.namespaceId = generator_.generateEnum(0, 4);
|
|
generated.commandBufferId = generator_.generateUint64();
|
|
generated.releaseCount = generator_.generateUint64();
|
|
return generated;
|
|
};
|
|
|
|
SyncToken.prototype.mutate = function(mutator_) {
|
|
if (mutator_.chooseMutateField()) {
|
|
this.verifiedFlush = mutator_.mutateBool(this.verifiedFlush);
|
|
}
|
|
if (mutator_.chooseMutateField()) {
|
|
this.namespaceId = mutator_.mutateEnum(this.namespaceId, 0, 4);
|
|
}
|
|
if (mutator_.chooseMutateField()) {
|
|
this.commandBufferId = mutator_.mutateUint64(this.commandBufferId);
|
|
}
|
|
if (mutator_.chooseMutateField()) {
|
|
this.releaseCount = mutator_.mutateUint64(this.releaseCount);
|
|
}
|
|
return this;
|
|
};
|
|
SyncToken.prototype.getHandleDeps = function() {
|
|
var handles = [];
|
|
return handles;
|
|
};
|
|
|
|
SyncToken.prototype.setHandles = function() {
|
|
this.setHandlesInternal_(arguments, 0);
|
|
};
|
|
SyncToken.prototype.setHandlesInternal_ = function(handles, idx) {
|
|
return idx;
|
|
};
|
|
|
|
SyncToken.validate = function(messageValidator, offset) {
|
|
var err;
|
|
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
|
|
if (err !== validator.validationError.NONE)
|
|
return err;
|
|
|
|
var kVersionSizes = [
|
|
{version: 0, numBytes: 32}
|
|
];
|
|
err = messageValidator.validateStructVersion(offset, kVersionSizes);
|
|
if (err !== validator.validationError.NONE)
|
|
return err;
|
|
|
|
|
|
|
|
// validate SyncToken.namespaceId
|
|
err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 4, CommandBufferNamespace);
|
|
if (err !== validator.validationError.NONE)
|
|
return err;
|
|
|
|
|
|
|
|
return validator.validationError.NONE;
|
|
};
|
|
|
|
SyncToken.encodedSize = codec.kStructHeaderSize + 24;
|
|
|
|
SyncToken.decode = function(decoder) {
|
|
var packed;
|
|
var val = new SyncToken();
|
|
var numberOfBytes = decoder.readUint32();
|
|
var version = decoder.readUint32();
|
|
packed = decoder.readUint8();
|
|
val.verifiedFlush = (packed >> 0) & 1 ? true : false;
|
|
decoder.skip(1);
|
|
decoder.skip(1);
|
|
decoder.skip(1);
|
|
val.namespaceId = decoder.decodeStruct(codec.Int32);
|
|
val.commandBufferId = decoder.decodeStruct(codec.Uint64);
|
|
val.releaseCount = decoder.decodeStruct(codec.Uint64);
|
|
return val;
|
|
};
|
|
|
|
SyncToken.encode = function(encoder, val) {
|
|
var packed;
|
|
encoder.writeUint32(SyncToken.encodedSize);
|
|
encoder.writeUint32(0);
|
|
packed = 0;
|
|
packed |= (val.verifiedFlush & 1) << 0
|
|
encoder.writeUint8(packed);
|
|
encoder.skip(1);
|
|
encoder.skip(1);
|
|
encoder.skip(1);
|
|
encoder.encodeStruct(codec.Int32, val.namespaceId);
|
|
encoder.encodeStruct(codec.Uint64, val.commandBufferId);
|
|
encoder.encodeStruct(codec.Uint64, val.releaseCount);
|
|
};
|
|
exports.CommandBufferNamespace = CommandBufferNamespace;
|
|
exports.SyncToken = SyncToken;
|
|
})(); |