wined3d: Add a usage flag for vertex buffer optimization.
This commit is contained in:
parent
90e443758a
commit
63326b1925
|
@ -277,7 +277,8 @@ HRESULT vertexbuffer_init(IDirect3DVertexBuffer8Impl *buffer, IDirect3DDevice8Im
|
||||||
|
|
||||||
wined3d_mutex_lock();
|
wined3d_mutex_lock();
|
||||||
hr = IWineD3DDevice_CreateVertexBuffer(device->WineD3DDevice, size,
|
hr = IWineD3DDevice_CreateVertexBuffer(device->WineD3DDevice, size,
|
||||||
usage & WINED3DUSAGE_MASK, 0, (WINED3DPOOL)pool, &buffer->wineD3DVertexBuffer,
|
(usage & WINED3DUSAGE_MASK) | WINED3DUSAGE_OPTIMIZE, 0,
|
||||||
|
(WINED3DPOOL)pool, &buffer->wineD3DVertexBuffer,
|
||||||
(IUnknown *)buffer, &d3d8_vertexbuffer_wined3d_parent_ops);
|
(IUnknown *)buffer, &d3d8_vertexbuffer_wined3d_parent_ops);
|
||||||
wined3d_mutex_unlock();
|
wined3d_mutex_unlock();
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
|
|
|
@ -278,7 +278,8 @@ HRESULT vertexbuffer_init(IDirect3DVertexBuffer9Impl *buffer, IDirect3DDevice9Im
|
||||||
|
|
||||||
wined3d_mutex_lock();
|
wined3d_mutex_lock();
|
||||||
hr = IWineD3DDevice_CreateVertexBuffer(device->WineD3DDevice, size,
|
hr = IWineD3DDevice_CreateVertexBuffer(device->WineD3DDevice, size,
|
||||||
usage & WINED3DUSAGE_MASK, 0, (WINED3DPOOL)pool, &buffer->wineD3DVertexBuffer,
|
(usage & WINED3DUSAGE_MASK) | WINED3DUSAGE_OPTIMIZE, 0,
|
||||||
|
(WINED3DPOOL)pool, &buffer->wineD3DVertexBuffer,
|
||||||
(IUnknown *)buffer, &d3d9_vertexbuffer_wined3d_parent_ops);
|
(IUnknown *)buffer, &d3d9_vertexbuffer_wined3d_parent_ops);
|
||||||
wined3d_mutex_unlock();
|
wined3d_mutex_unlock();
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
|
|
|
@ -485,7 +485,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateVertexBuffer(IWineD3DDevice *ifac
|
||||||
{
|
{
|
||||||
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
|
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
|
||||||
struct wined3d_buffer *object;
|
struct wined3d_buffer *object;
|
||||||
int dxVersion = ( (IWineD3DImpl *) This->wineD3D)->dxVersion;
|
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
BOOL conv;
|
BOOL conv;
|
||||||
|
|
||||||
|
@ -543,8 +542,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateVertexBuffer(IWineD3DDevice *ifac
|
||||||
TRACE("Not creating a vbo because the vertex buffer is in system memory\n");
|
TRACE("Not creating a vbo because the vertex buffer is in system memory\n");
|
||||||
} else if(Usage & WINED3DUSAGE_DYNAMIC) {
|
} else if(Usage & WINED3DUSAGE_DYNAMIC) {
|
||||||
TRACE("Not creating a vbo because the buffer has dynamic usage\n");
|
TRACE("Not creating a vbo because the buffer has dynamic usage\n");
|
||||||
} else if(dxVersion <= 7 && conv) {
|
} else if(!(Usage & WINED3DUSAGE_OPTIMIZE) && conv) {
|
||||||
TRACE("Not creating a vbo because dxVersion is 7 and the fvf needs conversion\n");
|
TRACE("Not creating a vbo because the fvf needs conversion, but VB optimization is disabled\n");
|
||||||
} else {
|
} else {
|
||||||
object->flags |= WINED3D_BUFFER_CREATEBO;
|
object->flags |= WINED3D_BUFFER_CREATEBO;
|
||||||
}
|
}
|
||||||
|
|
|
@ -901,6 +901,7 @@ const UINT WINED3DUSAGE_DYNAMIC = 0x00000200;
|
||||||
const UINT WINED3DUSAGE_AUTOGENMIPMAP = 0x00000400;
|
const UINT WINED3DUSAGE_AUTOGENMIPMAP = 0x00000400;
|
||||||
const UINT WINED3DUSAGE_DMAP = 0x00004000;
|
const UINT WINED3DUSAGE_DMAP = 0x00004000;
|
||||||
const UINT WINED3DUSAGE_MASK = 0x00004fff;
|
const UINT WINED3DUSAGE_MASK = 0x00004fff;
|
||||||
|
const UINT WINED3DUSAGE_OPTIMIZE = 0x40000000;
|
||||||
const UINT WINED3DUSAGE_OVERLAY = 0x80000000;
|
const UINT WINED3DUSAGE_OVERLAY = 0x80000000;
|
||||||
|
|
||||||
const UINT WINED3DUSAGE_QUERY_LEGACYBUMPMAP = 0x00008000;
|
const UINT WINED3DUSAGE_QUERY_LEGACYBUMPMAP = 0x00008000;
|
||||||
|
|
Loading…
Reference in New Issue