wined3d: Do not try to create a vbo more than once.
This commit is contained in:
parent
d637aa3581
commit
9423fd2d9f
@ -611,6 +611,11 @@ static void CreateVBO(IWineD3DVertexBufferImpl *object) {
|
|||||||
IWineD3DDeviceImpl *This = object->resource.wineD3DDevice; /* Needed for GL_EXTCALL */
|
IWineD3DDeviceImpl *This = object->resource.wineD3DDevice; /* Needed for GL_EXTCALL */
|
||||||
GLenum error, glUsage;
|
GLenum error, glUsage;
|
||||||
DWORD vboUsage = object->resource.usage;
|
DWORD vboUsage = object->resource.usage;
|
||||||
|
if(object->Flags & VBFLAG_VBOCREATEFAIL) {
|
||||||
|
WARN("Creating a vbo failed once, not trying again\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
TRACE("Creating an OpenGL vertex buffer object for IWineD3DVertexBuffer %p\n", object);
|
TRACE("Creating an OpenGL vertex buffer object for IWineD3DVertexBuffer %p\n", object);
|
||||||
|
|
||||||
ENTER_GL();
|
ENTER_GL();
|
||||||
@ -694,6 +699,7 @@ static void CreateVBO(IWineD3DVertexBufferImpl *object) {
|
|||||||
FIXME("Failed to create a vertex buffer object. Continuing, but performance issues can occur\n");
|
FIXME("Failed to create a vertex buffer object. Continuing, but performance issues can occur\n");
|
||||||
if(object->vbo) GL_EXTCALL(glDeleteBuffersARB(1, &object->vbo));
|
if(object->vbo) GL_EXTCALL(glDeleteBuffersARB(1, &object->vbo));
|
||||||
object->vbo = 0;
|
object->vbo = 0;
|
||||||
|
object->Flags |= VBFLAG_VBOCREATEFAIL;
|
||||||
LEAVE_GL();
|
LEAVE_GL();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -654,6 +654,7 @@ extern const IWineD3DVertexBufferVtbl IWineD3DVertexBuffer_Vtbl;
|
|||||||
#define VBFLAG_DIRTY 0x04 /* Buffer data has been modified */
|
#define VBFLAG_DIRTY 0x04 /* Buffer data has been modified */
|
||||||
#define VBFLAG_STREAM 0x08 /* The vertex buffer is in a stream */
|
#define VBFLAG_STREAM 0x08 /* The vertex buffer is in a stream */
|
||||||
#define VBFLAG_HASDESC 0x10 /* A vertex description has been found */
|
#define VBFLAG_HASDESC 0x10 /* A vertex description has been found */
|
||||||
|
#define VBFLAG_VBOCREATEFAIL 0x20 /* An attempt to create a vbo has failed */
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* IWineD3DIndexBuffer implementation structure (extends IWineD3DResourceImpl)
|
* IWineD3DIndexBuffer implementation structure (extends IWineD3DResourceImpl)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user