|
@@ -185,8 +185,12 @@ void RasterizerOpenGL::SetupVertexBuffer() {
|
|
|
const GPUVAddr start = vertex_array.StartAddress();
|
|
const GPUVAddr start = vertex_array.StartAddress();
|
|
|
const GPUVAddr end = regs.vertex_array_limit[index].LimitAddress();
|
|
const GPUVAddr end = regs.vertex_array_limit[index].LimitAddress();
|
|
|
|
|
|
|
|
- ASSERT(end > start);
|
|
|
|
|
- const u64 size = end - start + 1;
|
|
|
|
|
|
|
+ ASSERT(end >= start);
|
|
|
|
|
+ const u64 size = end - start;
|
|
|
|
|
+ if (size == 0) {
|
|
|
|
|
+ glBindVertexBuffer(static_cast<GLuint>(index), 0, 0, vertex_array.stride);
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
const auto [vertex_buffer, vertex_buffer_offset] = buffer_cache.UploadMemory(start, size);
|
|
const auto [vertex_buffer, vertex_buffer_offset] = buffer_cache.UploadMemory(start, size);
|
|
|
glBindVertexBuffer(static_cast<GLuint>(index), vertex_buffer, vertex_buffer_offset,
|
|
glBindVertexBuffer(static_cast<GLuint>(index), vertex_buffer, vertex_buffer_offset,
|
|
|
vertex_array.stride);
|
|
vertex_array.stride);
|
|
@@ -310,8 +314,8 @@ std::size_t RasterizerOpenGL::CalculateVertexArraysSize() const {
|
|
|
const GPUVAddr start = regs.vertex_array[index].StartAddress();
|
|
const GPUVAddr start = regs.vertex_array[index].StartAddress();
|
|
|
const GPUVAddr end = regs.vertex_array_limit[index].LimitAddress();
|
|
const GPUVAddr end = regs.vertex_array_limit[index].LimitAddress();
|
|
|
|
|
|
|
|
- ASSERT(end > start);
|
|
|
|
|
- size += end - start + 1;
|
|
|
|
|
|
|
+ size += end - start;
|
|
|
|
|
+ ASSERT(end >= start);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return size;
|
|
return size;
|