d3d8: Introduce a resource structure.
[wine/multimedia.git] / dlls / d3d8 / d3d8_main.c
blob2175a336878ca119ca9b6ae2f2ab36ebcac650b2
1 /*
2 * Direct3D 8
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
22 #include "config.h"
23 #include "initguid.h"
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");
31 return 0;
34 void WINAPI DebugSetMute(void) {
35 /* nothing to do */
38 IDirect3D8 * WINAPI DECLSPEC_HOTPATCH Direct3DCreate8(UINT sdk_version)
40 struct d3d8 *object;
42 TRACE("sdk_version %#x.\n", sdk_version);
44 if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
45 return NULL;
47 if (!d3d8_init(object))
49 WARN("Failed to initialize d3d8.\n");
50 HeapFree(GetProcessHeap(), 0, object);
51 return NULL;
54 TRACE("Created d3d8 object %p.\n", object);
56 return &object->IDirect3D8_iface;
59 /* At process attach */
60 BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, void *reserved)
62 if (reason == DLL_PROCESS_ATTACH)
63 DisableThreadLibraryCalls(inst);
65 return TRUE;
68 /***********************************************************************
69 * ValidateVertexShader (D3D8.@)
71 * I've seen reserved1 and reserved2 always passed as 0's
72 * bool seems always passed as 0 or 1, but other values work as well...
73 * toto result?
75 HRESULT WINAPI ValidateVertexShader(DWORD* vertexshader, DWORD* reserved1, DWORD* reserved2, BOOL bool, DWORD* toto)
77 HRESULT ret;
78 static BOOL warned;
80 if (TRACE_ON(d3d8) || !warned) {
81 FIXME("(%p %p %p %d %p): stub\n", vertexshader, reserved1, reserved2, bool, toto);
82 warned = TRUE;
85 if (!vertexshader)
86 return E_FAIL;
88 if (reserved1 || reserved2)
89 return E_FAIL;
91 switch(*vertexshader) {
92 case 0xFFFE0101:
93 case 0xFFFE0100:
94 ret=S_OK;
95 break;
96 default:
97 WARN("Invalid shader version token %#x.\n", *vertexshader);
98 ret=E_FAIL;
101 return ret;
104 /***********************************************************************
105 * ValidatePixelShader (D3D8.@)
107 * PARAMS
108 * toto result?
110 HRESULT WINAPI ValidatePixelShader(DWORD* pixelshader, DWORD* reserved1, BOOL bool, DWORD* toto)
112 HRESULT ret;
113 static BOOL warned;
115 if (TRACE_ON(d3d8) || !warned) {
116 FIXME("(%p %p %d %p): stub\n", pixelshader, reserved1, bool, toto);
117 warned = TRUE;
120 if (!pixelshader)
121 return E_FAIL;
123 if (reserved1)
124 return E_FAIL;
126 switch(*pixelshader) {
127 case 0xFFFF0100:
128 case 0xFFFF0101:
129 case 0xFFFF0102:
130 case 0xFFFF0103:
131 case 0xFFFF0104:
132 ret=S_OK;
133 break;
134 default:
135 WARN("Invalid shader version token %#x.\n", *pixelshader);
136 ret=E_FAIL;
138 return ret;
141 void d3d8_resource_cleanup(struct d3d8_resource *resource)
145 void d3d8_resource_init(struct d3d8_resource *resource)
147 resource->refcount = 1;