wined3d: Use GL_STATIC_DRAW_ARB for static buffers.
This mostly affects the initial placement of the VBO. If an application really does use a static buffer as if it was a dynamic one the driver is likely to migrate it out of VRAM anyway, we shouldn't penalize more well-behaved applications for that.
This commit is contained in:
parent
f91c0356e7
commit
12a05be5b6
|
@ -113,7 +113,8 @@ static void delete_gl_buffer(struct wined3d_buffer *This, const struct wined3d_g
|
||||||
/* Context activation is done by the caller. */
|
/* Context activation is done by the caller. */
|
||||||
static void buffer_create_buffer_object(struct wined3d_buffer *This, const struct wined3d_gl_info *gl_info)
|
static void buffer_create_buffer_object(struct wined3d_buffer *This, const struct wined3d_gl_info *gl_info)
|
||||||
{
|
{
|
||||||
GLenum error, gl_usage;
|
GLenum gl_usage = GL_STATIC_DRAW_ARB;
|
||||||
|
GLenum error;
|
||||||
|
|
||||||
TRACE("Creating an OpenGL vertex buffer object for wined3d_buffer %p with usage %s.\n",
|
TRACE("Creating an OpenGL vertex buffer object for wined3d_buffer %p with usage %s.\n",
|
||||||
This, debug_d3dusage(This->resource.usage));
|
This, debug_d3dusage(This->resource.usage));
|
||||||
|
@ -149,12 +150,9 @@ static void buffer_create_buffer_object(struct wined3d_buffer *This, const struc
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Don't use static, because dx apps tend to update the buffer
|
if (This->resource.usage & WINED3DUSAGE_DYNAMIC)
|
||||||
* quite often even if they specify 0 usage.
|
|
||||||
*/
|
|
||||||
if(This->resource.usage & WINED3DUSAGE_DYNAMIC)
|
|
||||||
{
|
{
|
||||||
TRACE("Gl usage = GL_STREAM_DRAW_ARB\n");
|
TRACE("Buffer has WINED3DUSAGE_DYNAMIC set.\n");
|
||||||
gl_usage = GL_STREAM_DRAW_ARB;
|
gl_usage = GL_STREAM_DRAW_ARB;
|
||||||
|
|
||||||
if(gl_info->supported[APPLE_FLUSH_BUFFER_RANGE])
|
if(gl_info->supported[APPLE_FLUSH_BUFFER_RANGE])
|
||||||
|
@ -169,11 +167,6 @@ static void buffer_create_buffer_object(struct wined3d_buffer *This, const struc
|
||||||
}
|
}
|
||||||
/* No setup is needed here for GL_ARB_map_buffer_range */
|
/* No setup is needed here for GL_ARB_map_buffer_range */
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
TRACE("Gl usage = GL_DYNAMIC_DRAW_ARB\n");
|
|
||||||
gl_usage = GL_DYNAMIC_DRAW_ARB;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Reserve memory for the buffer. The amount of data won't change
|
/* Reserve memory for the buffer. The amount of data won't change
|
||||||
* so we are safe with calling glBufferData once and
|
* so we are safe with calling glBufferData once and
|
||||||
|
|
Loading…
Reference in New Issue