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
93b06008
Commit
93b06008
authored
Sep 17, 2009
by
Henri Verbeet
Committed by
Alexandre Julliard
Sep 18, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Don't free D3D buffers until the wined3d buffer is destroyed.
parent
b1bf50d7
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
135 additions
and
41 deletions
+135
-41
buffer.c
dlls/d3d10core/buffer.c
+14
-2
indexbuffer.c
dlls/d3d8/indexbuffer.c
+22
-5
vertexbuffer.c
dlls/d3d8/vertexbuffer.c
+22
-5
indexbuffer.c
dlls/d3d9/indexbuffer.c
+22
-5
vertexbuffer.c
dlls/d3d9/vertexbuffer.c
+22
-5
ddraw.c
dlls/ddraw/ddraw.c
+1
-1
ddraw_private.h
dlls/ddraw/ddraw_private.h
+2
-0
direct3d.c
dlls/ddraw/direct3d.c
+3
-2
buffer.c
dlls/wined3d/buffer.c
+5
-2
device.c
dlls/wined3d/device.c
+13
-10
wined3d_private.h
dlls/wined3d/wined3d_private.h
+4
-2
wined3d.idl
include/wine/wined3d.idl
+5
-2
No files found.
dlls/d3d10core/buffer.c
View file @
93b06008
...
...
@@ -53,6 +53,8 @@ static ULONG STDMETHODCALLTYPE d3d10_buffer_AddRef(ID3D10Buffer *iface)
TRACE
(
"%p increasing refcount to %u
\n
"
,
This
,
refcount
);
if
(
refcount
==
1
)
IWineD3DBuffer_AddRef
(
This
->
wined3d_buffer
);
return
refcount
;
}
...
...
@@ -66,7 +68,6 @@ static ULONG STDMETHODCALLTYPE d3d10_buffer_Release(ID3D10Buffer *iface)
if
(
!
refcount
)
{
IWineD3DBuffer_Release
(
This
->
wined3d_buffer
);
HeapFree
(
GetProcessHeap
(),
0
,
This
);
}
return
refcount
;
...
...
@@ -166,6 +167,16 @@ static const struct ID3D10BufferVtbl d3d10_buffer_vtbl =
d3d10_buffer_GetDesc
,
};
static
void
STDMETHODCALLTYPE
d3d10_buffer_wined3d_object_released
(
void
*
parent
)
{
HeapFree
(
GetProcessHeap
(),
0
,
parent
);
}
static
const
struct
wined3d_parent_ops
d3d10_buffer_wined3d_parent_ops
=
{
d3d10_buffer_wined3d_object_released
,
};
HRESULT
d3d10_buffer_init
(
struct
d3d10_buffer
*
buffer
,
struct
d3d10_device
*
device
,
const
D3D10_BUFFER_DESC
*
desc
,
const
D3D10_SUBRESOURCE_DATA
*
data
)
{
...
...
@@ -184,7 +195,8 @@ HRESULT d3d10_buffer_init(struct d3d10_buffer *buffer, struct d3d10_device *devi
wined3d_desc
.
misc_flags
=
desc
->
MiscFlags
;
hr
=
IWineD3DDevice_CreateBuffer
(
device
->
wined3d_device
,
&
wined3d_desc
,
data
?
data
->
pSysMem
:
NULL
,
(
IUnknown
*
)
buffer
,
&
buffer
->
wined3d_buffer
);
data
?
data
->
pSysMem
:
NULL
,
(
IUnknown
*
)
buffer
,
&
d3d10_buffer_wined3d_parent_ops
,
&
buffer
->
wined3d_buffer
);
if
(
FAILED
(
hr
))
{
WARN
(
"Failed to create wined3d buffer, hr %#x.
\n
"
,
hr
);
...
...
dlls/d3d8/indexbuffer.c
View file @
93b06008
...
...
@@ -46,6 +46,14 @@ static ULONG WINAPI IDirect3DIndexBuffer8Impl_AddRef(LPDIRECT3DINDEXBUFFER8 ifac
TRACE
(
"(%p) : AddRef from %d
\n
"
,
This
,
ref
-
1
);
if
(
ref
==
1
)
{
IDirect3DDevice8_AddRef
(
This
->
parentDevice
);
wined3d_mutex_lock
();
IWineD3DBuffer_AddRef
(
This
->
wineD3DIndexBuffer
);
wined3d_mutex_unlock
();
}
return
ref
;
}
...
...
@@ -56,12 +64,10 @@ static ULONG WINAPI IDirect3DIndexBuffer8Impl_Release(LPDIRECT3DINDEXBUFFER8 ifa
TRACE
(
"(%p) : ReleaseRef to %d
\n
"
,
This
,
ref
);
if
(
ref
==
0
)
{
IDirect3DDevice8_Release
(
This
->
parentDevice
);
wined3d_mutex_lock
();
IWineD3DBuffer_Release
(
This
->
wineD3DIndexBuffer
);
wined3d_mutex_unlock
();
IUnknown_Release
(
This
->
parentDevice
);
HeapFree
(
GetProcessHeap
(),
0
,
This
);
}
return
ref
;
}
...
...
@@ -228,6 +234,16 @@ static const IDirect3DIndexBuffer8Vtbl Direct3DIndexBuffer8_Vtbl =
IDirect3DIndexBuffer8Impl_GetDesc
};
static
void
STDMETHODCALLTYPE
d3d8_indexbuffer_wined3d_object_destroyed
(
void
*
parent
)
{
HeapFree
(
GetProcessHeap
(),
0
,
parent
);
}
static
const
struct
wined3d_parent_ops
d3d8_indexbuffer_wined3d_parent_ops
=
{
d3d8_indexbuffer_wined3d_object_destroyed
,
};
HRESULT
indexbuffer_init
(
IDirect3DIndexBuffer8Impl
*
buffer
,
IDirect3DDevice8Impl
*
device
,
UINT
size
,
DWORD
usage
,
D3DFORMAT
format
,
D3DPOOL
pool
)
{
...
...
@@ -238,8 +254,9 @@ HRESULT indexbuffer_init(IDirect3DIndexBuffer8Impl *buffer, IDirect3DDevice8Impl
buffer
->
format
=
wined3dformat_from_d3dformat
(
format
);
wined3d_mutex_lock
();
hr
=
IWineD3DDevice_CreateIndexBuffer
(
device
->
WineD3DDevice
,
size
,
usage
&
WINED3DUSAGE_MASK
,
(
WINED3DPOOL
)
pool
,
&
buffer
->
wineD3DIndexBuffer
,
(
IUnknown
*
)
buffer
);
hr
=
IWineD3DDevice_CreateIndexBuffer
(
device
->
WineD3DDevice
,
size
,
usage
&
WINED3DUSAGE_MASK
,
(
WINED3DPOOL
)
pool
,
&
buffer
->
wineD3DIndexBuffer
,
(
IUnknown
*
)
buffer
,
&
d3d8_indexbuffer_wined3d_parent_ops
);
wined3d_mutex_unlock
();
if
(
FAILED
(
hr
))
{
...
...
dlls/d3d8/vertexbuffer.c
View file @
93b06008
...
...
@@ -47,6 +47,14 @@ static ULONG WINAPI IDirect3DVertexBuffer8Impl_AddRef(LPDIRECT3DVERTEXBUFFER8 if
TRACE
(
"(%p) : AddRef from %d
\n
"
,
This
,
ref
-
1
);
if
(
ref
==
1
)
{
IDirect3DDevice8_AddRef
(
This
->
parentDevice
);
wined3d_mutex_lock
();
IWineD3DBuffer_AddRef
(
This
->
wineD3DVertexBuffer
);
wined3d_mutex_unlock
();
}
return
ref
;
}
...
...
@@ -57,12 +65,10 @@ static ULONG WINAPI IDirect3DVertexBuffer8Impl_Release(LPDIRECT3DVERTEXBUFFER8 i
TRACE
(
"(%p) : ReleaseRef to %d
\n
"
,
This
,
ref
);
if
(
ref
==
0
)
{
IDirect3DDevice8_Release
(
This
->
parentDevice
);
wined3d_mutex_lock
();
IWineD3DBuffer_Release
(
This
->
wineD3DVertexBuffer
);
wined3d_mutex_unlock
();
IUnknown_Release
(
This
->
parentDevice
);
HeapFree
(
GetProcessHeap
(),
0
,
This
);
}
return
ref
;
...
...
@@ -231,6 +237,16 @@ static const IDirect3DVertexBuffer8Vtbl Direct3DVertexBuffer8_Vtbl =
IDirect3DVertexBuffer8Impl_GetDesc
};
static
void
STDMETHODCALLTYPE
d3d8_vertexbuffer_wined3d_object_destroyed
(
void
*
parent
)
{
HeapFree
(
GetProcessHeap
(),
0
,
parent
);
}
static
const
struct
wined3d_parent_ops
d3d8_vertexbuffer_wined3d_parent_ops
=
{
d3d8_vertexbuffer_wined3d_object_destroyed
,
};
HRESULT
vertexbuffer_init
(
IDirect3DVertexBuffer8Impl
*
buffer
,
IDirect3DDevice8Impl
*
device
,
UINT
size
,
DWORD
usage
,
DWORD
fvf
,
D3DPOOL
pool
)
{
...
...
@@ -241,8 +257,9 @@ HRESULT vertexbuffer_init(IDirect3DVertexBuffer8Impl *buffer, IDirect3DDevice8Im
buffer
->
fvf
=
fvf
;
wined3d_mutex_lock
();
hr
=
IWineD3DDevice_CreateVertexBuffer
(
device
->
WineD3DDevice
,
size
,
usage
&
WINED3DUSAGE_MASK
,
0
,
(
WINED3DPOOL
)
pool
,
&
buffer
->
wineD3DVertexBuffer
,
(
IUnknown
*
)
buffer
);
hr
=
IWineD3DDevice_CreateVertexBuffer
(
device
->
WineD3DDevice
,
size
,
usage
&
WINED3DUSAGE_MASK
,
0
,
(
WINED3DPOOL
)
pool
,
&
buffer
->
wineD3DVertexBuffer
,
(
IUnknown
*
)
buffer
,
&
d3d8_vertexbuffer_wined3d_parent_ops
);
wined3d_mutex_unlock
();
if
(
FAILED
(
hr
))
{
...
...
dlls/d3d9/indexbuffer.c
View file @
93b06008
...
...
@@ -47,6 +47,14 @@ static ULONG WINAPI IDirect3DIndexBuffer9Impl_AddRef(LPDIRECT3DINDEXBUFFER9 ifac
TRACE
(
"(%p) : AddRef from %d
\n
"
,
This
,
ref
-
1
);
if
(
ref
==
1
)
{
IDirect3DDevice9Ex_AddRef
(
This
->
parentDevice
);
wined3d_mutex_lock
();
IWineD3DBuffer_AddRef
(
This
->
wineD3DIndexBuffer
);
wined3d_mutex_unlock
();
}
return
ref
;
}
...
...
@@ -57,12 +65,10 @@ static ULONG WINAPI IDirect3DIndexBuffer9Impl_Release(LPDIRECT3DINDEXBUFFER9 ifa
TRACE
(
"(%p) : ReleaseRef to %d
\n
"
,
This
,
ref
);
if
(
ref
==
0
)
{
IDirect3DDevice9Ex_Release
(
This
->
parentDevice
);
wined3d_mutex_lock
();
IWineD3DBuffer_Release
(
This
->
wineD3DIndexBuffer
);
wined3d_mutex_unlock
();
IDirect3DDevice9Ex_Release
(
This
->
parentDevice
);
HeapFree
(
GetProcessHeap
(),
0
,
This
);
}
return
ref
;
}
...
...
@@ -230,6 +236,16 @@ static const IDirect3DIndexBuffer9Vtbl Direct3DIndexBuffer9_Vtbl =
IDirect3DIndexBuffer9Impl_GetDesc
};
static
void
STDMETHODCALLTYPE
d3d9_indexbuffer_wined3d_object_destroyed
(
void
*
parent
)
{
HeapFree
(
GetProcessHeap
(),
0
,
parent
);
}
static
const
struct
wined3d_parent_ops
d3d9_indexbuffer_wined3d_parent_ops
=
{
d3d9_indexbuffer_wined3d_object_destroyed
,
};
HRESULT
indexbuffer_init
(
IDirect3DIndexBuffer9Impl
*
buffer
,
IDirect3DDevice9Impl
*
device
,
UINT
size
,
DWORD
usage
,
D3DFORMAT
format
,
D3DPOOL
pool
)
{
...
...
@@ -240,8 +256,9 @@ HRESULT indexbuffer_init(IDirect3DIndexBuffer9Impl *buffer, IDirect3DDevice9Impl
buffer
->
format
=
wined3dformat_from_d3dformat
(
format
);
wined3d_mutex_lock
();
hr
=
IWineD3DDevice_CreateIndexBuffer
(
device
->
WineD3DDevice
,
size
,
usage
&
WINED3DUSAGE_MASK
,
(
WINED3DPOOL
)
pool
,
&
buffer
->
wineD3DIndexBuffer
,
(
IUnknown
*
)
buffer
);
hr
=
IWineD3DDevice_CreateIndexBuffer
(
device
->
WineD3DDevice
,
size
,
usage
&
WINED3DUSAGE_MASK
,
(
WINED3DPOOL
)
pool
,
&
buffer
->
wineD3DIndexBuffer
,
(
IUnknown
*
)
buffer
,
&
d3d9_indexbuffer_wined3d_parent_ops
);
wined3d_mutex_unlock
();
if
(
FAILED
(
hr
))
{
...
...
dlls/d3d9/vertexbuffer.c
View file @
93b06008
...
...
@@ -48,6 +48,14 @@ static ULONG WINAPI IDirect3DVertexBuffer9Impl_AddRef(LPDIRECT3DVERTEXBUFFER9 if
TRACE
(
"(%p) : AddRef from %d
\n
"
,
This
,
ref
-
1
);
if
(
ref
==
1
)
{
IDirect3DDevice9Ex_AddRef
(
This
->
parentDevice
);
wined3d_mutex_lock
();
IWineD3DBuffer_AddRef
(
This
->
wineD3DVertexBuffer
);
wined3d_mutex_unlock
();
}
return
ref
;
}
...
...
@@ -58,12 +66,10 @@ static ULONG WINAPI IDirect3DVertexBuffer9Impl_Release(LPDIRECT3DVERTEXBUFFER9 i
TRACE
(
"(%p) : ReleaseRef to %d
\n
"
,
This
,
ref
);
if
(
ref
==
0
)
{
IDirect3DDevice9Ex_Release
(
This
->
parentDevice
);
wined3d_mutex_lock
();
IWineD3DBuffer_Release
(
This
->
wineD3DVertexBuffer
);
wined3d_mutex_unlock
();
IDirect3DDevice9Ex_Release
(
This
->
parentDevice
);
HeapFree
(
GetProcessHeap
(),
0
,
This
);
}
return
ref
;
}
...
...
@@ -233,6 +239,16 @@ static const IDirect3DVertexBuffer9Vtbl Direct3DVertexBuffer9_Vtbl =
IDirect3DVertexBuffer9Impl_GetDesc
};
static
void
STDMETHODCALLTYPE
d3d9_vertexbuffer_wined3d_object_destroyed
(
void
*
parent
)
{
HeapFree
(
GetProcessHeap
(),
0
,
parent
);
}
static
const
struct
wined3d_parent_ops
d3d9_vertexbuffer_wined3d_parent_ops
=
{
d3d9_vertexbuffer_wined3d_object_destroyed
,
};
HRESULT
vertexbuffer_init
(
IDirect3DVertexBuffer9Impl
*
buffer
,
IDirect3DDevice9Impl
*
device
,
UINT
size
,
UINT
usage
,
DWORD
fvf
,
D3DPOOL
pool
)
{
...
...
@@ -243,8 +259,9 @@ HRESULT vertexbuffer_init(IDirect3DVertexBuffer9Impl *buffer, IDirect3DDevice9Im
buffer
->
fvf
=
fvf
;
wined3d_mutex_lock
();
hr
=
IWineD3DDevice_CreateVertexBuffer
(
device
->
WineD3DDevice
,
size
,
usage
&
WINED3DUSAGE_MASK
,
0
/* fvf for ddraw only */
,
(
WINED3DPOOL
)
pool
,
&
buffer
->
wineD3DVertexBuffer
,
(
IUnknown
*
)
buffer
);
hr
=
IWineD3DDevice_CreateVertexBuffer
(
device
->
WineD3DDevice
,
size
,
usage
&
WINED3DUSAGE_MASK
,
0
,
(
WINED3DPOOL
)
pool
,
&
buffer
->
wineD3DVertexBuffer
,
(
IUnknown
*
)
buffer
,
&
d3d9_vertexbuffer_wined3d_parent_ops
);
wined3d_mutex_unlock
();
if
(
FAILED
(
hr
))
{
...
...
dlls/ddraw/ddraw.c
View file @
93b06008
...
...
@@ -64,7 +64,7 @@ static const DDDEVICEIDENTIFIER2 deviceidentifier =
static
void
STDMETHODCALLTYPE
ddraw_null_wined3d_object_destroyed
(
void
*
parent
)
{}
static
const
struct
wined3d_parent_ops
ddraw_null_wined3d_parent_ops
=
const
struct
wined3d_parent_ops
ddraw_null_wined3d_parent_ops
=
{
ddraw_null_wined3d_object_destroyed
,
};
...
...
dlls/ddraw/ddraw_private.h
View file @
93b06008
...
...
@@ -39,6 +39,8 @@
#endif
#include "wine/wined3d.h"
extern
const
struct
wined3d_parent_ops
ddraw_null_wined3d_parent_ops
DECLSPEC_HIDDEN
;
/*****************************************************************************
* IParent - a helper interface
*****************************************************************************/
...
...
dlls/ddraw/direct3d.c
View file @
93b06008
...
...
@@ -824,7 +824,8 @@ IDirect3DImpl_7_CreateDevice(IDirect3D7 *iface,
* takes the pointer and avoids the memcpy
*/
hr
=
IWineD3DDevice_CreateIndexBuffer
(
This
->
wineD3DDevice
,
0x40000
/* Length. Don't know how long it should be */
,
WINED3DUSAGE_DYNAMIC
/* Usage */
,
WINED3DPOOL_DEFAULT
,
&
object
->
indexbuffer
,
(
IUnknown
*
)
IndexBufferParent
);
WINED3DUSAGE_DYNAMIC
/* Usage */
,
WINED3DPOOL_DEFAULT
,
&
object
->
indexbuffer
,
(
IUnknown
*
)
IndexBufferParent
,
&
ddraw_null_wined3d_parent_ops
);
if
(
FAILED
(
hr
))
{
...
...
@@ -1023,7 +1024,7 @@ IDirect3DImpl_7_CreateVertexBuffer(IDirect3D7 *iface,
get_flexible_vertex_size
(
Desc
->
dwFVF
)
*
Desc
->
dwNumVertices
,
Desc
->
dwCaps
&
D3DVBCAPS_WRITEONLY
?
WINED3DUSAGE_WRITEONLY
:
0
,
Desc
->
dwFVF
,
Desc
->
dwCaps
&
D3DVBCAPS_SYSTEMMEMORY
?
WINED3DPOOL_SYSTEMMEM
:
WINED3DPOOL_DEFAULT
,
&
object
->
wineD3DVertexBuffer
,
(
IUnknown
*
)
object
);
&
object
->
wineD3DVertexBuffer
,
(
IUnknown
*
)
object
,
&
ddraw_null_wined3d_parent_ops
);
if
(
hr
!=
D3D_OK
)
{
ERR
(
"(%p) IWineD3DDevice::CreateVertexBuffer failed with hr=%08x
\n
"
,
This
,
hr
);
...
...
dlls/wined3d/buffer.c
View file @
93b06008
...
...
@@ -635,6 +635,7 @@ static ULONG STDMETHODCALLTYPE buffer_Release(IWineD3DBuffer *iface)
{
buffer_UnLoad
(
iface
);
resource_cleanup
((
IWineD3DResource
*
)
iface
);
This
->
parent_ops
->
wined3d_object_destroyed
(
This
->
resource
.
parent
);
HeapFree
(
GetProcessHeap
(),
0
,
This
);
}
...
...
@@ -1059,8 +1060,9 @@ static const struct IWineD3DBufferVtbl wined3d_buffer_vtbl =
buffer_GetDesc
,
};
HRESULT
buffer_init
(
struct
wined3d_buffer
*
buffer
,
IWineD3DDeviceImpl
*
device
,
UINT
size
,
DWORD
usage
,
WINED3DFORMAT
format
,
WINED3DPOOL
pool
,
GLenum
bind_hint
,
const
char
*
data
,
IUnknown
*
parent
)
HRESULT
buffer_init
(
struct
wined3d_buffer
*
buffer
,
IWineD3DDeviceImpl
*
device
,
UINT
size
,
DWORD
usage
,
WINED3DFORMAT
format
,
WINED3DPOOL
pool
,
GLenum
bind_hint
,
const
char
*
data
,
IUnknown
*
parent
,
const
struct
wined3d_parent_ops
*
parent_ops
)
{
const
struct
GlPixelFormatDesc
*
format_desc
=
getFormatDescEntry
(
format
,
&
device
->
adapter
->
gl_info
);
HRESULT
hr
;
...
...
@@ -1080,6 +1082,7 @@ HRESULT buffer_init(struct wined3d_buffer *buffer, IWineD3DDeviceImpl *device, U
WARN
(
"Failed to initialize resource, hr %#x
\n
"
,
hr
);
return
hr
;
}
buffer
->
parent_ops
=
parent_ops
;
buffer
->
buffer_type_hint
=
bind_hint
;
TRACE
(
"size %#x, usage %#x, format %s, memory @ %p, iface @ %p.
\n
"
,
buffer
->
resource
.
size
,
buffer
->
resource
.
usage
,
...
...
dlls/wined3d/device.c
View file @
93b06008
...
...
@@ -442,8 +442,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetParent(IWineD3DDevice *iface, IUnkno
return
WINED3D_OK
;
}
static
HRESULT
WINAPI
IWineD3DDeviceImpl_CreateBuffer
(
IWineD3DDevice
*
iface
,
struct
wined3d_buffer_desc
*
desc
,
const
void
*
data
,
IUnknown
*
parent
,
IWineD3DBuffer
**
buffer
)
static
HRESULT
WINAPI
IWineD3DDeviceImpl_CreateBuffer
(
IWineD3DDevice
*
iface
,
struct
wined3d_buffer_desc
*
desc
,
const
void
*
data
,
IUnknown
*
parent
,
const
struct
wined3d_parent_ops
*
parent_ops
,
IWineD3DBuffer
**
buffer
)
{
IWineD3DDeviceImpl
*
This
=
(
IWineD3DDeviceImpl
*
)
iface
;
struct
wined3d_buffer
*
object
;
...
...
@@ -460,9 +460,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateBuffer(IWineD3DDevice *iface,
FIXME
(
"Ignoring access flags (pool)
\n
"
);
hr
=
buffer_init
(
object
,
This
,
desc
->
byte_width
,
desc
->
usage
,
WINED3DFMT_UNKNOWN
,
WINED3DPOOL_MANAGED
,
GL_ARRAY_BUFFER_ARB
,
data
,
parent
);
hr
=
buffer_init
(
object
,
This
,
desc
->
byte_width
,
desc
->
usage
,
WINED3DFMT_UNKNOWN
,
WINED3DPOOL_MANAGED
,
GL_ARRAY_BUFFER_ARB
,
data
,
parent
,
parent_ops
);
if
(
FAILED
(
hr
))
{
WARN
(
"Failed to initialize buffer, hr %#x.
\n
"
,
hr
);
...
...
@@ -478,8 +477,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateBuffer(IWineD3DDevice *iface,
return
WINED3D_OK
;
}
static
HRESULT
WINAPI
IWineD3DDeviceImpl_CreateVertexBuffer
(
IWineD3DDevice
*
iface
,
UINT
Size
,
DWORD
Usage
,
DWORD
FVF
,
WINED3DPOOL
Pool
,
IWineD3DBuffer
**
ppVertexBuffer
,
IUnknown
*
parent
)
static
HRESULT
WINAPI
IWineD3DDeviceImpl_CreateVertexBuffer
(
IWineD3DDevice
*
iface
,
UINT
Size
,
DWORD
Usage
,
DWORD
FVF
,
WINED3DPOOL
Pool
,
IWineD3DBuffer
**
ppVertexBuffer
,
IUnknown
*
parent
,
const
struct
wined3d_parent_ops
*
parent_ops
)
{
IWineD3DDeviceImpl
*
This
=
(
IWineD3DDeviceImpl
*
)
iface
;
struct
wined3d_buffer
*
object
;
...
...
@@ -505,7 +505,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateVertexBuffer(IWineD3DDevice *ifac
return
WINED3DERR_OUTOFVIDEOMEMORY
;
}
hr
=
buffer_init
(
object
,
This
,
Size
,
Usage
,
WINED3DFMT_VERTEXDATA
,
Pool
,
GL_ARRAY_BUFFER_ARB
,
NULL
,
parent
);
hr
=
buffer_init
(
object
,
This
,
Size
,
Usage
,
WINED3DFMT_VERTEXDATA
,
Pool
,
GL_ARRAY_BUFFER_ARB
,
NULL
,
parent
,
parent_ops
);
if
(
FAILED
(
hr
))
{
WARN
(
"Failed to initialize buffer, hr %#x.
\n
"
,
hr
);
...
...
@@ -548,7 +549,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateVertexBuffer(IWineD3DDevice *ifac
}
static
HRESULT
WINAPI
IWineD3DDeviceImpl_CreateIndexBuffer
(
IWineD3DDevice
*
iface
,
UINT
Length
,
DWORD
Usage
,
WINED3DPOOL
Pool
,
IWineD3DBuffer
**
ppIndexBuffer
,
IUnknown
*
parent
)
UINT
Length
,
DWORD
Usage
,
WINED3DPOOL
Pool
,
IWineD3DBuffer
**
ppIndexBuffer
,
IUnknown
*
parent
,
const
struct
wined3d_parent_ops
*
parent_ops
)
{
IWineD3DDeviceImpl
*
This
=
(
IWineD3DDeviceImpl
*
)
iface
;
struct
wined3d_buffer
*
object
;
...
...
@@ -565,7 +567,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateIndexBuffer(IWineD3DDevice *iface
return
WINED3DERR_OUTOFVIDEOMEMORY
;
}
hr
=
buffer_init
(
object
,
This
,
Length
,
Usage
,
WINED3DFMT_UNKNOWN
,
Pool
,
GL_ELEMENT_ARRAY_BUFFER_ARB
,
NULL
,
parent
);
hr
=
buffer_init
(
object
,
This
,
Length
,
Usage
,
WINED3DFMT_UNKNOWN
,
Pool
,
GL_ELEMENT_ARRAY_BUFFER_ARB
,
NULL
,
parent
,
parent_ops
);
if
(
FAILED
(
hr
))
{
WARN
(
"Failed to initialize buffer, hr %#x
\n
"
,
hr
);
...
...
dlls/wined3d/wined3d_private.h
View file @
93b06008
...
...
@@ -2416,6 +2416,7 @@ struct wined3d_buffer
const
struct
IWineD3DBufferVtbl
*
vtbl
;
IWineD3DResourceClass
resource
;
const
struct
wined3d_parent_ops
*
parent_ops
;
struct
wined3d_buffer_desc
desc
;
GLuint
buffer_object
;
...
...
@@ -2441,8 +2442,9 @@ struct wined3d_buffer
const
BYTE
*
buffer_get_memory
(
IWineD3DBuffer
*
iface
,
UINT
offset
,
GLuint
*
buffer_object
)
DECLSPEC_HIDDEN
;
BYTE
*
buffer_get_sysmem
(
struct
wined3d_buffer
*
This
)
DECLSPEC_HIDDEN
;
HRESULT
buffer_init
(
struct
wined3d_buffer
*
buffer
,
IWineD3DDeviceImpl
*
device
,
UINT
size
,
DWORD
usage
,
WINED3DFORMAT
format
,
WINED3DPOOL
pool
,
GLenum
bind_hint
,
const
char
*
data
,
IUnknown
*
parent
)
DECLSPEC_HIDDEN
;
HRESULT
buffer_init
(
struct
wined3d_buffer
*
buffer
,
IWineD3DDeviceImpl
*
device
,
UINT
size
,
DWORD
usage
,
WINED3DFORMAT
format
,
WINED3DPOOL
pool
,
GLenum
bind_hint
,
const
char
*
data
,
IUnknown
*
parent
,
const
struct
wined3d_parent_ops
*
parent_ops
)
DECLSPEC_HIDDEN
;
/* IWineD3DRendertargetView */
struct
wined3d_rendertarget_view
...
...
include/wine/wined3d.idl
View file @
93b06008
...
...
@@ -2888,6 +2888,7 @@ interface IWineD3DDevice : IWineD3DBase
[
in
]
struct
wined3d_buffer_desc
*
desc
,
[
in
]
const
void
*
data
,
[
in
]
IUnknown
*
parent
,
[
in
]
const
struct
wined3d_parent_ops
*
parent_ops
,
[
out
]
IWineD3DBuffer
**
buffer
)
;
HRESULT
CreateVertexBuffer
(
...
...
@@ -2896,14 +2897,16 @@ interface IWineD3DDevice : IWineD3DBase
[
in
]
DWORD
fvf
,
[
in
]
WINED3DPOOL
pool
,
[
out
]
IWineD3DBuffer
**
vertex_buffer
,
[
in
]
IUnknown
*
parent
[
in
]
IUnknown
*
parent
,
[
in
]
const
struct
wined3d_parent_ops
*
parent_ops
)
;
HRESULT
CreateIndexBuffer
(
[
in
]
UINT
length
,
[
in
]
DWORD
usage
,
[
in
]
WINED3DPOOL
pool
,
[
out
]
IWineD3DBuffer
**
index_buffer
,
[
in
]
IUnknown
*
parent
[
in
]
IUnknown
*
parent
,
[
in
]
const
struct
wined3d_parent_ops
*
parent_ops
)
;
HRESULT
CreateStateBlock
(
[
in
]
WINED3DSTATEBLOCKTYPE
type
,
...
...
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