Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
79a0dece
Commit
79a0dece
authored
Jan 14, 2015
by
Matteo Bruni
Committed by
Alexandre Julliard
Jan 15, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Use the core version of the gl*Buffer* functions.
parent
d45bda30
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
130 additions
and
114 deletions
+130
-114
buffer.c
dlls/wined3d/buffer.c
+28
-28
device.c
dlls/wined3d/device.c
+1
-1
directx.c
dlls/wined3d/directx.c
+21
-5
state.c
dlls/wined3d/state.c
+16
-16
surface.c
dlls/wined3d/surface.c
+43
-43
volume.c
dlls/wined3d/volume.c
+21
-21
No files found.
dlls/wined3d/buffer.c
View file @
79a0dece
...
...
@@ -105,8 +105,8 @@ static void delete_gl_buffer(struct wined3d_buffer *This, const struct wined3d_g
{
if
(
!
This
->
buffer_object
)
return
;
GL_EXTCALL
(
glDeleteBuffers
ARB
(
1
,
&
This
->
buffer_object
));
checkGLcall
(
"glDeleteBuffers
ARB
"
);
GL_EXTCALL
(
glDeleteBuffers
(
1
,
&
This
->
buffer_object
));
checkGLcall
(
"glDeleteBuffers"
);
This
->
buffer_object
=
0
;
if
(
This
->
query
)
...
...
@@ -140,7 +140,7 @@ static void buffer_create_buffer_object(struct wined3d_buffer *This, struct wine
* to be verified to check if the rhw and color values are in the correct
* format. */
GL_EXTCALL
(
glGenBuffers
ARB
(
1
,
&
This
->
buffer_object
));
GL_EXTCALL
(
glGenBuffers
(
1
,
&
This
->
buffer_object
));
error
=
gl_info
->
gl_ops
.
gl
.
p_glGetError
();
if
(
!
This
->
buffer_object
||
error
!=
GL_NO_ERROR
)
{
...
...
@@ -150,7 +150,7 @@ static void buffer_create_buffer_object(struct wined3d_buffer *This, struct wine
if
(
This
->
buffer_type_hint
==
GL_ELEMENT_ARRAY_BUFFER_ARB
)
context_invalidate_state
(
context
,
STATE_INDEXBUFFER
);
GL_EXTCALL
(
glBindBuffer
ARB
(
This
->
buffer_type_hint
,
This
->
buffer_object
));
GL_EXTCALL
(
glBindBuffer
(
This
->
buffer_type_hint
,
This
->
buffer_object
));
error
=
gl_info
->
gl_ops
.
gl
.
p_glGetError
();
if
(
error
!=
GL_NO_ERROR
)
{
...
...
@@ -181,11 +181,11 @@ static void buffer_create_buffer_object(struct wined3d_buffer *This, struct wine
* calling glBufferSubData on updates. Upload the actual data in case
* we're not double buffering, so we can release the heap mem afterwards
*/
GL_EXTCALL
(
glBufferData
ARB
(
This
->
buffer_type_hint
,
This
->
resource
.
size
,
This
->
resource
.
heap_memory
,
gl_usage
));
GL_EXTCALL
(
glBufferData
(
This
->
buffer_type_hint
,
This
->
resource
.
size
,
This
->
resource
.
heap_memory
,
gl_usage
));
error
=
gl_info
->
gl_ops
.
gl
.
p_glGetError
();
if
(
error
!=
GL_NO_ERROR
)
{
ERR
(
"glBufferData
ARB
failed with error %s (%#x)
\n
"
,
debug_glerror
(
error
),
error
);
ERR
(
"glBufferData failed with error %s (%#x)
\n
"
,
debug_glerror
(
error
),
error
);
goto
fail
;
}
...
...
@@ -500,8 +500,8 @@ BYTE *buffer_get_sysmem(struct wined3d_buffer *This, struct wined3d_context *con
if
(
This
->
buffer_type_hint
==
GL_ELEMENT_ARRAY_BUFFER_ARB
)
context_invalidate_state
(
context
,
STATE_INDEXBUFFER
);
GL_EXTCALL
(
glBindBuffer
ARB
(
This
->
buffer_type_hint
,
This
->
buffer_object
));
GL_EXTCALL
(
glGetBufferSubData
ARB
(
This
->
buffer_type_hint
,
0
,
This
->
resource
.
size
,
This
->
resource
.
heap_memory
));
GL_EXTCALL
(
glBindBuffer
(
This
->
buffer_type_hint
,
This
->
buffer_object
));
GL_EXTCALL
(
glGetBufferSubData
(
This
->
buffer_type_hint
,
0
,
This
->
resource
.
size
,
This
->
resource
.
heap_memory
));
This
->
flags
|=
WINED3D_BUFFER_DOUBLEBUFFER
;
return
This
->
resource
.
heap_memory
;
...
...
@@ -589,8 +589,8 @@ static void buffer_sync_apple(struct wined3d_buffer *This, DWORD flags, const st
if
(
flags
&
WINED3D_MAP_DISCARD
)
{
GL_EXTCALL
(
glBufferData
ARB
(
This
->
buffer_type_hint
,
This
->
resource
.
size
,
NULL
,
This
->
buffer_object_usage
));
checkGLcall
(
"glBufferData
ARB
\n
"
);
GL_EXTCALL
(
glBufferData
(
This
->
buffer_type_hint
,
This
->
resource
.
size
,
NULL
,
This
->
buffer_object_usage
));
checkGLcall
(
"glBufferData"
);
return
;
}
...
...
@@ -654,8 +654,8 @@ static void buffer_direct_upload(struct wined3d_buffer *This, const struct wined
/* This potentially invalidates the element array buffer binding, but the
* caller always takes care of this. */
GL_EXTCALL
(
glBindBuffer
ARB
(
This
->
buffer_type_hint
,
This
->
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
This
->
buffer_type_hint
,
This
->
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
if
(
gl_info
->
supported
[
ARB_MAP_BUFFER_RANGE
])
{
GLbitfield
mapflags
;
...
...
@@ -679,8 +679,8 @@ static void buffer_direct_upload(struct wined3d_buffer *This, const struct wined
syncflags
|=
WINED3D_MAP_NOOVERWRITE
;
buffer_sync_apple
(
This
,
syncflags
,
gl_info
);
}
map
=
GL_EXTCALL
(
glMapBuffer
ARB
(
This
->
buffer_type_hint
,
GL_WRITE_ONLY_ARB
));
checkGLcall
(
"glMapBuffer
ARB
"
);
map
=
GL_EXTCALL
(
glMapBuffer
(
This
->
buffer_type_hint
,
GL_WRITE_ONLY
));
checkGLcall
(
"glMapBuffer"
);
}
if
(
!
map
)
{
...
...
@@ -707,8 +707,8 @@ static void buffer_direct_upload(struct wined3d_buffer *This, const struct wined
checkGLcall
(
"glFlushMappedBufferRangeAPPLE"
);
}
}
GL_EXTCALL
(
glUnmapBuffer
ARB
(
This
->
buffer_type_hint
));
checkGLcall
(
"glUnmapBuffer
ARB
"
);
GL_EXTCALL
(
glUnmapBuffer
(
This
->
buffer_type_hint
));
checkGLcall
(
"glUnmapBuffer"
);
}
void
buffer_mark_used
(
struct
wined3d_buffer
*
buffer
)
...
...
@@ -913,10 +913,10 @@ void buffer_internal_preload(struct wined3d_buffer *buffer, struct wined3d_conte
}
}
GL_EXTCALL
(
glBindBuffer
ARB
(
buffer
->
buffer_type_hint
,
buffer
->
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBufferSubData
ARB
(
buffer
->
buffer_type_hint
,
start
,
len
,
data
+
start
));
checkGLcall
(
"glBufferSubData
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
buffer
->
buffer_type_hint
,
buffer
->
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
GL_EXTCALL
(
glBufferSubData
(
buffer
->
buffer_type_hint
,
start
,
len
,
data
+
start
));
checkGLcall
(
"glBufferSubData"
);
}
HeapFree
(
GetProcessHeap
(),
0
,
data
);
...
...
@@ -979,7 +979,7 @@ HRESULT CDECL wined3d_buffer_map(struct wined3d_buffer *buffer, UINT offset, UIN
if
(
buffer
->
buffer_type_hint
==
GL_ELEMENT_ARRAY_BUFFER_ARB
)
context_invalidate_state
(
context
,
STATE_INDEXBUFFER
);
GL_EXTCALL
(
glBindBuffer
ARB
(
buffer
->
buffer_type_hint
,
buffer
->
buffer_object
));
GL_EXTCALL
(
glBindBuffer
(
buffer
->
buffer_type_hint
,
buffer
->
buffer_object
));
if
(
gl_info
->
supported
[
ARB_MAP_BUFFER_RANGE
])
{
...
...
@@ -992,17 +992,17 @@ HRESULT CDECL wined3d_buffer_map(struct wined3d_buffer *buffer, UINT offset, UIN
{
if
(
buffer
->
flags
&
WINED3D_BUFFER_APPLESYNC
)
buffer_sync_apple
(
buffer
,
flags
,
gl_info
);
buffer
->
map_ptr
=
GL_EXTCALL
(
glMapBuffer
ARB
(
buffer
->
buffer_type_hint
,
GL_READ_WRITE
_ARB
));
checkGLcall
(
"glMapBuffer
ARB
"
);
buffer
->
map_ptr
=
GL_EXTCALL
(
glMapBuffer
(
buffer
->
buffer_type_hint
,
GL_READ_WRITE
));
checkGLcall
(
"glMapBuffer"
);
}
if
(((
DWORD_PTR
)
buffer
->
map_ptr
)
&
(
RESOURCE_ALIGNMENT
-
1
))
{
WARN
(
"Pointer %p is not %u byte aligned.
\n
"
,
buffer
->
map_ptr
,
RESOURCE_ALIGNMENT
);
GL_EXTCALL
(
glUnmapBuffer
ARB
(
buffer
->
buffer_type_hint
));
checkGLcall
(
"glUnmapBuffer
ARB
"
);
GL_EXTCALL
(
glUnmapBuffer
(
buffer
->
buffer_type_hint
));
checkGLcall
(
"glUnmapBuffer"
);
buffer
->
map_ptr
=
NULL
;
if
(
buffer
->
resource
.
usage
&
WINED3DUSAGE_DYNAMIC
)
...
...
@@ -1078,7 +1078,7 @@ void CDECL wined3d_buffer_unmap(struct wined3d_buffer *buffer)
if
(
buffer
->
buffer_type_hint
==
GL_ELEMENT_ARRAY_BUFFER_ARB
)
context_invalidate_state
(
context
,
STATE_INDEXBUFFER
);
GL_EXTCALL
(
glBindBuffer
ARB
(
buffer
->
buffer_type_hint
,
buffer
->
buffer_object
));
GL_EXTCALL
(
glBindBuffer
(
buffer
->
buffer_type_hint
,
buffer
->
buffer_object
));
if
(
gl_info
->
supported
[
ARB_MAP_BUFFER_RANGE
])
{
...
...
@@ -1099,7 +1099,7 @@ void CDECL wined3d_buffer_unmap(struct wined3d_buffer *buffer)
}
}
GL_EXTCALL
(
glUnmapBuffer
ARB
(
buffer
->
buffer_type_hint
));
GL_EXTCALL
(
glUnmapBuffer
(
buffer
->
buffer_type_hint
));
if
(
wined3d_settings
.
strict_draw_ordering
)
gl_info
->
gl_ops
.
gl
.
p_glFlush
();
/* Flush to ensure ordering across contexts. */
context_release
(
context
);
...
...
dlls/wined3d/device.c
View file @
79a0dece
...
...
@@ -3019,7 +3019,7 @@ HRESULT CDECL wined3d_device_process_vertices(struct wined3d_device *device,
e
->
data
.
addr
+=
(
ULONG_PTR
)
buffer_get_sysmem
(
buffer
,
context
);
if
(
buffer
->
buffer_object
)
{
GL_EXTCALL
(
glDeleteBuffers
ARB
(
1
,
&
buffer
->
buffer_object
));
GL_EXTCALL
(
glDeleteBuffers
(
1
,
&
buffer
->
buffer_object
));
buffer
->
buffer_object
=
0
;
}
if
(
e
->
data
.
addr
)
...
...
dlls/wined3d/directx.c
View file @
79a0dece
...
...
@@ -570,15 +570,15 @@ static void test_pbo_functionality(struct wined3d_gl_info *gl_info)
gl_info
->
gl_ops
.
gl
.
p_glTexImage2D
(
GL_TEXTURE_2D
,
0
,
GL_RGBA8
,
4
,
4
,
0
,
GL_BGRA
,
GL_UNSIGNED_INT_8_8_8_8_REV
,
0
);
checkGLcall
(
"Specifying the PBO test texture"
);
GL_EXTCALL
(
glGenBuffers
ARB
(
1
,
&
pbo
));
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
pbo
));
GL_EXTCALL
(
glBufferData
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
sizeof
(
pattern
),
pattern
,
GL_STREAM_DRAW_ARB
));
GL_EXTCALL
(
glGenBuffers
(
1
,
&
pbo
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
pbo
));
GL_EXTCALL
(
glBufferData
(
GL_PIXEL_UNPACK_BUFFER
,
sizeof
(
pattern
),
pattern
,
GL_STREAM_DRAW
));
checkGLcall
(
"Specifying the PBO test pbo"
);
gl_info
->
gl_ops
.
gl
.
p_glTexSubImage2D
(
GL_TEXTURE_2D
,
0
,
0
,
0
,
4
,
4
,
GL_BGRA
,
GL_UNSIGNED_INT_8_8_8_8_REV
,
NULL
);
checkGLcall
(
"Loading the PBO test texture"
);
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
0
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
0
));
gl_info
->
gl_ops
.
gl
.
p_glFinish
();
/* just to be sure */
...
...
@@ -587,7 +587,7 @@ static void test_pbo_functionality(struct wined3d_gl_info *gl_info)
checkGLcall
(
"Reading back the PBO test texture"
);
gl_info
->
gl_ops
.
gl
.
p_glDeleteTextures
(
1
,
&
texture
);
GL_EXTCALL
(
glDeleteBuffers
ARB
(
1
,
&
pbo
));
GL_EXTCALL
(
glDeleteBuffers
(
1
,
&
pbo
));
checkGLcall
(
"PBO test cleanup"
);
if
(
memcmp
(
check
,
pattern
,
sizeof
(
check
)))
...
...
@@ -2876,10 +2876,18 @@ static void load_gl_funcs(struct wined3d_gl_info *gl_info)
/* Newer core functions */
USE_GL_FUNC
(
glActiveTexture
)
/* OpenGL 1.3 */
USE_GL_FUNC
(
glBindBuffer
)
/* OpenGL 1.5 */
USE_GL_FUNC
(
glBlendColor
)
/* OpenGL 1.4 */
USE_GL_FUNC
(
glBlendEquation
)
/* OpenGL 1.4 */
USE_GL_FUNC
(
glBlendEquationSeparate
)
/* OpenGL 2.0 */
USE_GL_FUNC
(
glBlendFuncSeparate
)
/* OpenGL 1.4 */
USE_GL_FUNC
(
glBufferData
)
/* OpenGL 1.5 */
USE_GL_FUNC
(
glBufferSubData
)
/* OpenGL 1.5 */
USE_GL_FUNC
(
glDeleteBuffers
)
/* OpenGL 1.5 */
USE_GL_FUNC
(
glGenBuffers
)
/* OpenGL 1.5 */
USE_GL_FUNC
(
glGetBufferSubData
)
/* OpenGL 1.5 */
USE_GL_FUNC
(
glMapBuffer
)
/* OpenGL 1.5 */
USE_GL_FUNC
(
glUnmapBuffer
)
/* OpenGL 1.5 */
#undef USE_GL_FUNC
#ifndef USE_WIN32_OPENGL
...
...
@@ -2896,10 +2904,18 @@ static void load_gl_funcs(struct wined3d_gl_info *gl_info)
} while (0)
MAP_GL_FUNCTION
(
glActiveTexture
,
glActiveTextureARB
);
MAP_GL_FUNCTION
(
glBindBuffer
,
glBindBufferARB
);
MAP_GL_FUNCTION
(
glBlendColor
,
glBlendColorEXT
);
MAP_GL_FUNCTION
(
glBlendEquation
,
glBlendEquationEXT
);
MAP_GL_FUNCTION
(
glBlendEquationSeparate
,
glBlendEquationSeparateEXT
);
MAP_GL_FUNCTION
(
glBlendFuncSeparate
,
glBlendFuncSeparateEXT
);
MAP_GL_FUNCTION
(
glBufferData
,
glBufferDataARB
);
MAP_GL_FUNCTION
(
glBufferSubData
,
glBufferSubDataARB
);
MAP_GL_FUNCTION
(
glDeleteBuffers
,
glDeleteBuffersARB
);
MAP_GL_FUNCTION
(
glGenBuffers
,
glGenBuffersARB
);
MAP_GL_FUNCTION
(
glGetBufferSubData
,
glGetBufferSubDataARB
);
MAP_GL_FUNCTION
(
glMapBuffer
,
glMapBufferARB
);
MAP_GL_FUNCTION
(
glUnmapBuffer
,
glUnmapBufferARB
);
#undef MAP_GL_FUNCTION
}
...
...
dlls/wined3d/state.c
View file @
79a0dece
...
...
@@ -3366,8 +3366,8 @@ static void load_tex_coords(const struct wined3d_context *context, const struct
if
(
*
curVBO
!=
e
->
data
.
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_ARRAY_BUFFER_ARB
,
e
->
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_ARRAY_BUFFER
,
e
->
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
*
curVBO
=
e
->
data
.
buffer_object
;
}
...
...
@@ -4100,8 +4100,8 @@ static void load_numbered_arrays(struct wined3d_context *context,
{
if
(
curVBO
!=
stream_info
->
elements
[
i
].
data
.
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_ARRAY_BUFFER_ARB
,
stream_info
->
elements
[
i
].
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_ARRAY_BUFFER
,
stream_info
->
elements
[
i
].
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
curVBO
=
stream_info
->
elements
[
i
].
data
.
buffer_object
;
}
/* Use the VBO to find out if a vertex buffer exists, not the vb
...
...
@@ -4271,8 +4271,8 @@ static void load_vertex_data(struct wined3d_context *context,
if
(
curVBO
!=
e
->
data
.
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_ARRAY_BUFFER_ARB
,
e
->
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_ARRAY_BUFFER
,
e
->
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
curVBO
=
e
->
data
.
buffer_object
;
}
...
...
@@ -4327,8 +4327,8 @@ static void load_vertex_data(struct wined3d_context *context,
if
(
curVBO
!=
e
->
data
.
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_ARRAY_BUFFER_ARB
,
e
->
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_ARRAY_BUFFER
,
e
->
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
curVBO
=
e
->
data
.
buffer_object
;
}
...
...
@@ -4349,8 +4349,8 @@ static void load_vertex_data(struct wined3d_context *context,
if
(
curVBO
!=
e
->
data
.
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_ARRAY_BUFFER_ARB
,
e
->
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_ARRAY_BUFFER
,
e
->
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
curVBO
=
e
->
data
.
buffer_object
;
}
...
...
@@ -4376,8 +4376,8 @@ static void load_vertex_data(struct wined3d_context *context,
if
(
curVBO
!=
e
->
data
.
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_ARRAY_BUFFER_ARB
,
e
->
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_ARRAY_BUFFER
,
e
->
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
curVBO
=
e
->
data
.
buffer_object
;
}
...
...
@@ -4411,8 +4411,8 @@ static void load_vertex_data(struct wined3d_context *context,
if
(
curVBO
!=
e
->
data
.
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_ARRAY_BUFFER_ARB
,
e
->
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_ARRAY_BUFFER
,
e
->
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
curVBO
=
e
->
data
.
buffer_object
;
}
...
...
@@ -4850,12 +4850,12 @@ static void indexbuffer(struct wined3d_context *context, const struct wined3d_st
if
(
!
state
->
index_buffer
||
!
stream_info
->
all_vbo
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_ELEMENT_ARRAY_BUFFER_ARB
,
0
));
GL_EXTCALL
(
glBindBuffer
(
GL_ELEMENT_ARRAY_BUFFER
,
0
));
}
else
{
struct
wined3d_buffer
*
ib
=
state
->
index_buffer
;
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_ELEMENT_ARRAY_BUFFER_ARB
,
ib
->
buffer_object
));
GL_EXTCALL
(
glBindBuffer
(
GL_ELEMENT_ARRAY_BUFFER
,
ib
->
buffer_object
));
}
}
...
...
dlls/wined3d/surface.c
View file @
79a0dece
...
...
@@ -59,7 +59,7 @@ static void surface_cleanup(struct wined3d_surface *surface)
if
(
surface
->
pbo
)
{
TRACE
(
"Deleting PBO %u.
\n
"
,
surface
->
pbo
);
GL_EXTCALL
(
glDeleteBuffers
ARB
(
1
,
&
surface
->
pbo
));
GL_EXTCALL
(
glDeleteBuffers
(
1
,
&
surface
->
pbo
));
}
if
(
surface
->
rb_multisample
)
...
...
@@ -522,22 +522,22 @@ static void surface_prepare_buffer(struct wined3d_surface *surface)
context
=
context_acquire
(
surface
->
resource
.
device
,
NULL
);
gl_info
=
context
->
gl_info
;
GL_EXTCALL
(
glGenBuffers
ARB
(
1
,
&
surface
->
pbo
));
GL_EXTCALL
(
glGenBuffers
(
1
,
&
surface
->
pbo
));
error
=
gl_info
->
gl_ops
.
gl
.
p_glGetError
();
if
(
!
surface
->
pbo
||
error
!=
GL_NO_ERROR
)
ERR
(
"Failed to create a PBO with error %s (%#x).
\n
"
,
debug_glerror
(
error
),
error
);
TRACE
(
"Binding PBO %u.
\n
"
,
surface
->
pbo
);
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
surface
->
pbo
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
surface
->
pbo
));
checkGLcall
(
"glBindBuffer"
);
GL_EXTCALL
(
glBufferData
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
surface
->
resource
.
size
+
4
,
NULL
,
GL_STREAM_DRAW
_ARB
));
checkGLcall
(
"glBufferData
ARB
"
);
GL_EXTCALL
(
glBufferData
(
GL_PIXEL_UNPACK_BUFFER
,
surface
->
resource
.
size
+
4
,
NULL
,
GL_STREAM_DRAW
));
checkGLcall
(
"glBufferData"
);
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
0
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
0
));
checkGLcall
(
"glBindBuffer"
);
context_release
(
context
);
}
...
...
@@ -733,10 +733,10 @@ static void surface_unmap(struct wined3d_surface *surface)
context
=
context_acquire
(
device
,
NULL
);
gl_info
=
context
->
gl_info
;
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
surface
->
pbo
));
GL_EXTCALL
(
glUnmapBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
));
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
0
));
checkGLcall
(
"glUnmapBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
surface
->
pbo
));
GL_EXTCALL
(
glUnmapBuffer
(
GL_PIXEL_UNPACK_BUFFER
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
0
));
checkGLcall
(
"glUnmapBuffer"
);
context_release
(
context
);
break
;
...
...
@@ -1152,8 +1152,8 @@ HRESULT CDECL wined3d_surface_get_render_target_data(struct wined3d_surface *sur
/* Context activation is done by the caller. */
static
void
surface_remove_pbo
(
struct
wined3d_surface
*
surface
,
const
struct
wined3d_gl_info
*
gl_info
)
{
GL_EXTCALL
(
glDeleteBuffers
ARB
(
1
,
&
surface
->
pbo
));
checkGLcall
(
"glDeleteBuffers
ARB
(1, &surface->pbo)"
);
GL_EXTCALL
(
glDeleteBuffers
(
1
,
&
surface
->
pbo
));
checkGLcall
(
"glDeleteBuffers(1, &surface->pbo)"
);
surface
->
pbo
=
0
;
surface_invalidate_location
(
surface
,
WINED3D_LOCATION_BUFFER
);
...
...
@@ -1340,12 +1340,12 @@ static void surface_download_data(struct wined3d_surface *surface, const struct
if
(
data
.
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
,
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_PACK_BUFFER
,
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
GL_EXTCALL
(
glGetCompressedTexImageARB
(
surface
->
texture_target
,
surface
->
texture_level
,
NULL
));
checkGLcall
(
"glGetCompressedTexImageARB"
);
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
,
0
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_PACK_BUFFER
,
0
));
checkGLcall
(
"glBindBuffer"
);
}
else
{
...
...
@@ -1380,15 +1380,15 @@ static void surface_download_data(struct wined3d_surface *surface, const struct
if
(
data
.
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
,
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_PACK_BUFFER
,
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
gl_info
->
gl_ops
.
gl
.
p_glGetTexImage
(
surface
->
texture_target
,
surface
->
texture_level
,
gl_format
,
gl_type
,
NULL
);
checkGLcall
(
"glGetTexImage"
);
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
,
0
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_PACK_BUFFER
,
0
));
checkGLcall
(
"glBindBuffer"
);
}
else
{
...
...
@@ -1494,8 +1494,8 @@ void wined3d_surface_upload_data(struct wined3d_surface *surface, const struct w
if
(
data
->
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
data
->
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
data
->
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
}
if
(
format
->
flags
&
WINED3DFMT_FLAG_COMPRESSED
)
...
...
@@ -1561,8 +1561,8 @@ void wined3d_surface_upload_data(struct wined3d_surface *surface, const struct w
if
(
data
->
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
0
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
0
));
checkGLcall
(
"glBindBuffer"
);
}
if
(
wined3d_settings
.
strict_draw_ordering
)
...
...
@@ -2665,9 +2665,9 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface,
context
=
context_acquire
(
device
,
NULL
);
gl_info
=
context
->
gl_info
;
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
surface
->
pbo
));
base_memory
=
GL_EXTCALL
(
glMapBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
GL_READ_WRITE_ARB
));
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
0
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
surface
->
pbo
));
base_memory
=
GL_EXTCALL
(
glMapBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
GL_READ_WRITE
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
0
));
checkGLcall
(
"map PBO"
);
context_release
(
context
);
...
...
@@ -2839,8 +2839,8 @@ static void read_from_framebuffer(struct wined3d_surface *surface, DWORD dst_loc
if
(
data
.
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
,
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_PACK_BUFFER
,
data
.
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
}
/* Setup pixel store pack state -- to glReadPixels into the correct place */
...
...
@@ -2868,8 +2868,8 @@ static void read_from_framebuffer(struct wined3d_surface *surface, DWORD dst_loc
if
(
data
.
buffer_object
)
{
mem
=
GL_EXTCALL
(
glMapBuffer
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
,
GL_READ_WRITE_ARB
));
checkGLcall
(
"glMapBuffer
ARB(GL_PIXEL_PACK_BUFFER_ARB, GL_READ_WRITE_ARB)
"
);
mem
=
GL_EXTCALL
(
glMapBuffer
(
GL_PIXEL_PACK_BUFFER
,
GL_READ_WRITE
));
checkGLcall
(
"glMapBuffer"
);
}
else
mem
=
data
.
addr
;
...
...
@@ -2887,14 +2887,14 @@ static void read_from_framebuffer(struct wined3d_surface *surface, DWORD dst_loc
HeapFree
(
GetProcessHeap
(),
0
,
row
);
if
(
data
.
buffer_object
)
GL_EXTCALL
(
glUnmapBuffer
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
));
GL_EXTCALL
(
glUnmapBuffer
(
GL_PIXEL_PACK_BUFFER
));
}
error:
if
(
data
.
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
,
0
));
checkGLcall
(
"glBindBuffer
ARB(GL_PIXEL_PACK_BUFFER_ARB, 0)
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_PACK_BUFFER
,
0
));
checkGLcall
(
"glBindBuffer"
);
}
context_release
(
context
);
...
...
@@ -4004,9 +4004,9 @@ static void surface_copy_simple_location(struct wined3d_surface *surface, DWORD
{
context
=
context_acquire
(
device
,
NULL
);
gl_info
=
context
->
gl_info
;
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
dst
.
buffer_object
));
GL_EXTCALL
(
glBufferSubData
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
0
,
size
,
src
.
addr
));
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
0
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
dst
.
buffer_object
));
GL_EXTCALL
(
glBufferSubData
(
GL_PIXEL_UNPACK_BUFFER
,
0
,
size
,
src
.
addr
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
0
));
checkGLcall
(
"Upload PBO"
);
context_release
(
context
);
return
;
...
...
@@ -4015,9 +4015,9 @@ static void surface_copy_simple_location(struct wined3d_surface *surface, DWORD
{
context
=
context_acquire
(
device
,
NULL
);
gl_info
=
context
->
gl_info
;
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
,
src
.
buffer_object
));
GL_EXTCALL
(
glGetBufferSubData
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
,
0
,
size
,
dst
.
addr
));
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
,
0
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_PACK_BUFFER
,
src
.
buffer_object
));
GL_EXTCALL
(
glGetBufferSubData
(
GL_PIXEL_PACK_BUFFER
,
0
,
size
,
dst
.
addr
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_PACK_BUFFER
,
0
));
checkGLcall
(
"Download PBO"
);
context_release
(
context
);
return
;
...
...
dlls/wined3d/volume.c
View file @
79a0dece
...
...
@@ -105,8 +105,8 @@ void wined3d_volume_upload_data(struct wined3d_volume *volume, const struct wine
if
(
data
->
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
data
->
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
data
->
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
}
GL_EXTCALL
(
glTexSubImage3DEXT
(
GL_TEXTURE_3D
,
volume
->
texture_level
,
0
,
0
,
0
,
...
...
@@ -116,8 +116,8 @@ void wined3d_volume_upload_data(struct wined3d_volume *volume, const struct wine
if
(
data
->
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
0
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
0
));
checkGLcall
(
"glBindBuffer"
);
}
HeapFree
(
GetProcessHeap
(),
0
,
converted_mem
);
...
...
@@ -153,8 +153,8 @@ static void wined3d_volume_download_data(struct wined3d_volume *volume,
if
(
data
->
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
,
data
->
buffer_object
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_PACK_BUFFER
,
data
->
buffer_object
));
checkGLcall
(
"glBindBuffer"
);
}
gl_info
->
gl_ops
.
gl
.
p_glGetTexImage
(
GL_TEXTURE_3D
,
volume
->
texture_level
,
...
...
@@ -163,8 +163,8 @@ static void wined3d_volume_download_data(struct wined3d_volume *volume,
if
(
data
->
buffer_object
)
{
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_PACK_BUFFER_ARB
,
0
));
checkGLcall
(
"glBindBuffer
ARB
"
);
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_PACK_BUFFER
,
0
));
checkGLcall
(
"glBindBuffer"
);
}
}
...
...
@@ -383,10 +383,10 @@ static void wined3d_volume_prepare_pbo(struct wined3d_volume *volume, struct win
if
(
volume
->
pbo
)
return
;
GL_EXTCALL
(
glGenBuffers
ARB
(
1
,
&
volume
->
pbo
));
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
volume
->
pbo
));
GL_EXTCALL
(
glBufferData
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
volume
->
resource
.
size
,
NULL
,
GL_STREAM_DRAW_ARB
));
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
0
));
GL_EXTCALL
(
glGenBuffers
(
1
,
&
volume
->
pbo
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
volume
->
pbo
));
GL_EXTCALL
(
glBufferData
(
GL_PIXEL_UNPACK_BUFFER
,
volume
->
resource
.
size
,
NULL
,
GL_STREAM_DRAW
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
0
));
checkGLcall
(
"Create PBO"
);
TRACE
(
"Created PBO %u for volume %p.
\n
"
,
volume
->
pbo
,
volume
);
...
...
@@ -398,8 +398,8 @@ static void wined3d_volume_free_pbo(struct wined3d_volume *volume)
const
struct
wined3d_gl_info
*
gl_info
=
context
->
gl_info
;
TRACE
(
"Deleting PBO %u belonging to volume %p.
\n
"
,
volume
->
pbo
,
volume
);
GL_EXTCALL
(
glDeleteBuffers
ARB
(
1
,
&
volume
->
pbo
));
checkGLcall
(
"glDeleteBuffers
ARB
"
);
GL_EXTCALL
(
glDeleteBuffers
(
1
,
&
volume
->
pbo
));
checkGLcall
(
"glDeleteBuffers"
);
volume
->
pbo
=
0
;
context_release
(
context
);
}
...
...
@@ -587,22 +587,22 @@ HRESULT CDECL wined3d_volume_map(struct wined3d_volume *volume,
else
wined3d_volume_load_location
(
volume
,
context
,
WINED3D_LOCATION_BUFFER
);
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
volume
->
pbo
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
volume
->
pbo
));
if
(
gl_info
->
supported
[
ARB_MAP_BUFFER_RANGE
])
{
GLbitfield
mapflags
=
wined3d_resource_gl_map_flags
(
flags
);
mapflags
&=
~
GL_MAP_FLUSH_EXPLICIT_BIT
;
base_memory
=
GL_EXTCALL
(
glMapBufferRange
(
GL_PIXEL_UNPACK_BUFFER
_ARB
,
base_memory
=
GL_EXTCALL
(
glMapBufferRange
(
GL_PIXEL_UNPACK_BUFFER
,
0
,
volume
->
resource
.
size
,
mapflags
));
}
else
{
GLenum
access
=
wined3d_resource_gl_legacy_map_flags
(
flags
);
base_memory
=
GL_EXTCALL
(
glMapBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
access
));
base_memory
=
GL_EXTCALL
(
glMapBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
access
));
}
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
0
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
0
));
checkGLcall
(
"Map PBO"
);
context_release
(
context
);
...
...
@@ -704,9 +704,9 @@ HRESULT CDECL wined3d_volume_unmap(struct wined3d_volume *volume)
struct
wined3d_context
*
context
=
context_acquire
(
device
,
NULL
);
const
struct
wined3d_gl_info
*
gl_info
=
context
->
gl_info
;
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
volume
->
pbo
));
GL_EXTCALL
(
glUnmapBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
));
GL_EXTCALL
(
glBindBuffer
ARB
(
GL_PIXEL_UNPACK_BUFFER_ARB
,
0
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
volume
->
pbo
));
GL_EXTCALL
(
glUnmapBuffer
(
GL_PIXEL_UNPACK_BUFFER
));
GL_EXTCALL
(
glBindBuffer
(
GL_PIXEL_UNPACK_BUFFER
,
0
));
checkGLcall
(
"Unmap PBO"
);
context_release
(
context
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment