Module: wine Branch: master Commit: b1cc82a29f50dd7cc6703c33ee11df0f0db84b02 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b1cc82a29f50dd7cc6703c33ee...
Author: Józef Kucia jkucia@codeweavers.com Date: Sun Oct 16 21:46:44 2016 +0200
wined3d: Let buffer_direct_upload() invalidate STATE_INDEXBUFFER if needed.
Signed-off-by: Józef Kucia jkucia@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wined3d/buffer.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c index b50132a..8943144 100644 --- a/dlls/wined3d/buffer.c +++ b/dlls/wined3d/buffer.c @@ -668,15 +668,13 @@ drop_query: }
/* The caller provides a GL context */ -static void buffer_direct_upload(struct wined3d_buffer *This, const struct wined3d_gl_info *gl_info, DWORD flags) +static void buffer_direct_upload(struct wined3d_buffer *This, struct wined3d_context *context, DWORD flags) { + const struct wined3d_gl_info *gl_info = context->gl_info; + unsigned int start, len; BYTE *map; - UINT start, len;
- /* This potentially invalidates the element array buffer binding, but the - * caller always takes care of this. */ - GL_EXTCALL(glBindBuffer(This->buffer_type_hint, This->buffer_object)); - checkGLcall("glBindBuffer"); + buffer_bind(This, context); if (gl_info->supported[ARB_MAP_BUFFER_RANGE]) { GLbitfield mapflags; @@ -686,7 +684,7 @@ static void buffer_direct_upload(struct wined3d_buffer *This, const struct wined else if (!(flags & WINED3D_BUFFER_SYNC)) mapflags |= GL_MAP_UNSYNCHRONIZED_BIT; map = GL_EXTCALL(glMapBufferRange(This->buffer_type_hint, 0, - This->resource.size, mapflags)); + This->resource.size, mapflags)); checkGLcall("glMapBufferRange"); } else @@ -867,12 +865,9 @@ void buffer_internal_preload(struct wined3d_buffer *buffer, struct wined3d_conte
/* Nothing to do because we locked directly into the vbo */ if (!(buffer->flags & WINED3D_BUFFER_DOUBLEBUFFER)) - { return; - } - - buffer_direct_upload(buffer, gl_info, flags);
+ buffer_direct_upload(buffer, context, flags); return; }