blob: 1d47fd24d10c44864229e4ecd393ba7356bb73af [file] [log] [blame]
// Copyright 2017 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.
#include "gpu/command_buffer/client/command_buffer_direct_locked.h"
namespace gpu {
void CommandBufferDirectLocked::Flush(int32_t put_offset) {
flush_count_++;
client_put_offset_ = put_offset;
if (!flush_locked_)
DoFlush();
}
CommandBuffer::State CommandBufferDirectLocked::WaitForTokenInRange(
int32_t start,
int32_t end) {
State state = GetLastState();
if (state.error != error::kNoError || InRange(start, end, state.token)) {
return state;
} else {
DoFlush();
return CommandBufferDirect::WaitForTokenInRange(start, end);
}
}
CommandBuffer::State CommandBufferDirectLocked::WaitForGetOffsetInRange(
uint32_t set_get_buffer_count,
int32_t start,
int32_t end) {
State state = GetLastState();
if (state.error != error::kNoError ||
(InRange(start, end, state.get_offset) &&
(set_get_buffer_count == state.set_get_buffer_count))) {
return state;
} else {
DoFlush();
return CommandBufferDirect::WaitForGetOffsetInRange(set_get_buffer_count,
start, end);
}
}
scoped_refptr<Buffer> CommandBufferDirectLocked::CreateTransferBuffer(
uint32_t size,
int32_t* id) {
if (fail_create_transfer_buffer_) {
*id = -1;
return nullptr;
} else {
return CommandBufferDirect::CreateTransferBuffer(size, id);
}
}
} // namespace gpu