4 * Copyright 2005 Oliver Stieber
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
24 #include "d3d8_private.h"
25 #include "wine/debug.h"
27 WINE_DEFAULT_DEBUG_CHANNEL(d3d8
);
29 HRESULT WINAPI
D3D8GetSWInfo(void) {
30 FIXME("(void): stub\n");
34 void WINAPI
DebugSetMute(void) {
38 IDirect3D8
* WINAPI DECLSPEC_HOTPATCH
Direct3DCreate8(UINT sdk_version
)
42 TRACE("sdk_version %#x.\n", sdk_version
);
44 if (!(object
= heap_alloc_zero(sizeof(*object
))))
47 if (!d3d8_init(object
))
49 WARN("Failed to initialize d3d8.\n");
54 TRACE("Created d3d8 object %p.\n", object
);
56 return &object
->IDirect3D8_iface
;
59 /***********************************************************************
60 * ValidateVertexShader (D3D8.@)
62 HRESULT WINAPI
ValidateVertexShader(DWORD
*vertexshader
, DWORD
*reserved1
, DWORD
*reserved2
,
63 BOOL return_error
, char **errors
)
65 const char *message
= "";
68 TRACE("(%p %p %p %d %p): semi-stub\n", vertexshader
, reserved1
, reserved2
, return_error
, errors
);
72 message
= "(Global Validation Error) Version Token: Code pointer cannot be NULL.\n";
76 switch (*vertexshader
)
84 WARN("Invalid shader version token %#x.\n", *vertexshader
);
85 message
= "(Global Validation Error) Version Token: Unsupported vertex shader version.\n";
89 if (!return_error
) message
= "";
90 if (errors
&& (*errors
= HeapAlloc(GetProcessHeap(), 0, strlen(message
) + 1)))
91 strcpy(*errors
, message
);
96 /***********************************************************************
97 * ValidatePixelShader (D3D8.@)
99 HRESULT WINAPI
ValidatePixelShader(DWORD
*pixelshader
, DWORD
*reserved1
, BOOL return_error
, char **errors
)
101 const char *message
= "";
104 TRACE("(%p %p %d %p): semi-stub\n", pixelshader
, reserved1
, return_error
, errors
);
109 switch (*pixelshader
)
119 WARN("Invalid shader version token %#x.\n", *pixelshader
);
120 message
= "(Global Validation Error) Version Token: Unsupported pixel shader version.\n";
123 if (!return_error
) message
= "";
124 if (errors
&& (*errors
= HeapAlloc(GetProcessHeap(), 0, strlen(message
) + 1)))
125 strcpy(*errors
, message
);
130 void d3d8_resource_cleanup(struct d3d8_resource
*resource
)
132 wined3d_private_store_cleanup(&resource
->private_store
);
135 HRESULT
d3d8_resource_free_private_data(struct d3d8_resource
*resource
, const GUID
*guid
)
137 struct wined3d_private_data
*entry
;
139 wined3d_mutex_lock();
140 entry
= wined3d_private_store_get_private_data(&resource
->private_store
, guid
);
143 wined3d_mutex_unlock();
144 return D3DERR_NOTFOUND
;
147 wined3d_private_store_free_private_data(&resource
->private_store
, entry
);
148 wined3d_mutex_unlock();
153 HRESULT
d3d8_resource_get_private_data(struct d3d8_resource
*resource
, const GUID
*guid
,
154 void *data
, DWORD
*data_size
)
156 const struct wined3d_private_data
*stored_data
;
160 wined3d_mutex_lock();
161 stored_data
= wined3d_private_store_get_private_data(&resource
->private_store
, guid
);
164 hr
= D3DERR_NOTFOUND
;
168 size_in
= *data_size
;
169 *data_size
= stored_data
->size
;
175 if (size_in
< stored_data
->size
)
177 hr
= D3DERR_MOREDATA
;
181 if (stored_data
->flags
& WINED3DSPD_IUNKNOWN
)
182 IUnknown_AddRef(stored_data
->content
.object
);
183 memcpy(data
, stored_data
->content
.data
, stored_data
->size
);
187 wined3d_mutex_unlock();
191 void d3d8_resource_init(struct d3d8_resource
*resource
)
193 resource
->refcount
= 1;
194 wined3d_private_store_init(&resource
->private_store
);
197 HRESULT
d3d8_resource_set_private_data(struct d3d8_resource
*resource
, const GUID
*guid
,
198 const void *data
, DWORD data_size
, DWORD flags
)
202 wined3d_mutex_lock();
203 hr
= wined3d_private_store_set_private_data(&resource
->private_store
, guid
, data
, data_size
, flags
);
204 wined3d_mutex_unlock();