Fixing buffer flushes.
This commit is contained in:
parent
0529fdb84d
commit
0b6b6a4189
|
@ -434,8 +434,8 @@ void CommandProcessor::PrepareForWait() {
|
||||||
// TODO(benvanik): fences and fancy stuff. We should figure out a way to
|
// TODO(benvanik): fences and fancy stuff. We should figure out a way to
|
||||||
// make interrupt callbacks from the GPU so that we don't have to do a full
|
// make interrupt callbacks from the GPU so that we don't have to do a full
|
||||||
// synchronize here.
|
// synchronize here.
|
||||||
//glFlush();
|
glFlush();
|
||||||
glFinish();
|
// glFinish();
|
||||||
|
|
||||||
if (FLAGS_thread_safe_gl) {
|
if (FLAGS_thread_safe_gl) {
|
||||||
context_->ClearCurrent();
|
context_->ClearCurrent();
|
||||||
|
@ -820,6 +820,10 @@ bool CommandProcessor::ExecutePacketType3_XE_SWAP(RingbufferReader* reader,
|
||||||
reader->TraceData(1);
|
reader->TraceData(1);
|
||||||
uint32_t frontbuffer_ptr = reader->Read();
|
uint32_t frontbuffer_ptr = reader->Read();
|
||||||
reader->Advance(count - 1);
|
reader->Advance(count - 1);
|
||||||
|
|
||||||
|
// Ensure we issue any pending draws.
|
||||||
|
draw_batcher_.Flush(DrawBatcher::FlushMode::kMakeCoherent);
|
||||||
|
|
||||||
if (swap_handler_) {
|
if (swap_handler_) {
|
||||||
SwapParameters swap_params;
|
SwapParameters swap_params;
|
||||||
|
|
||||||
|
@ -1373,7 +1377,14 @@ bool CommandProcessor::IssueDraw() {
|
||||||
status = PopulateVertexBuffers();
|
status = PopulateVertexBuffers();
|
||||||
CHECK_ISSUE_UPDATE_STATUS(status, mismatch, "Unable to setup vertex buffers");
|
CHECK_ISSUE_UPDATE_STATUS(status, mismatch, "Unable to setup vertex buffers");
|
||||||
|
|
||||||
return draw_batcher_.CommitDraw();
|
if (!draw_batcher_.CommitDraw()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!has_bindless_vbos_) {
|
||||||
|
// TODO(benvanik): find a way to get around glVertexArrayVertexBuffer below.
|
||||||
|
draw_batcher_.Flush(DrawBatcher::FlushMode::kMakeCoherent);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CommandProcessor::SetShadowRegister(uint32_t& dest,
|
bool CommandProcessor::SetShadowRegister(uint32_t& dest,
|
||||||
|
@ -2053,11 +2064,6 @@ CommandProcessor::UpdateStatus CommandProcessor::PopulateVertexBuffers() {
|
||||||
auto& regs = *register_file_;
|
auto& regs = *register_file_;
|
||||||
assert_not_null(active_vertex_shader_);
|
assert_not_null(active_vertex_shader_);
|
||||||
|
|
||||||
if (!has_bindless_vbos_) {
|
|
||||||
// TODO(benvanik): find a way to get around glVertexArrayVertexBuffer below.
|
|
||||||
draw_batcher_.Flush(DrawBatcher::FlushMode::kMakeCoherent);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t el_index = 0;
|
uint32_t el_index = 0;
|
||||||
const auto& buffer_inputs = active_vertex_shader_->buffer_inputs();
|
const auto& buffer_inputs = active_vertex_shader_->buffer_inputs();
|
||||||
for (uint32_t buffer_index = 0; buffer_index < buffer_inputs.count;
|
for (uint32_t buffer_index = 0; buffer_index < buffer_inputs.count;
|
||||||
|
|
Loading…
Reference in New Issue