git.ucc.asn.au
/
ipdf
/
code.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
profileon/profileoff in debugscript
[ipdf/code.git]
/
src
/
graphicsbuffer.cpp
diff --git
a/src/graphicsbuffer.cpp
b/src/graphicsbuffer.cpp
index
8075453
..
c3d9620
100644
(file)
--- a/
src/graphicsbuffer.cpp
+++ b/
src/graphicsbuffer.cpp
@@
-130,11
+130,13
@@
bool GraphicsBuffer::RecreateBuffer(const void *data)
{
glDeleteBuffers(1, &m_buffer_handle);
}
- glGenBuffers(1, &m_buffer_handle);
- glObjectLabel(GL_BUFFER, m_buffer_handle, -1, m_name);
- m_buffer_shape_dirty = false;
if (m_buffer_size)
+ {
+ glGenBuffers(1, &m_buffer_handle);
+ glObjectLabel(GL_BUFFER, m_buffer_handle, -1, m_name);
+ m_buffer_shape_dirty = false;
Upload(m_buffer_size, data);
+ }
return true;
}
@@
-156,6
+158,10
@@
void* GraphicsBuffer::Map(bool read, bool write, bool invalidate)
if (m_map_pointer)
Warn("Tried to map already mapped buffer!");
+ // Intel really doesn't seem to like this.
+ if (!m_buffer_size)
+ return (m_map_pointer = 0);
+
if (!read && m_buffer_usage == BufferUsage::BufferUsageStaticDraw)
{
@@
-181,6
+187,10
@@
void* GraphicsBuffer::MapRange(int offset, int length, bool read, bool write, bo
if (m_map_pointer)
Warn("Tried to map already mapped buffer!");
+ // This sometimes makes Intel corrupt memory?
+ if (!length) return (m_map_pointer = 0);
+
+
RecreateBuffer();
Bind();
@@
-243,9
+253,18
@@
void GraphicsBuffer::UploadRange(size_t length, intptr_t offset, const void* dat
void GraphicsBuffer::Resize(size_t length)
{
- if (
m_invalidated && m_buffer_size > length
)
+ if (
!m_buffer_size
)
{
m_buffer_size = length;
+ return;
+ }
+ if (m_invalidated && m_buffer_size >= length)
+ {
+ m_buffer_size = length;
+ }
+ else if (length <= m_buffer_size)
+ {
+ // Don't need to do anything.
}
else
{
UCC
git Repository :: git.ucc.asn.au