ReactOS 0.4.15-dev-7788-g1ad9096
wined3d_private.h
Go to the documentation of this file.
1/*
2 * Direct3D wine internal private include file
3 *
4 * Copyright 2002-2003 The wine-d3d team
5 * Copyright 2002-2003 Raphael Junqueira
6 * Copyright 2002-2003, 2004 Jason Edmeades
7 * Copyright 2005 Oliver Stieber
8 * Copyright 2006-2011, 2013 Stefan Dösinger for CodeWeavers
9 *
10 * This library is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public
12 * License as published by the Free Software Foundation; either
13 * version 2.1 of the License, or (at your option) any later version.
14 *
15 * This library is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * Lesser General Public License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public
21 * License along with this library; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
25#ifndef __WINE_WINED3D_PRIVATE_H
26#define __WINE_WINED3D_PRIVATE_H
27
28#ifdef USE_WIN32_OPENGL
29#define WINE_GLAPI __stdcall
30#else
31#define WINE_GLAPI
32#endif
33
34#include <assert.h>
35#include <stdarg.h>
36#include <math.h>
37#include <limits.h>
38#include "ntstatus.h"
39#define WIN32_NO_STATUS
40#define NONAMELESSUNION
41#define NONAMELESSSTRUCT
42#define COBJMACROS
43#include "windef.h"
44#include "winbase.h"
45#include "winreg.h"
46#include "wingdi.h"
47#include "winuser.h"
48#include "winternl.h"
49#include "ddk/d3dkmthk.h"
50#include "wine/debug.h"
51#include "wine/heap.h"
52#include "wine/unicode.h"
53
54#include "objbase.h"
55#include "wine/wined3d.h"
56#include "wined3d_gl.h"
57#include "wine/list.h"
58#include "wine/rbtree.h"
59#include "wine/wgl_driver.h"
60
61#ifndef ARRAY_SIZE
62#define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0]))
63#endif
64
65#define MAKEDWORD_VERSION(maj, min) (((maj & 0xffffu) << 16) | (min & 0xffffu))
66
67/* Driver quirks */
68#define WINED3D_QUIRK_ARB_VS_OFFSET_LIMIT 0x00000001
69#define WINED3D_QUIRK_SET_TEXCOORD_W 0x00000002
70#define WINED3D_QUIRK_GLSL_CLIP_VARYING 0x00000004
71#define WINED3D_QUIRK_ALLOWS_SPECULAR_ALPHA 0x00000008
72#define WINED3D_QUIRK_NV_CLIP_BROKEN 0x00000010
73#define WINED3D_QUIRK_FBO_TEX_UPDATE 0x00000020
74#define WINED3D_QUIRK_BROKEN_RGBA16 0x00000040
75#define WINED3D_QUIRK_INFO_LOG_SPAM 0x00000080
76#define WINED3D_QUIRK_LIMITED_TEX_FILTERING 0x00000100
77#define WINED3D_QUIRK_BROKEN_ARB_FOG 0x00000200
78
80{
97};
98
100{
120};
121
122/* Texture format fixups */
123
125{
134};
135
137{
144};
145
146#include <pshpack2.h>
148{
149 unsigned short x_sign_fixup : 1;
150 unsigned short x_source : 3;
151 unsigned short y_sign_fixup : 1;
152 unsigned short y_source : 3;
153 unsigned short z_sign_fixup : 1;
154 unsigned short z_source : 3;
155 unsigned short w_sign_fixup : 1;
156 unsigned short w_source : 3;
157};
158#include <poppack.h>
159
161{
165 unsigned int varying_count;
166 unsigned int ffp_textures;
167 unsigned int ffp_blend_stages;
169 unsigned int active_light_count;
170};
171
175extern wined3d_ffp_attrib_func specular_func_3ubv DECLSPEC_HIDDEN;
176
178{
185};
186
188{
200};
201
204
206 int sign0, enum fixup_channel_source src0, int sign1, enum fixup_channel_source src1,
207 int sign2, enum fixup_channel_source src2, int sign3, enum fixup_channel_source src3)
208{
209 struct color_fixup_desc fixup =
210 {
211 sign0, src0,
212 sign1, src1,
213 sign2, src2,
214 sign3, src3,
215 };
216 return fixup;
217}
218
220{
221 struct color_fixup_desc fixup =
222 {
227 };
228 return fixup;
229}
230
231static inline BOOL is_identity_fixup(struct color_fixup_desc fixup)
232{
233 return !memcmp(&fixup, &COLOR_FIXUP_IDENTITY, sizeof(fixup));
234}
235
236static inline BOOL is_complex_fixup(struct color_fixup_desc fixup)
237{
239}
240
241static inline BOOL is_scaling_fixup(struct color_fixup_desc fixup)
242{
243 return fixup.x_sign_fixup || fixup.y_sign_fixup || fixup.z_sign_fixup || fixup.w_sign_fixup;
244}
245
247{
248 return f1.x_sign_fixup == f2.x_sign_fixup && f1.x_source == f2.x_source
249 && f1.y_sign_fixup == f2.y_sign_fixup && f1.y_source == f2.y_source
250 && f1.z_sign_fixup == f2.z_sign_fixup && f1.z_source == f2.z_source
251 && f1.w_sign_fixup == f2.w_sign_fixup && f1.w_source == f2.w_source;
252}
253
254static inline enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup)
255{
257 if (fixup.x_source == CHANNEL_SOURCE_COMPLEX1) complex_fixup |= (1u << 0);
258 if (fixup.y_source == CHANNEL_SOURCE_COMPLEX1) complex_fixup |= (1u << 1);
259 if (fixup.z_source == CHANNEL_SOURCE_COMPLEX1) complex_fixup |= (1u << 2);
260 if (fixup.w_source == CHANNEL_SOURCE_COMPLEX1) complex_fixup |= (1u << 3);
261 return complex_fixup;
262}
263
264/* Device caps */
265#define MAX_STREAMS 16
266#define MAX_TEXTURES 8
267#define MAX_FRAGMENT_SAMPLERS 16
268#define MAX_VERTEX_SAMPLERS 4
269#define MAX_COMBINED_SAMPLERS (MAX_FRAGMENT_SAMPLERS + MAX_VERTEX_SAMPLERS)
270#define MAX_ACTIVE_LIGHTS 8
271#define MAX_CLIP_DISTANCES 8
272#define MAX_CONSTANT_BUFFERS 15
273#define MAX_SAMPLER_OBJECTS 16
274#define MAX_SHADER_RESOURCE_VIEWS 128
275#define MAX_RENDER_TARGET_VIEWS 8
276#define MAX_UNORDERED_ACCESS_VIEWS 8
277#define MAX_TGSM_REGISTERS 8192
278#define MAX_VERTEX_BLENDS 4
279#define MAX_VERTEX_INDEX_BLENDS 9
280#define MAX_MULTISAMPLE_TYPES 8
281#define MAX_RENDER_TARGETS 8
282
284{
286};
287
290
292
294{
295 if (func < WINED3D_CMP_NEVER || func > WINED3D_CMP_ALWAYS)
296 return WINED3D_CMP_ALWAYS;
297 return func;
298}
299
301{
302 return magLookup[mag_filter];
303}
304
306 enum wined3d_texture_filter_type mip_filter)
307{
308 return minMipLookup[min_filter].mip[mip_filter];
309}
310
311/* float_16_to_32() and float_32_to_16() (see implementation in
312 * surface_base.c) convert 16 bit floats in the FLOAT16 data type
313 * to standard C floats and vice versa. They do not depend on the encoding
314 * of the C float, so they are platform independent, but slow. On x86 and
315 * other IEEE 754 compliant platforms the conversion can be accelerated by
316 * bit shifting the exponent and mantissa. There are also some SSE-based
317 * assembly routines out there.
318 *
319 * See GL_NV_half_float for a reference of the FLOAT16 / GL_HALF format
320 */
321static inline float float_16_to_32(const unsigned short *in)
322{
323 const unsigned short s = ((*in) & 0x8000u);
324 const unsigned short e = ((*in) & 0x7c00u) >> 10;
325 const unsigned short m = (*in) & 0x3ffu;
326 const float sgn = (s ? -1.0f : 1.0f);
327
328 if(e == 0) {
329 if(m == 0) return sgn * 0.0f; /* +0.0 or -0.0 */
330 else return sgn * powf(2, -14.0f) * ((float)m / 1024.0f);
331 } else if(e < 31) {
332 return sgn * powf(2, (float)e - 15.0f) * (1.0f + ((float)m / 1024.0f));
333 } else {
334 if(m == 0) return sgn * INFINITY;
335 else return NAN;
336 }
337}
338
339static inline float float_24_to_32(DWORD in)
340{
341 const float sgn = in & 0x800000u ? -1.0f : 1.0f;
342 const unsigned short e = (in & 0x780000u) >> 19;
343 const unsigned int m = in & 0x7ffffu;
344
345 if (e == 0)
346 {
347 if (m == 0) return sgn * 0.0f; /* +0.0 or -0.0 */
348 else return sgn * powf(2, -6.0f) * ((float)m / 524288.0f);
349 }
350 else if (e < 15)
351 {
352 return sgn * powf(2, (float)e - 7.0f) * (1.0f + ((float)m / 524288.0f));
353 }
354 else
355 {
356 if (m == 0) return sgn * INFINITY;
357 else return NAN;
358 }
359}
360
361static inline unsigned int wined3d_popcount(unsigned int x)
362{
363#ifdef HAVE___BUILTIN_POPCOUNT
364 return __builtin_popcount(x);
365#else
366 x -= x >> 1 & 0x55555555;
367 x = (x & 0x33333333) + (x >> 2 & 0x33333333);
368 return ((x + (x >> 4)) & 0x0f0f0f0f) * 0x01010101 >> 24;
369#endif
370}
371
372static inline void wined3d_pause(void)
373{
374#ifdef __REACTOS__
375 Sleep(0);
376#else
377#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
378 __asm__ __volatile__( "rep;nop" : : : "memory" );
379#endif
380#endif
381}
382
383#define ORM_BACKBUFFER 0
384#define ORM_FBO 1
385
386#define PCI_VENDOR_NONE 0xffff /* e.g. 0x8086 for Intel and 0x10de for Nvidia */
387#define PCI_DEVICE_NONE 0xffff /* e.g. 0x14f for a Geforce6200 */
388
389/* NOTE: When adding fields to this structure, make sure to update the default
390 * values in wined3d_main.c as well. */
392{
393 unsigned int cs_multithreaded;
398 unsigned short pci_vendor_id;
399 unsigned short pci_device_id;
400 /* Memory tracking and object counting. */
402 char *logo;
404 unsigned int sample_count;
407 unsigned int max_sm_vs;
408 unsigned int max_sm_hs;
409 unsigned int max_sm_ds;
410 unsigned int max_sm_gs;
411 unsigned int max_sm_ps;
412 unsigned int max_sm_cs;
414};
415
417
419{
431};
432
433#define WINED3D_SHADER_CONST_VS_F 0x00000001
434#define WINED3D_SHADER_CONST_VS_I 0x00000002
435#define WINED3D_SHADER_CONST_VS_B 0x00000004
436#define WINED3D_SHADER_CONST_VS_CLIP_PLANES 0x00000008
437#define WINED3D_SHADER_CONST_VS_POINTSIZE 0x00000010
438#define WINED3D_SHADER_CONST_POS_FIXUP 0x00000020
439#define WINED3D_SHADER_CONST_PS_F 0x00000040
440#define WINED3D_SHADER_CONST_PS_I 0x00000080
441#define WINED3D_SHADER_CONST_PS_B 0x00000100
442#define WINED3D_SHADER_CONST_PS_BUMP_ENV 0x00000200
443#define WINED3D_SHADER_CONST_PS_FOG 0x00000400
444#define WINED3D_SHADER_CONST_PS_ALPHA_TEST 0x00000800
445#define WINED3D_SHADER_CONST_PS_Y_CORR 0x00001000
446#define WINED3D_SHADER_CONST_PS_NP2_FIXUP 0x00002000
447#define WINED3D_SHADER_CONST_FFP_MODELVIEW 0x00004000
448#define WINED3D_SHADER_CONST_FFP_PROJ 0x00010000
449#define WINED3D_SHADER_CONST_FFP_TEXMATRIX 0x00020000
450#define WINED3D_SHADER_CONST_FFP_MATERIAL 0x00040000
451#define WINED3D_SHADER_CONST_FFP_LIGHTS 0x00080000
452#define WINED3D_SHADER_CONST_FFP_PS 0x00100000
453#define WINED3D_SHADER_CONST_FFP_COLOR_KEY 0x00200000
454#define WINED3D_SHADER_CONST_FFP_VERTEXBLEND 0xff000000
455#define WINED3D_SHADER_CONST_FFP_VERTEXBLEND_INDEX(i) (0x01000000 << ((i) - 1))
456
458{
509};
510
512{
522};
523
525{
528};
529
530#define WINED3DSP_NOSWIZZLE (0u | (1u << 2) | (2u << 4) | (3u << 6))
531
533{
548};
549
550#define WINED3DSP_WRITEMASK_0 0x1u /* .x r */
551#define WINED3DSP_WRITEMASK_1 0x2u /* .y g */
552#define WINED3DSP_WRITEMASK_2 0x4u /* .z b */
553#define WINED3DSP_WRITEMASK_3 0x8u /* .w a */
554#define WINED3DSP_WRITEMASK_ALL 0xfu /* all */
555
557{
562};
563
565{
574};
575
576#define WINED3D_PACKED_INTERPOLATION_SIZE 3
577#define WINED3D_PACKED_INTERPOLATION_BIT_COUNT 3
578
580{
584};
585
587{
590};
591
593{
596};
597
599{
603};
604
606{
611};
612
614{
619};
620
621/* Undocumented opcode control to identify projective texture lookups in ps 2.0 and later */
622#define WINED3DSI_TEXLD_PROJECT 0x1
623#define WINED3DSI_TEXLD_BIAS 0x2
624#define WINED3DSI_INDEXED_DYNAMIC 0x4
625#define WINED3DSI_RESINFO_RCP_FLOAT 0x1
626#define WINED3DSI_RESINFO_UINT 0x2
627#define WINED3DSI_SAMPLE_INFO_UINT 0x1
628#define WINED3DSI_SAMPLER_COMPARISON_MODE 0x1
629
631{
638};
639
641{
645
646#define WINED3D_SM1_VS 0xfffeu
647#define WINED3D_SM1_PS 0xffffu
648#define WINED3D_SM4_PS 0x0000u
649#define WINED3D_SM4_VS 0x0001u
650#define WINED3D_SM4_GS 0x0002u
651#define WINED3D_SM5_HS 0x0003u
652#define WINED3D_SM5_DS 0x0004u
653#define WINED3D_SM5_CS 0x0005u
654
655/* Shader version tokens, and shader end tokens */
656#define WINED3DPS_VERSION(major, minor) ((WINED3D_SM1_PS << 16) | ((major) << 8) | (minor))
657#define WINED3DVS_VERSION(major, minor) ((WINED3D_SM1_VS << 16) | ((major) << 8) | (minor))
658
659/* Shader backends */
660
661/* TODO: Make this dynamic, based on shader limits ? */
662#define MAX_ATTRIBS 16
663#define MAX_REG_ADDR 1
664#define MAX_REG_TEXCRD 8
665#define MAX_REG_INPUT 32
666#define MAX_REG_OUTPUT 32
667#define WINED3D_MAX_CBS 15
668#define WINED3D_MAX_CONSTS_B 16
669#define WINED3D_MAX_CONSTS_I 16
670#define WINED3D_MAX_VS_CONSTS_F 256
671#define WINED3D_MAX_PS_CONSTS_F 224
672
673/* FIXME: This needs to go up to 2048 for
674 * Shader model 3 according to msdn (and for software shaders) */
675#define MAX_LABELS 16
676
677#define MAX_IMMEDIATE_CONSTANT_BUFFER_SIZE 4096
678
680{
681 struct list entry;
682 char *buffer;
683 unsigned int buffer_size;
684 unsigned int content_size;
685};
686
688{
929
931{
938
941};
942
944{
948};
949
951{
954 unsigned int flags;
955 unsigned int stride;
956};
957
958#define WINED3D_SAMPLER_DEFAULT ~0x0u
959
961{
962 unsigned int resource_idx;
963 unsigned int sampler_idx;
964 unsigned int bind_idx;
965};
966
968{
970 size_t size;
971 size_t count;
972};
973
975{
976 unsigned int vec4_count;
978};
979
981{
982 struct list entry;
983 unsigned int register_idx;
984 unsigned int register_size;
985 unsigned int component_count;
986};
987
988#define WINED3D_SHADER_VERSION(major, minor) (((major) << 8) | (minor))
989
991{
993 BYTE texcoord; /* MAX_REG_TEXCRD, 8 */
994 BYTE address; /* MAX_REG_ADDR, 1 */
995 WORD labels; /* MAX_LABELS, 16 */
996 DWORD temporary; /* 32 */
997 unsigned int temporary_count;
998 DWORD *constf; /* pixel, vertex */
1001 union
1002 {
1003 DWORD texcoord_mask[MAX_REG_TEXCRD]; /* vertex < 3.0 */
1004 BYTE output_registers_mask[MAX_REG_OUTPUT]; /* vertex >= 3.0 */
1005 } u;
1006 DWORD input_registers; /* max(MAX_REG_INPUT, MAX_ATTRIBS), 32 */
1007 DWORD output_registers; /* MAX_REG_OUTPUT, 32 */
1008 WORD integer_constants; /* WINED3D_MAX_CONSTS_I, 16 */
1009 WORD boolean_constants; /* WINED3D_MAX_CONSTS_B, 16 */
1010 WORD local_int_consts; /* WINED3D_MAX_CONSTS_I, 16 */
1011 WORD local_bool_consts; /* WINED3D_MAX_CONSTS_B, 16 */
1013
1017 BYTE bumpmat; /* MAX_TEXTURES, 8 */
1018 BYTE luminanceparams; /* MAX_TEXTURES, 8 */
1020 DWORD uav_read_mask : 8; /* MAX_UNORDERED_ACCESS_VIEWS, 8 */
1021 DWORD uav_counter_mask : 8; /* MAX_UNORDERED_ACCESS_VIEWS, 8 */
1022
1023 DWORD clip_distance_mask : 8; /* MAX_CLIP_DISTANCES, 8 */
1024 DWORD cull_distance_mask : 8; /* MAX_CLIP_DISTANCES, 8 */
1042
1043 DWORD rt_mask; /* Used render targets, 32 max. */
1044
1045 /* Whether or not loops are used in this shader, and nesting depth */
1046 unsigned int loop_depth;
1047 unsigned int min_rel_offset, max_rel_offset;
1048
1051 unsigned int tgsm_count;
1052};
1053
1054/* Keeps track of details for TEX_M#x# instructions which need to maintain
1055 * state information between multiple instructions. */
1057{
1058 unsigned int current_row;
1059 DWORD texcoord_w[2];
1060};
1061
1063{
1065 unsigned int current_loop_reg;
1067};
1068
1070{
1071 const struct wined3d_shader *shader;
1078};
1079
1081{
1083 unsigned int offset;
1084};
1085
1087{
1092 union
1093 {
1094 DWORD immconst_data[4];
1095 unsigned fp_body_idx;
1096 } u;
1097};
1098
1100{
1105};
1106
1108{
1112};
1113
1115{
1117 unsigned int last_register;
1118};
1119
1121{
1127};
1128
1130{
1153};
1154
1156{
1159};
1160
1162{
1164 unsigned int byte_stride;
1165};
1166
1168{
1169 unsigned int size;
1170 unsigned int stride;
1171};
1172
1174{
1176 unsigned int byte_count;
1177};
1178
1180{
1182 unsigned int byte_stride;
1183 unsigned int structure_count;
1184};
1185
1187{
1188 unsigned int x, y, z;
1189};
1190
1192{
1193 unsigned int index;
1194 unsigned int array_size;
1195 unsigned int body_count;
1196 unsigned int table_count;
1197};
1198
1200{
1201 signed char u, v, w;
1202};
1203
1205{
1208};
1209
1211{
1215 unsigned int dst_count;
1216 unsigned int src_count;
1222 union
1223 {
1229 unsigned int count;
1230 unsigned int index;
1244};
1245
1247{
1248 return ins->texel_offset.u || ins->texel_offset.v || ins->texel_offset.w;
1249}
1250
1252{
1255};
1256
1258{
1259 unsigned int count;
1260 unsigned int start;
1261 int step;
1262};
1263
1265{
1266 void *(*shader_init)(const DWORD *byte_code, size_t byte_code_size,
1267 const struct wined3d_shader_signature *output_signature);
1268 void (*shader_free)(void *data);
1269 void (*shader_read_header)(void *data, const DWORD **ptr, struct wined3d_shader_version *shader_version);
1270 void (*shader_read_instruction)(void *data, const DWORD **ptr, struct wined3d_shader_instruction *ins);
1271 BOOL (*shader_is_end)(void *data, const DWORD **ptr);
1272};
1273
1276
1278
1279#define WINED3D_SHADER_CAP_VS_CLIPPING 0x00000001
1280#define WINED3D_SHADER_CAP_SRGB_WRITE 0x00000002
1281#define WINED3D_SHADER_CAP_DOUBLE_PRECISION 0x00000004
1282
1284{
1285 unsigned int vs_version;
1286 unsigned int hs_version;
1287 unsigned int ds_version;
1288 unsigned int gs_version;
1289 unsigned int ps_version;
1290 unsigned int cs_version;
1291
1296
1298};
1299
1301{
1310};
1311
1317
1318#define WINED3D_CONST_NUM_UNUSED ~0U
1319
1321{
1326};
1327
1328/* Stateblock dependent parameters which have to be hardcoded
1329 * into the shader code
1330 */
1331
1332#define WINED3D_PSARGS_PROJECTED (1u << 3)
1333#define WINED3D_PSARGS_TEXTRANSFORM_SHIFT 4
1334#define WINED3D_PSARGS_TEXTRANSFORM_MASK 0xfu
1335#define WINED3D_PSARGS_TEXTYPE_SHIFT 2
1336#define WINED3D_PSARGS_TEXTYPE_MASK 0x3u
1337
1338/* Used for Shader Model 1 pixel shaders to track the bound texture
1339 * type. 2D and RECT textures are separated through NP2 fixup. */
1341{
1345};
1346
1348{
1352 WORD tex_transform; /* ps 1.0-1.3, 4 textures */
1353 WORD tex_types; /* ps 1.0 - 1.4, 6 textures */
1355 /* Bitmap for NP2 texcoord fixups (16 samplers max currently).
1356 D3D9 has a limit of 16 samplers and the fixup is superfluous
1357 in D3D10 (unconditional NP2 support mandatory). */
1359 WORD shadow; /* MAX_FRAGMENT_SAMPLERS, 16 */
1360 WORD texcoords_initialized; /* MAX_TEXTURES, 8 */
1367};
1368
1370{
1372 VS_FOG_COORD = 1
1374
1376{
1384 WORD swizzle_map; /* MAX_ATTRIBS, 16 */
1387};
1388
1390{
1393 unsigned int output_count : 16;
1394 unsigned int next_shader_type : 3;
1395 unsigned int render_offscreen : 1;
1396 unsigned int padding : 12;
1398};
1399
1401{
1402 unsigned int output_count;
1404};
1405
1406struct wined3d_context;
1407struct wined3d_state;
1408struct fragment_pipeline;
1410
1412{
1413 void (*shader_handle_instruction)(const struct wined3d_shader_instruction *);
1414 void (*shader_precompile)(void *shader_priv, struct wined3d_shader *shader);
1415 void (*shader_select)(void *shader_priv, struct wined3d_context *context,
1416 const struct wined3d_state *state);
1417 void (*shader_select_compute)(void *shader_priv, struct wined3d_context *context,
1418 const struct wined3d_state *state);
1419 void (*shader_disable)(void *shader_priv, struct wined3d_context *context);
1420 void (*shader_update_float_vertex_constants)(struct wined3d_device *device, UINT start, UINT count);
1421 void (*shader_update_float_pixel_constants)(struct wined3d_device *device, UINT start, UINT count);
1422 void (*shader_load_constants)(void *shader_priv, struct wined3d_context *context,
1423 const struct wined3d_state *state);
1424 void (*shader_destroy)(struct wined3d_shader *shader);
1425 HRESULT (*shader_alloc_private)(struct wined3d_device *device, const struct wined3d_vertex_pipe_ops *vertex_pipe,
1426 const struct fragment_pipeline *fragment_pipe);
1427 void (*shader_free_private)(struct wined3d_device *device);
1428 BOOL (*shader_allocate_context_data)(struct wined3d_context *context);
1429 void (*shader_free_context_data)(struct wined3d_context *context);
1430 void (*shader_init_context_state)(struct wined3d_context *context);
1431 void (*shader_get_caps)(const struct wined3d_gl_info *gl_info, struct shader_caps *caps);
1432 BOOL (*shader_color_fixup_supported)(struct color_fixup_desc fixup);
1433 BOOL (*shader_has_ffp_proj_control)(void *shader_priv);
1434};
1435
1439
1440#define GL_EXTCALL(f) (gl_info->gl_ops.ext.p_##f)
1441
1442#define D3DCOLOR_B_R(dw) (((dw) >> 16) & 0xff)
1443#define D3DCOLOR_B_G(dw) (((dw) >> 8) & 0xff)
1444#define D3DCOLOR_B_B(dw) (((dw) >> 0) & 0xff)
1445#define D3DCOLOR_B_A(dw) (((dw) >> 24) & 0xff)
1446
1447static inline void wined3d_color_from_d3dcolor(struct wined3d_color *wined3d_color, DWORD d3d_color)
1448{
1449 wined3d_color->r = D3DCOLOR_B_R(d3d_color) / 255.0f;
1450 wined3d_color->g = D3DCOLOR_B_G(d3d_color) / 255.0f;
1451 wined3d_color->b = D3DCOLOR_B_B(d3d_color) / 255.0f;
1452 wined3d_color->a = D3DCOLOR_B_A(d3d_color) / 255.0f;
1453}
1454
1455#define HIGHEST_TRANSFORMSTATE WINED3D_TS_WORLD_MATRIX(255) /* Highest value in wined3d_transform_state. */
1456
1457void wined3d_check_gl_call(const struct wined3d_gl_info *gl_info,
1458 const char *file, unsigned int line, const char *name) DECLSPEC_HIDDEN;
1459
1460/* Checking of API calls */
1461/* --------------------- */
1462#ifndef WINE_NO_DEBUG_MSGS
1463#define checkGLcall(A) \
1464do { \
1465 if (__WINE_IS_DEBUG_ON(_ERR, &__wine_dbch_d3d) \
1466 && !gl_info->supported[ARB_DEBUG_OUTPUT]) \
1467 wined3d_check_gl_call(gl_info, __FILE__, __LINE__, A); \
1468} while(0)
1469#else
1470#define checkGLcall(A) do {} while(0)
1471#endif
1472
1474{
1477};
1478
1480{
1482 const BYTE *addr;
1483};
1484
1486{
1487 return (struct wined3d_const_bo_address *)data;
1488}
1489
1491{
1492 const struct wined3d_format *format;
1495 unsigned int stream_idx;
1496 unsigned int divisor;
1497};
1498
1500{
1504 WORD swizzle_map; /* MAX_ATTRIBS, 16 */
1505 WORD use_map; /* MAX_ATTRIBS, 16 */
1506};
1507
1509 const struct wined3d_state *state, const struct wined3d_gl_info *gl_info,
1510 const struct wined3d_d3d_info *d3d_info) DECLSPEC_HIDDEN;
1511
1513{
1514 unsigned int group_count_x;
1515 unsigned int group_count_y;
1516 unsigned int group_count_z;
1517};
1518
1520{
1522 unsigned int offset;
1523};
1524
1526{
1528 union
1529 {
1532 } u;
1533};
1534
1536{
1538 unsigned int start_idx;
1539 unsigned int index_count;
1540 unsigned int start_instance;
1541 unsigned int instance_count;
1542};
1543
1545{
1547 unsigned int offset;
1548};
1549
1551{
1553 union
1554 {
1557 } u;
1559};
1560
1561void draw_primitive(struct wined3d_device *device, const struct wined3d_state *state,
1562 const struct wined3d_draw_parameters *draw_parameters) DECLSPEC_HIDDEN;
1563void dispatch_compute(struct wined3d_device *device, const struct wined3d_state *state,
1564 const struct wined3d_dispatch_parameters *dispatch_parameters) DECLSPEC_HIDDEN;
1566
1567#define eps 1e-8f
1568
1569#define GET_TEXCOORD_SIZE_FROM_FVF(d3dvtVertexType, tex_num) \
1570 (((((d3dvtVertexType) >> (16 + (2 * (tex_num)))) + 1) & 0x03) + 1)
1571
1573{
1577};
1578
1579/* Routines and structures related to state management */
1580
1581#define STATE_RENDER(a) (a)
1582#define STATE_IS_RENDER(a) ((a) >= STATE_RENDER(1) && (a) <= STATE_RENDER(WINEHIGHEST_RENDER_STATE))
1583
1584#define STATE_TEXTURESTAGE(stage, num) \
1585 (STATE_RENDER(WINEHIGHEST_RENDER_STATE) + 1 + (stage) * (WINED3D_HIGHEST_TEXTURE_STATE + 1) + (num))
1586#define STATE_IS_TEXTURESTAGE(a) \
1587 ((a) >= STATE_TEXTURESTAGE(0, 1) && (a) <= STATE_TEXTURESTAGE(MAX_TEXTURES - 1, WINED3D_HIGHEST_TEXTURE_STATE))
1588
1589/* + 1 because samplers start with 0 */
1590#define STATE_SAMPLER(num) (STATE_TEXTURESTAGE(MAX_TEXTURES - 1, WINED3D_HIGHEST_TEXTURE_STATE) + 1 + (num))
1591#define STATE_IS_SAMPLER(num) ((num) >= STATE_SAMPLER(0) && (num) <= STATE_SAMPLER(MAX_COMBINED_SAMPLERS - 1))
1592
1593#define STATE_GRAPHICS_SHADER(a) (STATE_SAMPLER(MAX_COMBINED_SAMPLERS) + (a))
1594#define STATE_IS_GRAPHICS_SHADER(a) \
1595 ((a) >= STATE_GRAPHICS_SHADER(0) && (a) < STATE_GRAPHICS_SHADER(WINED3D_SHADER_TYPE_GRAPHICS_COUNT))
1596
1597#define STATE_GRAPHICS_CONSTANT_BUFFER(a) (STATE_GRAPHICS_SHADER(WINED3D_SHADER_TYPE_GRAPHICS_COUNT) + (a))
1598#define STATE_IS_GRAPHICS_CONSTANT_BUFFER(a) \
1599 ((a) >= STATE_GRAPHICS_CONSTANT_BUFFER(0) \
1600 && (a) < STATE_GRAPHICS_CONSTANT_BUFFER(WINED3D_SHADER_TYPE_GRAPHICS_COUNT))
1601
1602#define STATE_GRAPHICS_SHADER_RESOURCE_BINDING (STATE_GRAPHICS_CONSTANT_BUFFER(WINED3D_SHADER_TYPE_GRAPHICS_COUNT))
1603#define STATE_IS_GRAPHICS_SHADER_RESOURCE_BINDING(a) ((a) == STATE_GRAPHICS_SHADER_RESOURCE_BINDING)
1604
1605#define STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING (STATE_GRAPHICS_SHADER_RESOURCE_BINDING + 1)
1606#define STATE_IS_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING(a) ((a) == STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING)
1607
1608#define STATE_TRANSFORM(a) (STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING + (a))
1609#define STATE_IS_TRANSFORM(a) ((a) >= STATE_TRANSFORM(1) && (a) <= STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(255)))
1610
1611#define STATE_STREAMSRC (STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(255)) + 1)
1612#define STATE_IS_STREAMSRC(a) ((a) == STATE_STREAMSRC)
1613#define STATE_INDEXBUFFER (STATE_STREAMSRC + 1)
1614#define STATE_IS_INDEXBUFFER(a) ((a) == STATE_INDEXBUFFER)
1615
1616#define STATE_VDECL (STATE_INDEXBUFFER + 1)
1617#define STATE_IS_VDECL(a) ((a) == STATE_VDECL)
1618
1619#define STATE_VIEWPORT (STATE_VDECL + 1)
1620#define STATE_IS_VIEWPORT(a) ((a) == STATE_VIEWPORT)
1621
1622#define STATE_LIGHT_TYPE (STATE_VIEWPORT + 1)
1623#define STATE_IS_LIGHT_TYPE(a) ((a) == STATE_LIGHT_TYPE)
1624#define STATE_ACTIVELIGHT(a) (STATE_LIGHT_TYPE + 1 + (a))
1625#define STATE_IS_ACTIVELIGHT(a) ((a) >= STATE_ACTIVELIGHT(0) && (a) < STATE_ACTIVELIGHT(MAX_ACTIVE_LIGHTS))
1626
1627#define STATE_SCISSORRECT (STATE_ACTIVELIGHT(MAX_ACTIVE_LIGHTS - 1) + 1)
1628#define STATE_IS_SCISSORRECT(a) ((a) == STATE_SCISSORRECT)
1629
1630#define STATE_CLIPPLANE(a) (STATE_SCISSORRECT + 1 + (a))
1631#define STATE_IS_CLIPPLANE(a) ((a) >= STATE_CLIPPLANE(0) && (a) <= STATE_CLIPPLANE(MAX_CLIP_DISTANCES - 1))
1632
1633#define STATE_MATERIAL (STATE_CLIPPLANE(MAX_CLIP_DISTANCES))
1634#define STATE_IS_MATERIAL(a) ((a) == STATE_MATERIAL)
1635
1636#define STATE_FRONTFACE (STATE_MATERIAL + 1)
1637#define STATE_IS_FRONTFACE(a) ((a) == STATE_FRONTFACE)
1638
1639#define STATE_POINTSPRITECOORDORIGIN (STATE_FRONTFACE + 1)
1640#define STATE_IS_POINTSPRITECOORDORIGIN(a) ((a) == STATE_POINTSPRITECOORDORIGIN)
1641
1642#define STATE_BASEVERTEXINDEX (STATE_POINTSPRITECOORDORIGIN + 1)
1643#define STATE_IS_BASEVERTEXINDEX(a) ((a) == STATE_BASEVERTEXINDEX)
1644
1645#define STATE_FRAMEBUFFER (STATE_BASEVERTEXINDEX + 1)
1646#define STATE_IS_FRAMEBUFFER(a) ((a) == STATE_FRAMEBUFFER)
1647
1648#define STATE_POINT_ENABLE (STATE_FRAMEBUFFER + 1)
1649#define STATE_IS_POINT_ENABLE(a) ((a) == STATE_POINT_ENABLE)
1650
1651#define STATE_COLOR_KEY (STATE_POINT_ENABLE + 1)
1652#define STATE_IS_COLOR_KEY(a) ((a) == STATE_COLOR_KEY)
1653
1654#define STATE_STREAM_OUTPUT (STATE_COLOR_KEY + 1)
1655#define STATE_IS_STREAM_OUTPUT(a) ((a) == STATE_STREAM_OUTPUT)
1656
1657#define STATE_BLEND (STATE_STREAM_OUTPUT + 1)
1658#define STATE_IS_BLEND(a) ((a) == STATE_BLEND)
1659
1660#define STATE_COMPUTE_OFFSET (STATE_BLEND + 1)
1661
1662#define STATE_COMPUTE_SHADER (STATE_COMPUTE_OFFSET)
1663#define STATE_IS_COMPUTE_SHADER(a) ((a) == STATE_COMPUTE_SHADER)
1664
1665#define STATE_COMPUTE_CONSTANT_BUFFER (STATE_COMPUTE_SHADER + 1)
1666#define STATE_IS_COMPUTE_CONSTANT_BUFFER(a) ((a) == STATE_COMPUTE_CONSTANT_BUFFER)
1667
1668#define STATE_COMPUTE_SHADER_RESOURCE_BINDING (STATE_COMPUTE_CONSTANT_BUFFER + 1)
1669#define STATE_IS_COMPUTE_SHADER_RESOURCE_BINDING(a) ((a) == STATE_COMPUTE_SHADER_RESOURCE_BINDING)
1670
1671#define STATE_COMPUTE_UNORDERED_ACCESS_VIEW_BINDING (STATE_COMPUTE_SHADER_RESOURCE_BINDING + 1)
1672#define STATE_IS_COMPUTE_UNORDERED_ACCESS_VIEW_BINDING(a) ((a) == STATE_COMPUTE_UNORDERED_ACCESS_VIEW_BINDING)
1673
1674#define STATE_COMPUTE_HIGHEST (STATE_COMPUTE_UNORDERED_ACCESS_VIEW_BINDING)
1675#define STATE_HIGHEST (STATE_COMPUTE_UNORDERED_ACCESS_VIEW_BINDING)
1676
1677#define STATE_IS_COMPUTE(a) ((a) >= STATE_COMPUTE_OFFSET && (a) <= STATE_COMPUTE_HIGHEST)
1678#define STATE_COMPUTE_COUNT (STATE_COMPUTE_HIGHEST - STATE_COMPUTE_OFFSET + 1)
1679
1680#define STATE_SHADER(a) ((a) != WINED3D_SHADER_TYPE_COMPUTE ? STATE_GRAPHICS_SHADER(a) : STATE_COMPUTE_SHADER)
1681#define STATE_CONSTANT_BUFFER(a) \
1682 ((a) != WINED3D_SHADER_TYPE_COMPUTE ? STATE_GRAPHICS_CONSTANT_BUFFER(a) : STATE_COMPUTE_CONSTANT_BUFFER)
1683#define STATE_UNORDERED_ACCESS_VIEW_BINDING(a) ((a) == WINED3D_PIPELINE_GRAPHICS ? \
1684 STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING : STATE_COMPUTE_UNORDERED_ACCESS_VIEW_BINDING)
1685
1690};
1691
1693{
1696};
1697
1699{
1705};
1706
1708{
1709 struct list entry;
1712};
1713
1716void wined3d_fence_issue(struct wined3d_fence *fence, const struct wined3d_device *device) DECLSPEC_HIDDEN;
1718 const struct wined3d_device *device) DECLSPEC_HIDDEN;
1719
1720/* Direct3D terminology with little modifications. We do not have an issued
1721 * state because only the driver knows about it, but we have a created state
1722 * because D3D allows GetData() on a created query, but OpenGL doesn't. */
1724{
1729
1731{
1732 BOOL (*query_poll)(struct wined3d_query *query, DWORD flags);
1733 BOOL (*query_issue)(struct wined3d_query *query, DWORD flags);
1734 void (*query_destroy)(struct wined3d_query *query);
1735};
1736
1738{
1740
1741 void *parent;
1746 const void *data;
1749
1750 LONG counter_main, counter_retrieved;
1752};
1753
1755{
1757
1760};
1761
1763{
1765
1766 struct list entry;
1771};
1772
1774{
1776
1777 struct list entry;
1781};
1782
1785
1787{
1788 GLuint id[2];
1789 struct
1790 {
1794};
1795
1797{
1799
1800 struct list entry;
1803 unsigned int stream_idx;
1806};
1807
1811
1813{
1814 GLuint id[11];
1815 struct
1816 {
1829};
1830
1832{
1834
1835 struct list entry;
1840};
1841
1845
1847{
1850};
1851
1853{
1856 unsigned int sub_resource_idx;
1857 unsigned int layer_count;
1858};
1859
1860#define MAX_GL_FRAGMENT_SAMPLERS 32
1861
1863{
1867 /* State dirtification
1868 * dirtyArray is an array that contains markers for dirty states. numDirtyEntries states are dirty, their numbers are in indices
1869 * 0...numDirtyEntries - 1. isStateDirty is a redundant copy of the dirtyArray. Technically only one of them would be needed,
1870 * but with the help of both it is easy to find out if a state is dirty(just check the array index), and for applying dirty states
1871 * only numDirtyEntries array elements have to be checked, not STATE_HIGHEST states.
1872 */
1873 DWORD dirtyArray[STATE_HIGHEST + 1]; /* Won't get bigger than that, a state is never marked dirty 2 times */
1875 DWORD isStateDirty[STATE_HIGHEST / (sizeof(DWORD) * CHAR_BIT) + 1]; /* Bitmap to find out quickly if a state is dirty */
1876 unsigned int dirty_compute_states[STATE_COMPUTE_COUNT / (sizeof(unsigned int) * CHAR_BIT) + 1];
1877
1880 struct
1881 {
1883 unsigned int sub_resource_idx;
1884 } current_rt;
1885 DWORD tid; /* Thread ID which owns this context at the moment */
1886
1887 /* Stores some information about the context state for optimization */
1889 DWORD last_was_rhw : 1; /* true iff last draw_primitive was in xyzrhw mode */
1890 DWORD last_swizzle_map : 16; /* MAX_ATTRIBS, 16 */
1900 DWORD num_untracked_materials : 2; /* Max value 2 */
1904 DWORD texShaderBumpMap : 8; /* MAX_TEXTURES, 8 */
1905 DWORD lastWasPow2Texture : 8; /* MAX_TEXTURES, 8 */
1906 DWORD fixed_function_usage_map : 8; /* MAX_TEXTURES, 8 */
1907 DWORD lowest_disabled_stage : 4; /* Max MAX_TEXTURES, 8 */
1912 DWORD hdc_has_format : 1; /* only meaningful if hdc_is_private */
1921 DWORD shader_update_mask : 6; /* WINED3D_SHADER_TYPE_COUNT, 6 */
1922 DWORD clip_distance_mask : 8; /* MAX_CLIP_DISTANCES, 8 */
1927 GLenum tracking_parm; /* Which source is tracking current colour */
1928 GLenum untracked_materials[2];
1929 UINT blit_w, blit_h;
1933
1935
1936 /* The actual opengl context */
1947
1950
1951 /* FBOs */
1959 DWORD draw_buffers_mask; /* Enabled draw buffers, 31 max. */
1960
1961 /* Queries */
1966
1969 unsigned int free_fence_count;
1970 struct list fences;
1971
1976
1981
1986
1988
1989 /* Fences for GL_APPLE_flush_buffer_range */
1990 struct wined3d_fence *buffer_fences[MAX_ATTRIBS];
1992
1995
1996 /* Extension emulation */
1999 GLfloat color[4], fogstart, fogend, fogcolor[4];
2001};
2002
2004{
2007};
2008
2009typedef void (*APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id);
2010
2012{
2015};
2016
2018{
2022};
2023
2024#define WINED3D_FRAGMENT_CAP_PROJ_CONTROL 0x00000001
2025#define WINED3D_FRAGMENT_CAP_SRGB_WRITE 0x00000002
2026#define WINED3D_FRAGMENT_CAP_COLOR_KEY 0x00000004
2027
2029{
2035};
2036
2037#define GL_EXT_EMUL_ARB_MULTITEXTURE 0x00000001
2038#define GL_EXT_EMUL_EXT_FOG_COORD 0x00000002
2039
2041{
2042 void (*enable_extension)(const struct wined3d_gl_info *gl_info, BOOL enable);
2043 void (*get_caps)(const struct wined3d_gl_info *gl_info, struct fragment_caps *caps);
2044 DWORD (*get_emul_mask)(const struct wined3d_gl_info *gl_info);
2045 void *(*alloc_private)(const struct wined3d_shader_backend_ops *shader_backend, void *shader_priv);
2046 void (*free_private)(struct wined3d_device *device);
2047 BOOL (*allocate_context_data)(struct wined3d_context *context);
2048 void (*free_context_data)(struct wined3d_context *context);
2049 BOOL (*color_fixup_supported)(struct color_fixup_desc fixup);
2051};
2052
2054{
2065};
2066
2068{
2069 void (*vp_enable)(const struct wined3d_gl_info *gl_info, BOOL enable);
2070 void (*vp_get_caps)(const struct wined3d_gl_info *gl_info, struct wined3d_vertex_caps *caps);
2071 DWORD (*vp_get_emul_mask)(const struct wined3d_gl_info *gl_info);
2072 void *(*vp_alloc)(const struct wined3d_shader_backend_ops *shader_backend, void *shader_priv);
2073 void (*vp_free)(struct wined3d_device *device);
2075};
2076
2085
2089
2090/* "Base" state table */
2091HRESULT compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_multistate_funcs,
2092 const struct wined3d_gl_info *gl_info, const struct wined3d_d3d_info *d3d_info,
2093 const struct wined3d_vertex_pipe_ops *vertex, const struct fragment_pipeline *fragment,
2094 const struct StateEntryTemplate *misc) DECLSPEC_HIDDEN;
2095
2096struct wined3d_surface;
2097
2099{
2107};
2108
2110{
2113};
2114
2116{
2117 void (*blitter_destroy)(struct wined3d_blitter *blitter, struct wined3d_context *context);
2118 void (*blitter_clear)(struct wined3d_blitter *blitter, struct wined3d_device *device,
2119 unsigned int rt_count, const struct wined3d_fb_state *fb, unsigned int rect_count, const RECT *clear_rects,
2120 const RECT *draw_rect, DWORD flags, const struct wined3d_color *colour, float depth, DWORD stencil);
2121 DWORD (*blitter_blit)(struct wined3d_blitter *blitter, enum wined3d_blit_op op, struct wined3d_context *context,
2122 struct wined3d_surface *src_surface, DWORD src_location, const RECT *src_rect,
2123 struct wined3d_surface *dst_surface, DWORD dst_location, const RECT *dst_rect,
2125};
2126
2128 const struct wined3d_device *device) DECLSPEC_HIDDEN;
2131 const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN;
2133 const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN;
2135 const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN;
2136
2138
2140 struct wined3d_texture *texture, unsigned int sub_resource_idx) DECLSPEC_HIDDEN;
2146 UINT rt_count, const struct wined3d_fb_state *fb) DECLSPEC_HIDDEN;
2148 struct wined3d_surface *render_target, struct wined3d_surface *depth_stencil, DWORD location) DECLSPEC_HIDDEN;
2149void context_active_texture(struct wined3d_context *context, const struct wined3d_gl_info *gl_info,
2150 unsigned int unit) DECLSPEC_HIDDEN;
2157 const struct wined3d_bo_address *dst, GLenum dst_binding,
2158 const struct wined3d_bo_address *src, GLenum src_binding, size_t size) DECLSPEC_HIDDEN;
2159struct wined3d_context *context_create(struct wined3d_swapchain *swapchain, struct wined3d_texture *target,
2160 const struct wined3d_format *ds_format) DECLSPEC_HIDDEN;
2170 const struct wined3d_shader_version *shader_version, unsigned int *base, unsigned int *count) DECLSPEC_HIDDEN;
2173 GLuint name, BOOL rb_namespace) DECLSPEC_HIDDEN;
2177 size_t size, GLenum binding, DWORD flags) DECLSPEC_HIDDEN;
2188 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
2190 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
2193 const struct wined3d_bo_address *data, GLenum binding) DECLSPEC_HIDDEN;
2194
2195/*****************************************************************************
2196 * Internal representation of a light
2197 */
2199{
2200 struct wined3d_light OriginalParms; /* Note D3D8LIGHT == D3D9LIGHT */
2204
2205 /* Converted parms to speed up swapping lights */
2209 float cutoff;
2210
2211 struct list entry;
2212};
2213
2214/* The default light parameters */
2216
2218{
2219 int iPixelFormat; /* WGL pixel format */
2220 int iPixelType; /* WGL pixel type e.g. WGL_TYPE_RGBA_ARB, WGL_TYPE_RGBA_FLOAT_ARB or WGL_TYPE_COLORINDEX_ARB */
2221 int redSize, greenSize, blueSize, alphaSize, colorSize;
2222 int depthSize, stencilSize;
2227};
2228
2230{
2236};
2237
2239{
2240 CARD_WINE = 0x0000,
2241
2288
2304 CARD_NVIDIA_GEFORCE_7300 = 0x01d7, /* GeForce Go 7300 */
2308 CARD_NVIDIA_GEFORCE_8200 = 0x0849, /* Other PCI ID 0x084b */
2395 CARD_NVIDIA_GEFORCE_GTX860M = 0x1392, /* Other PCI ID 0x119a */
2413
2415
2486};
2487
2489{
2492 void (WINE_GLAPI *glDeleteRenderbuffers)(GLsizei n, const GLuint *renderbuffers);
2493 void (WINE_GLAPI *glGenRenderbuffers)(GLsizei n, GLuint *renderbuffers);
2496 void (WINE_GLAPI *glRenderbufferStorageMultisample)(GLenum target, GLsizei samples,
2498 void (WINE_GLAPI *glGetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint *params);
2501 void (WINE_GLAPI *glDeleteFramebuffers)(GLsizei n, const GLuint *framebuffers);
2502 void (WINE_GLAPI *glGenFramebuffers)(GLsizei n, GLuint *framebuffers);
2503 GLenum (WINE_GLAPI *glCheckFramebufferStatus)(GLenum target);
2504 void (WINE_GLAPI *glFramebufferTexture)(GLenum target, GLenum attachment,
2506 void (WINE_GLAPI *glFramebufferTexture1D)(GLenum target, GLenum attachment,
2508 void (WINE_GLAPI *glFramebufferTexture2D)(GLenum target, GLenum attachment,
2510 void (WINE_GLAPI *glFramebufferTexture3D)(GLenum target, GLenum attachment,
2512 void (WINE_GLAPI *glFramebufferTextureLayer)(GLenum target, GLenum attachment,
2514 void (WINE_GLAPI *glFramebufferRenderbuffer)(GLenum target, GLenum attachment,
2516 void (WINE_GLAPI *glGetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment,
2518 void (WINE_GLAPI *glBlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
2520 void (WINE_GLAPI *glGenerateMipmap)(GLenum target);
2521};
2522
2524{
2530 unsigned int uniform_blocks[WINED3D_SHADER_TYPE_COUNT];
2532 unsigned int graphics_samplers;
2533 unsigned int combined_samplers;
2545
2547
2548 unsigned int framebuffer_width;
2550
2554
2564};
2565
2567 enum wined3d_shader_type shader_type, unsigned int *base, unsigned int *count) DECLSPEC_HIDDEN;
2569 enum wined3d_shader_type shader_type, unsigned int *base, unsigned int *count) DECLSPEC_HIDDEN;
2570
2572{
2576 DWORD reserved_glsl_constants, reserved_arb_constants;
2580
2581 HGLRC (WINAPI *p_wglCreateContextAttribsARB)(HDC dc, HGLRC share, const GLint *attribs);
2584
2586 unsigned int format_count;
2587};
2588
2590{
2593 const char *name;
2594 const char *description;
2598};
2599
2600/* The adapter structure */
2602{
2606
2610 WCHAR DeviceName[CCHDEVICENAME]; /* DeviceName for use with e.g. ChangeDisplaySettings */
2611 unsigned int cfg_count;
2616
2620};
2621
2623{
2629
2633};
2634
2638
2640
2642
2644{
2647 proj_count4 = 2
2649
2651{
2653 tempreg = 1
2655
2656/*****************************************************************************
2657 * Fixed function pipeline replacements
2658 */
2659#define ARG_UNUSED 0xff
2661{
2662 unsigned cop : 8;
2663 unsigned carg1 : 8;
2664 unsigned carg2 : 8;
2665 unsigned carg0 : 8;
2666
2667 unsigned aop : 8;
2668 unsigned aarg1 : 8;
2669 unsigned aarg2 : 8;
2670 unsigned aarg0 : 8;
2671
2673 unsigned tex_type : 3;
2674 unsigned dst : 1;
2675 unsigned projected : 2;
2676 unsigned padding : 10;
2677};
2678
2680{
2683 unsigned char sRGB_write;
2684 unsigned char emul_clipplanes;
2686 unsigned char color_key_enabled : 1;
2687 unsigned char pointsprite : 1;
2688 unsigned char flatshading : 1;
2689 unsigned char alpha_test_func : 3;
2690 unsigned char padding : 2;
2691};
2692
2694{
2697};
2698
2701
2703
2704unsigned int wined3d_max_compat_varyings(const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN;
2705void gen_ffp_frag_op(const struct wined3d_context *context, const struct wined3d_state *state,
2706 struct ffp_frag_settings *settings, BOOL ignore_textype) DECLSPEC_HIDDEN;
2707const struct ffp_frag_desc *find_ffp_frag_shader(const struct wine_rb_tree *fragment_shaders,
2710void wined3d_ftoa(float value, char *s) DECLSPEC_HIDDEN;
2711
2712extern const float wined3d_srgb_const0[] DECLSPEC_HIDDEN;
2713extern const float wined3d_srgb_const1[] DECLSPEC_HIDDEN;
2714
2716{
2721};
2722
2723#define WINED3D_FFP_TCI_SHIFT 16
2724#define WINED3D_FFP_TCI_MASK 0xffu
2725
2726#define WINED3D_FFP_LIGHT_TYPE_SHIFT(idx) (3 * (idx))
2727#define WINED3D_FFP_LIGHT_TYPE_MASK 0x7u
2728
2730{
2746
2750 DWORD texcoords : 8; /* MAX_TEXTURES */
2753 DWORD swizzle_map : 16; /* MAX_ATTRIBS, 16 */
2756
2758};
2759
2761{
2764};
2765
2768
2770{
2774 struct wined3d_adapter adapters[1];
2775};
2776
2780
2782{
2785
2786 void *parent;
2788
2790};
2791
2793{
2796
2797 void *parent;
2799
2801};
2802
2804{
2807};
2808
2810{
2816};
2817
2818#define WINED3D_STATE_NO_REF 0x00000001
2819#define WINED3D_STATE_INIT_DEFAULT 0x00000002
2820
2822{
2824 const struct wined3d_fb_state *fb;
2825
2828 struct wined3d_stream_state streams[MAX_STREAMS + 1 /* tesselated pseudo-stream */];
2831 unsigned int index_offset;
2833 int load_base_vertex_index; /* Non-indexed drawing needs 0 here, indexed needs base_vertex_index. */
2838
2844
2848
2852
2856
2862
2863 /* Light hashmap. Collisions are handled using linked lists. */
2864#define LIGHTMAP_SIZE 43
2865#define LIGHTMAP_HASHFUNC(x) ((x) % LIGHTMAP_SIZE)
2866 struct list light_map[LIGHTMAP_SIZE];
2868
2872};
2873
2874static inline BOOL wined3d_dualblend_enabled(const struct wined3d_state *state, const struct wined3d_gl_info *gl_info)
2875{
2876 if (!state->fb->render_targets[0]) return FALSE;
2877 if (!state->render_states[WINED3D_RS_ALPHABLENDENABLE]) return FALSE;
2878 if (!gl_info->supported[ARB_BLEND_FUNC_EXTENDED]) return FALSE;
2879
2880#define IS_DUAL_SOURCE_BLEND(x) ((x) >= WINED3D_BLEND_SRC1COLOR && (x) <= WINED3D_BLEND_INVSRC1ALPHA)
2881 if (IS_DUAL_SOURCE_BLEND(state->render_states[WINED3D_RS_SRCBLEND])) return TRUE;
2882 if (IS_DUAL_SOURCE_BLEND(state->render_states[WINED3D_RS_DESTBLEND])) return TRUE;
2883 if (IS_DUAL_SOURCE_BLEND(state->render_states[WINED3D_RS_SRCBLENDALPHA])) return TRUE;
2884 if (IS_DUAL_SOURCE_BLEND(state->render_states[WINED3D_RS_DESTBLENDALPHA])) return TRUE;
2885#undef IS_DUAL_SOURCE_BLEND
2886
2887 return FALSE;
2888}
2889
2891{
2903};
2904
2905#if defined(STAGING_CSMT)
2906struct wined3d_gl_bo
2907{
2908 GLuint name;
2909 GLenum usage;
2910 GLenum type_hint;
2911 UINT size;
2912};
2913
2914#endif /* STAGING_CSMT */
2915#define WINED3D_UNMAPPED_STAGE ~0u
2916
2917/* Multithreaded flag. Removed from the public header to signal that
2918 * wined3d_device_create() ignores it. */
2919#define WINED3DCREATE_MULTITHREADED 0x00000004
2920
2922{
2924
2925 /* WineD3D Information */
2929
2930 /* Window styles to restore when switching fullscreen mode */
2933
2938 struct StateEntry StateTable[STATE_HIGHEST + 1];
2939 /* Array of functions for states which are handled by more than one pipeline part */
2940 APPLYSTATEFUNC *multistate_funcs[STATE_HIGHEST + 1];
2942
2943 BYTE vertexBlendUsed : 1; /* To avoid needless setting of the blend matrices */
2946 BYTE inScene : 1; /* A flag to check for proper BeginScene / EndScene call pairs */
2947 BYTE softwareVertexProcessing : 1; /* process vertex shaders using software or hardware */
2950
2951 unsigned char surface_alignment; /* Line Alignment of surfaces */
2952
2954
2958
2959 /* Internal use fields */
2962
2966
2967 struct list resources; /* a linked list to track resources created by the device */
2968 struct list shaders; /* a linked list to track shaders (pixel and vertex) */
2970
2971 /* Render Target Support */
2974
2975 /* Cursor management */
2980 UINT cursorWidth, cursorHeight;
2983
2984 /* The Wine logo texture */
2986
2987 /* Textures for when no other textures are mapped */
2989
2990 /* Default sampler used to emulate the direct resource access without using wined3d_sampler */
2993
2994 /* Command stream */
2996
2997 /* Context management */
3000};
3001
3002void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, const struct wined3d_fb_state *fb,
3003 UINT rect_count, const RECT *rects, const RECT *draw_rect, DWORD flags,
3004 const struct wined3d_color *color, float depth, DWORD stencil) DECLSPEC_HIDDEN;
3008 UINT adapter_idx, enum wined3d_device_type device_type, HWND focus_window, DWORD flags,
3009 BYTE surface_alignment, struct wined3d_device_parent *device_parent) DECLSPEC_HIDDEN;
3015#if defined(STAGING_CSMT)
3016struct wined3d_gl_bo *wined3d_device_get_bo(struct wined3d_device *device, UINT size, GLenum gl_usage,
3017 GLenum type_hint, struct wined3d_context *context) DECLSPEC_HIDDEN;
3018void wined3d_device_release_bo(struct wined3d_device *device, struct wined3d_gl_bo *bo,
3020#endif /* STAGING_CSMT */
3021
3023{
3024 DWORD idx = state / (sizeof(*context->isStateDirty) * CHAR_BIT);
3025 BYTE shift = state & ((sizeof(*context->isStateDirty) * CHAR_BIT) - 1);
3026 return context->isStateDirty[idx] & (1u << shift);
3027}
3028
3030
3032{
3034}
3035
3037{
3038 ULONG (*resource_incref)(struct wined3d_resource *resource);
3039 ULONG (*resource_decref)(struct wined3d_resource *resource);
3040 void (*resource_preload)(struct wined3d_resource *resource);
3042 HRESULT (*resource_sub_resource_map)(struct wined3d_resource *resource, unsigned int sub_resource_idx,
3043 struct wined3d_map_desc *map_desc, const struct wined3d_box *box, DWORD flags);
3044 HRESULT (*resource_map_info)(struct wined3d_resource *resource, unsigned int sub_resource_idx,
3045 struct wined3d_map_info *info, DWORD flags);
3046 HRESULT (*resource_sub_resource_unmap)(struct wined3d_resource *resource, unsigned int sub_resource_idx);
3047};
3048
3050{
3058 const struct wined3d_format *format;
3059 unsigned int format_flags;
3063 unsigned int access;
3072
3073 void *parent;
3076
3078};
3079
3081{
3082 return resource->resource_ops->resource_incref(resource);
3083}
3084
3086{
3087 return resource->resource_ops->resource_decref(resource);
3088}
3089
3091{
3092 InterlockedIncrement(&resource->access_count);
3093}
3094
3096{
3097 InterlockedDecrement(&resource->access_count);
3098}
3099
3102 enum wined3d_resource_type type, const struct wined3d_format *format,
3103 enum wined3d_multisample_type multisample_type, unsigned int multisample_quality,
3104 unsigned int usage, unsigned int access, unsigned int width, unsigned int height, unsigned int depth,
3105 unsigned int size, void *parent, const struct wined3d_parent_ops *parent_ops,
3106 const struct wined3d_resource_ops *resource_ops) DECLSPEC_HIDDEN;
3114
3115/* Tests show that the start address of resources is 32 byte aligned */
3116#define RESOURCE_ALIGNMENT 16
3117#define WINED3D_CONSTANT_BUFFER_ALIGNMENT 16
3118
3120{
3122 unsigned int base_level;
3124};
3125
3127{
3128 void (*texture_upload_data)(struct wined3d_texture *texture, unsigned int sub_resource_idx,
3129 const struct wined3d_context *context, const struct wined3d_box *box,
3130 const struct wined3d_const_bo_address *data, unsigned int row_pitch, unsigned int slice_pitch);
3131 BOOL (*texture_load_location)(struct wined3d_texture *texture, unsigned int sub_resource_idx,
3133 void (*texture_prepare_texture)(struct wined3d_texture *texture,
3134 struct wined3d_context *context, BOOL srgb);
3135 void (*texture_cleanup_sub_resources)(struct wined3d_texture *texture);
3136};
3137
3138#define WINED3D_TEXTURE_COND_NP2 0x00000001
3139#define WINED3D_TEXTURE_COND_NP2_EMULATED 0x00000002
3140#define WINED3D_TEXTURE_POW2_MAT_IDENT 0x00000004
3141#define WINED3D_TEXTURE_IS_SRGB 0x00000008
3142#define WINED3D_TEXTURE_RGB_ALLOCATED 0x00000010
3143#define WINED3D_TEXTURE_RGB_VALID 0x00000020
3144#define WINED3D_TEXTURE_SRGB_ALLOCATED 0x00000040
3145#define WINED3D_TEXTURE_SRGB_VALID 0x00000080
3146#define WINED3D_TEXTURE_CONVERTED 0x00000100
3147#define WINED3D_TEXTURE_PIN_SYSMEM 0x00000200
3148#define WINED3D_TEXTURE_NORMALIZED_COORDS 0x00000400
3149#define WINED3D_TEXTURE_GET_DC_LENIENT 0x00000800
3150#define WINED3D_TEXTURE_DC_IN_USE 0x00001000
3151#define WINED3D_TEXTURE_DISCARD 0x00002000
3152#define WINED3D_TEXTURE_GET_DC 0x00004000
3153#define WINED3D_TEXTURE_GENERATE_MIPMAPS 0x00008000
3154
3155#define WINED3D_TEXTURE_ASYNC_COLOR_KEY 0x00000001
3156
3158{
3161 struct gl_texture texture_rgb, texture_srgb;
3163 unsigned int pow2_width;
3164 unsigned int pow2_height;
3167 unsigned int download_count;
3168 unsigned int sysmem_count;
3169 float pow2_matrix[16];
3175
3178
3180 unsigned int row_pitch;
3181 unsigned int slice_pitch;
3182
3183 /* May only be accessed from the command stream worker thread. */
3185 {
3187
3188 /* Color keys for DDraw */
3195 } async;
3196
3198 {
3199 struct list entry;
3204 } *overlay_info;
3205
3207 {
3208 void *parent;
3210
3211 union
3212 {
3214 } u;
3215 unsigned int offset;
3216 unsigned int size;
3217
3218 unsigned int map_count;
3220#if !defined(STAGING_CSMT)
3222#else /* STAGING_CSMT */
3223 struct wined3d_gl_bo *buffer;
3224#endif /* STAGING_CSMT */
3225 } sub_resources[1];
3226};
3227
3229{
3231}
3232
3234 unsigned int sub_resource_idx)
3235{
3236 static const GLenum cube_targets[] =
3237 {
3244 };
3245
3246 return texture->resource.usage & WINED3DUSAGE_LEGACY_CUBEMAP
3247 ? cube_targets[sub_resource_idx / texture->level_count] : texture->target;
3248}
3249
3251 BOOL srgb)
3252{
3253 return srgb ? &texture->texture_srgb : &texture->texture_rgb;
3254}
3255
3256static inline unsigned int wined3d_texture_get_level_width(const struct wined3d_texture *texture,
3257 unsigned int level)
3258{
3259 return max(1, texture->resource.width >> level);
3260}
3261
3262static inline unsigned int wined3d_texture_get_level_height(const struct wined3d_texture *texture,
3263 unsigned int level)
3264{
3265 return max(1, texture->resource.height >> level);
3266}
3267
3268static inline unsigned int wined3d_texture_get_level_depth(const struct wined3d_texture *texture,
3269 unsigned int level)
3270{
3271 return max(1, texture->resource.depth >> level);
3272}
3273
3274static inline unsigned int wined3d_texture_get_level_pow2_width(const struct wined3d_texture *texture,
3275 unsigned int level)
3276{
3277 return max(1, texture->pow2_width >> level);
3278}
3279
3280static inline unsigned int wined3d_texture_get_level_pow2_height(const struct wined3d_texture *texture,
3281 unsigned int level)
3282{
3283 return max(1, texture->pow2_height >> level);
3284}
3285
3287 const struct wined3d_sampler_desc *sampler_desc, const struct wined3d_context *context) DECLSPEC_HIDDEN;
3293 unsigned int level, const struct wined3d_box *box) DECLSPEC_HIDDEN;
3295void wined3d_texture_get_memory(struct wined3d_texture *texture, unsigned int sub_resource_idx,
3298 unsigned int sub_resource_idx, DWORD location) DECLSPEC_HIDDEN;
3302 unsigned int sub_resource_idx, struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN;
3303BOOL wined3d_texture_prepare_location(struct wined3d_texture *texture, unsigned int sub_resource_idx,
3309 struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
3310void wined3d_texture_upload_data(struct wined3d_texture *texture, unsigned int sub_resource_idx,
3311 const struct wined3d_context *context, const struct wined3d_box *box,
3312 const struct wined3d_const_bo_address *data, unsigned int row_pitch, unsigned int slice_pitch) DECLSPEC_HIDDEN;
3314 unsigned int sub_resource_idx, DWORD location) DECLSPEC_HIDDEN;
3315
3316#define WINED3D_LOCATION_DISCARDED 0x00000001
3317#define WINED3D_LOCATION_SYSMEM 0x00000002
3318#define WINED3D_LOCATION_USER_MEMORY 0x00000004
3319#define WINED3D_LOCATION_BUFFER 0x00000008
3320#define WINED3D_LOCATION_TEXTURE_RGB 0x00000010
3321#define WINED3D_LOCATION_TEXTURE_SRGB 0x00000020
3322#define WINED3D_LOCATION_DRAWABLE 0x00000040
3323#define WINED3D_LOCATION_RB_MULTISAMPLE 0x00000080
3324#define WINED3D_LOCATION_RB_RESOLVED 0x00000100
3325
3327
3329{
3330 struct list entry;
3334};
3335
3337{
3341};
3342
3343#define WINED3D_FBO_ENTRY_FLAG_ATTACHED 0x1
3344#define WINED3D_FBO_ENTRY_FLAG_DEPTH 0x2
3345#define WINED3D_FBO_ENTRY_FLAG_STENCIL 0x4
3346
3348{
3349 struct list entry;
3354 {
3358};
3359
3361{
3363
3364 unsigned int texture_level;
3365 unsigned int texture_layer;
3366
3367 /* For GetDC */
3370
3373};
3374
3375static inline unsigned int surface_get_sub_resource_idx(const struct wined3d_surface *surface)
3376{
3377 return surface->texture_layer * surface->container->level_count + surface->texture_level;
3378}
3379
3380static inline struct wined3d_texture_sub_resource *surface_get_sub_resource(struct wined3d_surface *surface)
3381{
3382 return &surface->container->sub_resources[surface_get_sub_resource_idx(surface)];
3383}
3384
3385HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst_rect,
3386 struct wined3d_surface *src_surface, const RECT *src_rect, DWORD flags,
3388void surface_load_fb_texture(struct wined3d_surface *surface, BOOL srgb,
3395void wined3d_surface_upload_data(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info,
3396 const struct wined3d_format *format, const RECT *src_rect, UINT src_pitch, const POINT *dst_point,
3398
3399void draw_textured_quad(struct wined3d_texture *texture, unsigned int sub_resource_idx,
3400 struct wined3d_context *context, const RECT *src_rect, const RECT *dst_rect,
3402
3404{
3409 void *parent;
3412};
3413
3414void wined3d_sampler_bind(struct wined3d_sampler *sampler, unsigned int unit,
3416
3418{
3419 const struct wined3d_format *format;
3421 unsigned int input_slot;
3422 unsigned int offset;
3423 unsigned int output_slot;
3429};
3430
3432{
3434 void *parent;
3437
3440
3443};
3444
3446{
3448 WORD streamSource; /* MAX_STREAMS, 16 */
3449 WORD streamFreq; /* MAX_STREAMS, 16 */
3450 DWORD renderState[(WINEHIGHEST_RENDER_STATE >> 5) + 1];
3451 DWORD textureState[MAX_TEXTURES]; /* WINED3D_HIGHEST_TEXTURE_STATE + 1, 18 */
3452 WORD samplerState[MAX_COMBINED_SAMPLERS]; /* WINED3D_HIGHEST_SAMPLER_STATE + 1, 14 */
3453 DWORD clipplane; /* WINED3D_MAX_USER_CLIP_PLANES, 32 */
3454 WORD pixelShaderConstantsB; /* WINED3D_MAX_CONSTS_B, 16 */
3455 WORD pixelShaderConstantsI; /* WINED3D_MAX_CONSTS_I, 16 */
3457 WORD vertexShaderConstantsB; /* WINED3D_MAX_CONSTS_B, 16 */
3458 WORD vertexShaderConstantsI; /* WINED3D_MAX_CONSTS_I, 16 */
3460 DWORD textures : 20; /* MAX_COMBINED_SAMPLERS, 20 */
3469};
3470
3474};
3475
3477{
3478 LONG ref; /* Note: Ref counting not required */
3480
3481 /* Array indicating whether things have been set or changed */
3484
3485 /* Contained state management */
3486 DWORD contained_render_states[WINEHIGHEST_RENDER_STATE + 1];
3488 DWORD contained_transform_states[HIGHEST_TRANSFORMSTATE + 1];
3490 DWORD contained_vs_consts_i[WINED3D_MAX_CONSTS_I];
3492 DWORD contained_vs_consts_b[WINED3D_MAX_CONSTS_B];
3494 DWORD contained_vs_consts_f[WINED3D_MAX_VS_CONSTS_F];
3496 DWORD contained_ps_consts_i[WINED3D_MAX_CONSTS_I];
3498 DWORD contained_ps_consts_b[WINED3D_MAX_CONSTS_B];
3500 DWORD contained_ps_consts_f[WINED3D_MAX_PS_CONSTS_F];
3502 struct StageState contained_tss_states[MAX_TEXTURES * (WINED3D_HIGHEST_TEXTURE_STATE + 1)];
3506};
3507
3509
3511void wined3d_state_enable_light(struct wined3d_state *state, const struct wined3d_d3d_info *d3d_info,
3512 struct wined3d_light_info *light_info, BOOL enable) DECLSPEC_HIDDEN;
3514 unsigned int idx) DECLSPEC_HIDDEN;
3515void state_init(struct wined3d_state *state, struct wined3d_fb_state *fb,
3516 const struct wined3d_gl_info *gl_info, const struct wined3d_d3d_info *d3d_info,
3519
3521{
3525};
3526
3528{
3535};
3536
3537#define WINED3D_CS_QUERY_POLL_INTERVAL 10u
3538#define WINED3D_CS_QUEUE_SIZE 0x100000u
3539#ifdef __REACTOS__
3540#define WINED3D_CS_SPIN_COUNT 1u
3541#else
3542#define WINED3D_CS_SPIN_COUNT 10000000u
3543#endif
3544
3546{
3549};
3550
3552{
3553#if defined(STAGING_CSMT)
3554 BOOL (*check_space)(struct wined3d_cs *cs, size_t size, enum wined3d_cs_queue_id queue_id);
3555#endif /* STAGING_CSMT */
3556 void *(*require_space)(struct wined3d_cs *cs, size_t size, enum wined3d_cs_queue_id queue_id);
3557 void (*submit)(struct wined3d_cs *cs, enum wined3d_cs_queue_id queue_id);
3558 void (*finish)(struct wined3d_cs *cs, enum wined3d_cs_queue_id queue_id);
3559 void (*push_constants)(struct wined3d_cs *cs, enum wined3d_push_constants p,
3560 unsigned int start_idx, unsigned int count, const void *constants);
3561};
3562
3564{
3565 const struct wined3d_cs_ops *ops;
3572
3575 void *data;
3578
3582};
3583
3587 void (*callback)(void *object), void *object) DECLSPEC_HIDDEN;
3589 struct wined3d_texture *texture, unsigned int layer) DECLSPEC_HIDDEN;
3590void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_resource *dst_resource,
3591 unsigned int dst_sub_resource_idx, const struct wined3d_box *dst_box, struct wined3d_resource *src_resource,
3592 unsigned int src_sub_resource_idx, const struct wined3d_box *src_box, DWORD flags,
3594void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *rects,
3597 const RECT *rect, DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil) DECLSPEC_HIDDEN;
3599 struct wined3d_unordered_access_view *view, const struct wined3d_uvec4 *clear_value) DECLSPEC_HIDDEN;
3600void wined3d_cs_emit_copy_uav_counter(struct wined3d_cs *cs, struct wined3d_buffer *dst_buffer,
3601 unsigned int offset, struct wined3d_unordered_access_view *uav) DECLSPEC_HIDDEN;
3603 unsigned int group_count_x, unsigned int group_count_y, unsigned int group_count_z) DECLSPEC_HIDDEN;
3605 struct wined3d_buffer *buffer, unsigned int offset) DECLSPEC_HIDDEN;
3606void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count,
3607 int base_vertex_idx, unsigned int start_idx, unsigned int index_count,
3608 unsigned int start_instance, unsigned int instance_count, BOOL indexed) DECLSPEC_HIDDEN;
3609void wined3d_cs_emit_draw_indirect(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count,
3610 struct wined3d_buffer *buffer, unsigned int offset, BOOL indexed) DECLSPEC_HIDDEN;
3614void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *swapchain, const RECT *src_rect,
3615 const RECT *dst_rect, HWND dst_window_override, DWORD swap_interval, DWORD flags) DECLSPEC_HIDDEN;
3619void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx,
3620 const struct wined3d_vec4 *plane) DECLSPEC_HIDDEN;
3624 UINT cb_idx, struct wined3d_buffer *buffer) DECLSPEC_HIDDEN;
3631void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_material *material) DECLSPEC_HIDDEN;
3633 struct wined3d_query *predicate, BOOL value) DECLSPEC_HIDDEN;
3635 struct wined3d_rasterizer_state *rasterizer_state) DECLSPEC_HIDDEN;
3638void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int view_idx,
3643 UINT sampler_idx, struct wined3d_sampler *sampler) DECLSPEC_HIDDEN;
3644void wined3d_cs_emit_set_sampler_state(struct wined3d_cs *cs, UINT sampler_idx,
3649void wined3d_cs_emit_set_stream_output(struct wined3d_cs *cs, UINT stream_idx,
3651void wined3d_cs_emit_set_stream_source(struct wined3d_cs *cs, UINT stream_idx,
3659 const struct wined3d_matrix *matrix) DECLSPEC_HIDDEN;
3661 unsigned int view_idx, struct wined3d_unordered_access_view *view,
3662 unsigned int initial_count) DECLSPEC_HIDDEN;
3665void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) DECLSPEC_HIDDEN;
3668 unsigned int sub_resource_idx, const struct wined3d_box *box, const void *data, unsigned int row_pitch,
3669 unsigned int slice_pitch) DECLSPEC_HIDDEN;
3671 void (*callback)(void *object), void *object) DECLSPEC_HIDDEN;
3672HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource, unsigned int sub_resource_idx,
3673 struct wined3d_map_desc *map_desc, const struct wined3d_box *box, unsigned int flags) DECLSPEC_HIDDEN;
3675 unsigned int sub_resource_idx) DECLSPEC_HIDDEN;
3676
3678 unsigned int start_idx, unsigned int count, const void *constants)
3679{
3680 cs->ops->push_constants(cs, p, start_idx, count, constants);
3681}
3682
3684{
3685 const struct wined3d_cs *cs = resource->device->cs;
3686
3687 if (!cs->thread || cs->thread_id == GetCurrentThreadId())
3688 return;
3689
3690 while (InterlockedCompareExchange(&resource->access_count, 0, 0))
3691 wined3d_pause();
3692}
3693
3694/* TODO: Add tests and support for FLOAT16_4 POSITIONT, D3DCOLOR position, other
3695 * fixed function semantics as D3DCOLOR or FLOAT16 */
3697{
3701};
3702
3704{
3707};
3708
3710{
3712
3714
3718 unsigned int bind_flags;
3721 void *map_ptr;
3722
3724 SIZE_T maps_size, modified_areas;
3726
3727 /* conversion stuff */
3728 UINT decl_change_count, full_conversion_count;
3730 UINT stride; /* 0 if no conversion */
3731 enum wined3d_buffer_conversion_type *conversion_map; /* NULL if no conversion */
3732 UINT conversion_stride; /* 0 if no shifted conversion */
3733};
3734
3736{
3738}
3739
3744 const struct wined3d_state *state) DECLSPEC_HIDDEN;
3748void wined3d_buffer_copy(struct wined3d_buffer *dst_buffer, unsigned int dst_offset,
3749 struct wined3d_buffer *src_buffer, unsigned int src_offset, unsigned int size) DECLSPEC_HIDDEN;
3751 const struct wined3d_box *box, const void *data) DECLSPEC_HIDDEN;
3752
3754{
3756
3758 void *parent;
3760
3762 const struct wined3d_format *format;
3763 unsigned int format_flags;
3764 unsigned int sub_resource_idx;
3765 unsigned int layer_count;
3766
3767 unsigned int width;
3768 unsigned int height;
3769
3771};
3772
3774 const struct wined3d_rendertarget_view *view)
3775{
3776 struct wined3d_texture *texture;
3777
3778 if (!view || view->resource->type != WINED3D_RTYPE_TEXTURE_2D)
3779 return NULL;
3780
3781 texture = texture_from_resource(view->resource);
3782
3783 return texture->sub_resources[view->sub_resource_idx].u.surface;
3784}
3785
3787 const struct wined3d_context *context, unsigned int *width, unsigned int *height) DECLSPEC_HIDDEN;
3796
3798{
3800
3802 void *parent;
3804
3806 const struct wined3d_format *format;
3807
3809};
3810
3814
3816{
3818
3820 void *parent;
3822
3824 const struct wined3d_format *format;
3826
3828};
3829
3831 const struct wined3d_uvec4 *clear_value, struct wined3d_context *context) DECLSPEC_HIDDEN;
3833 struct wined3d_buffer *buffer, unsigned int offset, struct wined3d_context *context) DECLSPEC_HIDDEN;
3837 unsigned int value) DECLSPEC_HIDDEN;
3838
3840{
3841 void (*swapchain_present)(struct wined3d_swapchain *swapchain,
3842 const RECT *src_rect, const RECT *dst_rect, DWORD flags);
3843 void (*swapchain_frontbuffer_updated)(struct wined3d_swapchain *swapchain);
3844};
3845
3847{
3849 void *parent;
3853
3857 struct wined3d_display_mode original_mode, d3d_mode;
3860 BOOL render_to_fbo, reapply_mode;
3864
3865 LONG prev_time, frames; /* Performance tracking */
3866
3868 unsigned int num_contexts;
3869
3872
3875};
3876
3877void wined3d_swapchain_activate(struct wined3d_swapchain *swapchain, BOOL activate) DECLSPEC_HIDDEN;
3883
3884/*****************************************************************************
3885 * Utility function prototypes
3886 */
3887
3888/* Trace routines */
3889const char *debug_box(const struct wined3d_box *box) DECLSPEC_HIDDEN;
3890const char *debug_color(const struct wined3d_color *color) DECLSPEC_HIDDEN;
3894const char *debug_d3dresourcetype(enum wined3d_resource_type resource_type) DECLSPEC_HIDDEN;
3896const char *debug_d3dusagequery(DWORD usagequery) DECLSPEC_HIDDEN;
3900const char *debug_d3dprimitivetype(enum wined3d_primitive_type primitive_type) DECLSPEC_HIDDEN;
3906const char *debug_d3dtop(enum wined3d_texture_op d3dtop) DECLSPEC_HIDDEN;
3911const char *debug_ivec4(const struct wined3d_ivec4 *v) DECLSPEC_HIDDEN;
3912const char *debug_uvec4(const struct wined3d_uvec4 *v) DECLSPEC_HIDDEN;
3914const char *debug_vec4(const struct wined3d_vec4 *v) DECLSPEC_HIDDEN;
3916
3917BOOL is_invalid_op(const struct wined3d_state *state, int stage,
3919void set_tex_op_nvrc(const struct wined3d_gl_info *gl_info, const struct wined3d_state *state,
3921 INT texture_idx, DWORD dst) DECLSPEC_HIDDEN;
3923 const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN;
3925 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3927 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3929 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3931 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3933 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3935 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3937 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3939 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3940void state_nop(struct wined3d_context *context,
3941 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3943 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3944
3946 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3947void clipplane(struct wined3d_context *context,
3948 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3950 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3952 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3954 const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
3955
3957
3958/* Math utils */
3959void multiply_matrix(struct wined3d_matrix *dest, const struct wined3d_matrix *src1,
3960 const struct wined3d_matrix *src2) DECLSPEC_HIDDEN;
3964
3966
3968{
3969 struct list entry;
3970 unsigned int idx;
3972};
3973
3975{
3976 unsigned int sampler;
3977 unsigned int constant_int;
3978 unsigned int constant_float;
3979 unsigned int constant_bool;
3980 unsigned int packed_output;
3981 unsigned int packed_input;
3982};
3983
3984#ifdef __GNUC__
3985#define PRINTF_ATTR(fmt,args) __attribute__((format (printf,fmt,args)))
3986#else
3987#define PRINTF_ATTR(fmt,args)
3988#endif
3989
3991{
3992 struct list list;
3993};
3994
4000
4004
4006{
4007 const DWORD *start;
4008 const DWORD *end;
4009 unsigned int instance_count;
4010 unsigned int temporary_count;
4011};
4012
4014{
4016};
4017
4019{
4020 struct
4021 {
4023 unsigned int fork_count;
4024 unsigned int join_count;
4029 } phases;
4033};
4034
4036{
4038};
4039
4041{
4044 unsigned int vertices_out;
4045 unsigned int instance_count;
4046
4048};
4049
4051{
4052 /* Pixel shader input semantics */
4053 DWORD input_reg_map[MAX_REG_INPUT];
4054 DWORD input_reg_used; /* MAX_REG_INPUT, 32 */
4055 unsigned int declared_in_count;
4056
4057 /* Some information about the shader behavior */
4060
4064};
4065
4067{
4069};
4070
4072{
4081
4082 void *parent;
4084
4085 /* Programs this shader is linked with */
4087
4088 /* Immediate constants (override global ones) */
4094
4099
4100 /* Pointer to the parent device */
4103
4104 union
4105 {
4112 } u;
4113};
4114
4116void find_ps_compile_args(const struct wined3d_state *state, const struct wined3d_shader *shader,
4117 BOOL position_transformed, struct ps_compile_args *args,
4119
4121 BYTE usage_req, BYTE usage_idx_req, unsigned int *regnum) DECLSPEC_HIDDEN;
4122void find_vs_compile_args(const struct wined3d_state *state, const struct wined3d_shader *shader,
4123 WORD swizzle_map, struct vs_compile_args *args,
4125
4126void find_ds_compile_args(const struct wined3d_state *state, const struct wined3d_shader *shader,
4128
4129void find_gs_compile_args(const struct wined3d_state *state, const struct wined3d_shader *shader,
4131
4135unsigned int shader_find_free_input_register(const struct wined3d_shader_reg_maps *reg_maps,
4136 unsigned int max) DECLSPEC_HIDDEN;
4138 const struct wined3d_shader_reg_maps *reg_maps, void *backend_ctx,
4139 const DWORD *start, const DWORD *end) DECLSPEC_HIDDEN;
4140BOOL shader_match_semantic(const char *semantic_name, enum wined3d_decl_usage usage) DECLSPEC_HIDDEN;
4141
4143{
4144 switch (reg->type)
4145 {
4146 case WINED3DSPR_RASTOUT:
4147 /* oFog & oPts */
4148 if (reg->idx[0].offset)
4149 return TRUE;
4150 /* oPos */
4151 return FALSE;
4152
4153 case WINED3DSPR_DEPTHOUT: /* oDepth */
4156 case WINED3DSPR_CONSTBOOL: /* b# */
4157 case WINED3DSPR_LOOP: /* aL */
4158 case WINED3DSPR_PREDICATE: /* p0 */
4159 case WINED3DSPR_PRIMID: /* primID */
4160 return TRUE;
4161
4163 switch (reg->idx[0].offset)
4164 {
4165 case 0: /* vPos */
4166 return FALSE;
4167 case 1: /* vFace */
4168 return TRUE;
4169 default:
4170 return FALSE;
4171 }
4172
4174 return reg->immconst_type == WINED3D_IMMCONST_SCALAR;
4175
4176 default:
4177 return FALSE;
4178 }
4179}
4180
4181static inline void shader_get_position_fixup(const struct wined3d_context *context,
4182 const struct wined3d_state *state, float *position_fixup)
4183{
4184 float center_offset;
4185
4186 if (context->d3d_info->wined3d_creation_flags & WINED3D_PIXEL_CENTER_INTEGER)
4187 center_offset = 63.0f / 64.0f;
4188 else
4189 center_offset = -1.0f / 64.0f;
4190
4191 position_fixup[0] = 1.0f;
4192 position_fixup[1] = 1.0f;
4193 position_fixup[2] = center_offset / state->viewport.width;
4194 position_fixup[3] = -center_offset / state->viewport.height;
4195
4196 if (context->render_offscreen)
4197 {
4198 position_fixup[1] *= -1.0f;
4199 position_fixup[3] *= -1.0f;
4200 }
4201}
4202
4204{
4205 struct wined3d_shader_lconst *lconst;
4206
4207 if (shader->load_local_constsF)
4208 return FALSE;
4209
4210 LIST_FOR_EACH_ENTRY(lconst, &shader->constantsF, struct wined3d_shader_lconst, entry)
4211 {
4212 if (lconst->idx == reg)
4213 return TRUE;
4214 }
4215
4216 return FALSE;
4217}
4218
4220void get_modelview_matrix(const struct wined3d_context *context, const struct wined3d_state *state,
4221 unsigned int index, struct wined3d_matrix *mat) DECLSPEC_HIDDEN;
4222void get_projection_matrix(const struct wined3d_context *context, const struct wined3d_state *state,
4224void get_texture_matrix(const struct wined3d_context *context, const struct wined3d_state *state,
4225 unsigned int tex, struct wined3d_matrix *mat) DECLSPEC_HIDDEN;
4226void get_pointsize_minmax(const struct wined3d_context *context, const struct wined3d_state *state,
4227 float *out_min, float *out_max) DECLSPEC_HIDDEN;
4228void get_pointsize(const struct wined3d_context *context, const struct wined3d_state *state,
4229 float *out_pointsize, float *out_att) DECLSPEC_HIDDEN;
4230void get_fog_start_end(const struct wined3d_context *context, const struct wined3d_state *state,
4231 float *start, float *end) DECLSPEC_HIDDEN;
4232
4233/* Using additional shader constants (uniforms in GLSL / program environment
4234 * or local parameters in ARB) is costly:
4235 * ARB only knows float4 parameters and GLSL compiler are not really smart
4236 * when it comes to efficiently pack float2 uniforms, so no space is wasted
4237 * (in fact most compilers map a float2 to a full float4 uniform).
4238 *
4239 * For NP2 texcoord fixup we only need 2 floats (width and height) for each
4240 * 2D texture used in the shader. We therefore pack fixup info for 2 textures
4241 * into a single shader constant (uniform / program parameter).
4242 *
4243 * This structure is shared between the GLSL and the ARB backend.*/
4245 unsigned char idx[MAX_FRAGMENT_SAMPLERS]; /* indices to the real constant */
4246 WORD active; /* bitfield indicating if we can apply the fixup */
4248};
4249
4250void print_glsl_info_log(const struct wined3d_gl_info *gl_info, GLuint id, BOOL program) DECLSPEC_HIDDEN;
4252
4254{
4257
4258 unsigned int size;
4259 RGBQUAD colors[256];
4261};
4262
4263/* DirectDraw utility functions */
4265
4266/*****************************************************************************
4267 * Pixel format management
4268 */
4269
4270/* WineD3D pixel format flags */
4271#define WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING 0x00000001
4272#define WINED3DFMT_FLAG_FILTERING 0x00000002
4273#define WINED3DFMT_FLAG_DEPTH 0x00000004
4274#define WINED3DFMT_FLAG_STENCIL 0x00000008
4275#define WINED3DFMT_FLAG_RENDERTARGET 0x00000010
4276#define WINED3DFMT_FLAG_EXTENSION 0x00000020
4277#define WINED3DFMT_FLAG_FBO_ATTACHABLE 0x00000040
4278#define WINED3DFMT_FLAG_FBO_ATTACHABLE_SRGB 0x00000080
4279#define WINED3DFMT_FLAG_FLOAT 0x00000200
4280#define WINED3DFMT_FLAG_BUMPMAP 0x00000400
4281#define WINED3DFMT_FLAG_SRGB_READ 0x00000800
4282#define WINED3DFMT_FLAG_SRGB_WRITE 0x00001000
4283#define WINED3DFMT_FLAG_VTF 0x00002000
4284#define WINED3DFMT_FLAG_SHADOW 0x00004000
4285#define WINED3DFMT_FLAG_COMPRESSED 0x00008000
4286#define WINED3DFMT_FLAG_BROKEN_PITCH 0x00010000
4287#define WINED3DFMT_FLAG_BLOCKS 0x00020000
4288#define WINED3DFMT_FLAG_HEIGHT_SCALE 0x00040000
4289#define WINED3DFMT_FLAG_TEXTURE 0x00080000
4290#define WINED3DFMT_FLAG_BLOCKS_NO_VERIFY 0x00100000
4291#define WINED3DFMT_FLAG_INTEGER 0x00200000
4292#define WINED3DFMT_FLAG_GEN_MIPMAP 0x00400000
4293
4295{
4298};
4299
4301{
4303 void (*convert)(const BYTE *src, unsigned int src_pitch, BYTE *dst, unsigned int dst_pitch, unsigned int width,
4304 unsigned int height, const struct wined3d_palette *palette, const struct wined3d_color_key *color_key);
4305};
4306
4308{
4310
4323
4327
4333 unsigned int attribute_size;
4334
4346 void (*upload)(const BYTE *src, BYTE *dst, unsigned int src_row_pitch, unsigned int src_slice_pitch,
4347 unsigned int dst_row_pitch, unsigned dst_slice_pitch,
4348 unsigned int width, unsigned int height, unsigned int depth);
4349 void (*download)(const BYTE *src, BYTE *dst, unsigned int src_row_pitch, unsigned int src_slice_pitch,
4350 unsigned int dst_row_pitch, unsigned dst_slice_pitch,
4351 unsigned int width, unsigned int height, unsigned int depth);
4352
4355};
4356
4357const struct wined3d_format *wined3d_get_format(const struct wined3d_gl_info *gl_info,
4358 enum wined3d_format_id format_id, unsigned int resource_usage) DECLSPEC_HIDDEN;
4359void wined3d_format_calculate_pitch(const struct wined3d_format *format, unsigned int alignment,
4360 unsigned int width, unsigned int height, unsigned int *row_pitch, unsigned int *slice_pitch) DECLSPEC_HIDDEN;
4364 const struct wined3d_color *color) DECLSPEC_HIDDEN;
4366 const struct wined3d_color_key *key, struct wined3d_color *float_colors) DECLSPEC_HIDDEN;
4368 enum wined3d_format_id view_format_id) DECLSPEC_HIDDEN;
4370 const struct wined3d_texture *texture, BOOL need_alpha_ck) DECLSPEC_HIDDEN;
4372 enum wined3d_format_id format2) DECLSPEC_HIDDEN;
4373
4375
4377{
4378 return format->id == format->typeless_id && format->id != WINED3DFMT_UNKNOWN;
4379}
4380
4381static inline BOOL use_indexed_vertex_blending(const struct wined3d_state *state, const struct wined3d_stream_info *si)
4382{
4383 if (!state->render_states[WINED3D_RS_INDEXEDVERTEXBLENDENABLE])
4384 return FALSE;
4385
4386 if (state->render_states[WINED3D_RS_VERTEXBLEND] == WINED3D_VBF_DISABLE)
4387 return FALSE;
4388
4389 if (!(si->use_map & (1 << WINED3D_FFP_BLENDINDICES)) || !(si->use_map & (1 << WINED3D_FFP_BLENDWEIGHT)))
4390 return FALSE;
4391
4392 return TRUE;
4393}
4394
4396{
4397 if (device->shader_backend != &glsl_shader_backend)
4398 return FALSE;
4399
4400 if (device->create_parms.flags & WINED3DCREATE_SOFTWARE_VERTEXPROCESSING)
4401 return TRUE;
4402
4403 if (!(device->create_parms.flags & WINED3DCREATE_MIXED_VERTEXPROCESSING))
4404 return FALSE;
4405
4406 return device->softwareVertexProcessing;
4407}
4408
4409static inline BOOL use_vs(const struct wined3d_state *state)
4410{
4411 /* Check state->vertex_declaration to allow this to be used before the
4412 * stream info is validated, for example in device_update_tex_unit_map(). */
4413 return state->shader[WINED3D_SHADER_TYPE_VERTEX]
4414 && (!state->vertex_declaration || !state->vertex_declaration->position_transformed);
4415}
4416
4417static inline BOOL use_ps(const struct wined3d_state *state)
4418{
4419 return !!state->shader[WINED3D_SHADER_TYPE_PIXEL];
4420}
4421
4423 const struct wined3d_state *state, DWORD state_id)
4424{
4425 const struct StateEntry *state_table = context->state_table;
4426 DWORD rep = state_table[state_id].representative;
4427 state_table[rep].apply(context, state, rep);
4428}
4429
4431 const struct wined3d_texture *texture)
4432{
4433 unsigned int flags = texture->resource.format_flags
4435
4436 return (!context->gl_info->supported[EXT_TEXTURE_SRGB_DECODE]
4438 && context->d3d_info->wined3d_creation_flags & WINED3D_SRGB_READ_WRITE_CONTROL;
4439}
4440
4441static inline BOOL needs_srgb_write(const struct wined3d_context *context,
4442 const struct wined3d_state *state, const struct wined3d_fb_state *fb)
4443{
4444 return (!(context->d3d_info->wined3d_creation_flags & WINED3D_SRGB_READ_WRITE_CONTROL)
4445 || state->render_states[WINED3D_RS_SRGBWRITEENABLE])
4446 && fb->render_targets[0] && fb->render_targets[0]->format_flags & WINED3DFMT_FLAG_SRGB_WRITE;
4447}
4448
4450 const struct wined3d_context *context, BOOL srgb)
4451{
4453 ? texture->texture_srgb.name : texture->texture_rgb.name;
4454}
4455
4456static inline BOOL can_use_texture_swizzle(const struct wined3d_gl_info *gl_info, const struct wined3d_format *format)
4457{
4458 return gl_info->supported[ARB_TEXTURE_SWIZZLE] && !is_complex_fixup(format->color_fixup)
4459 && !is_scaling_fixup(format->color_fixup);
4460}
4461
4463{
4464 /* In GLSL 4.40+ it is fine to specify interpolation qualifiers only in
4465 * fragment shaders. In older GLSL versions interpolation qualifiers must
4466 * match between shader stages.
4467 */
4468 return gl_info->glsl_version < MAKEDWORD_VERSION(4, 40);
4469}
4470
4471static inline BOOL is_rasterization_disabled(const struct wined3d_shader *geometry_shader)
4472{
4473 return geometry_shader
4474 && geometry_shader->u.gs.so_desc.rasterizer_stream_idx == WINED3D_NO_RASTERIZER_STREAM;
4475}
4476
4477static inline int wined3d_bit_scan(unsigned int *x)
4478{
4479 int bit_offset = ffs(*x) - 1;
4480 *x ^= 1u << bit_offset;
4481 return bit_offset;
4482}
4483
4485 unsigned int offset, unsigned int count)
4486{
4487 const unsigned int word_bit_count = sizeof(*bitstream) * CHAR_BIT;
4488 const unsigned int idx = offset / word_bit_count;
4489 const unsigned int shift = offset % word_bit_count;
4490 DWORD mask = (1u << count) - 1;
4491 DWORD ret;
4492
4493 ret = (bitstream[idx] >> shift) & mask;
4494 if (shift + count > word_bit_count)
4495 {
4496 const unsigned int extracted_bit_count = word_bit_count - shift;
4497 const unsigned int remaining_bit_count = count - extracted_bit_count;
4498 mask = (1u << remaining_bit_count) - 1;
4499 ret |= (bitstream[idx + 1] & mask) << extracted_bit_count;
4500 }
4501 return ret;
4502}
4503
4505 unsigned int offset, unsigned int count, DWORD bits)
4506{
4507 const unsigned int word_bit_count = sizeof(*bitstream) * CHAR_BIT;
4508 const unsigned int idx = offset / word_bit_count;
4509 const unsigned int shift = offset % word_bit_count;
4510 DWORD mask = (1u << count) - 1;
4511
4512 bitstream[idx] |= (bits & mask) << shift;
4513 if (shift + count > word_bit_count)
4514 {
4515 const unsigned int inserted_bit_count = word_bit_count - shift;
4516 const unsigned int remaining_bit_count = count - inserted_bit_count;
4517 mask = (1u << remaining_bit_count) - 1;
4518 bitstream[idx + 1] |= (bits >> inserted_bit_count) & mask;
4519 }
4520}
4521
4523{
4524 struct wined3d_texture *texture = context->current_rt.texture;
4525
4526 if (!texture)
4527 return NULL;
4528 return texture->sub_resources[context->current_rt.sub_resource_idx].u.surface;
4529}
4530
4531static inline void wined3d_from_cs(const struct wined3d_cs *cs)
4532{
4533 if (cs->thread)
4534 assert(cs->thread_id == GetCurrentThreadId());
4535}
4536
4537static inline void wined3d_not_from_cs(struct wined3d_cs *cs)
4538{
4539 assert(cs->thread_id != GetCurrentThreadId());
4540}
4541
4544
4545/* The WNDCLASS-Name for the fake window which we use to retrieve the GL capabilities */
4546#define WINED3D_OPENGL_WINDOW_CLASS_NAME "WineD3D_OpenGL"
4547
4548#endif
struct mke2fs_defaults settings[]
unsigned long long UINT64
signed long long INT64
@ lparam
Definition: SystemMenu.c:31
@ wparam
Definition: SystemMenu.c:30
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
char * va_list
Definition: acmsvcex.h:78
struct outqueuenode * tail
Definition: adnsresfilter.c:66
static int state
Definition: maze.c:121
const struct wined3d_shader_backend_ops arb_program_shader_backend
const struct fragment_pipeline arbfp_fragment_pipeline
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
const struct fragment_pipeline atifs_fragment_pipeline
Definition: list.h:37
Definition: _queue.h:67
enum _D3DDDIFORMAT D3DDDIFORMAT
#define CCHDEVICENAME
Definition: ddrawi.h:63
device_type
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static const struct @249 state_table[]
UINT op
Definition: effect.c:236
const struct wined3d_light WINED3D_default_light
Definition: device.c:41
const struct wined3d_shader_backend_ops none_shader_backend
Definition: shader.c:3245
const float wined3d_srgb_const0[]
Definition: shader.c:36
const float wined3d_srgb_const1[]
Definition: shader.c:38
const struct wined3d_vertex_pipe_ops none_vertex_pipe
Definition: state.c:5952
const struct wined3d_vertex_pipe_ops ffp_vertex_pipe
Definition: state.c:5850
const struct StateEntryTemplate misc_state_template[]
Definition: state.c:5100
const struct fragment_pipeline none_fragment_pipe
Definition: state.c:5977
const struct fragment_pipeline ffp_fragment_pipeline
Definition: state.c:5921
unsigned int idx
Definition: utils.c:41
static const WCHAR *const ext[]
Definition: module.c:53
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
#define CHAR_BIT
Definition: urlcache.c:62
#define assert(x)
Definition: debug.h:53
method
Definition: dragdrop.c:54
ULONG RGBQUAD
Definition: precomp.h:50
r parent
Definition: btrfs.c:3010
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
return adapter
GLuint start
Definition: gl.h:1545
unsigned int GLbitfield
Definition: gl.h:152
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
GLint level
Definition: gl.h:1546
float GLfloat
Definition: gl.h:161
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
const GLdouble * v
Definition: gl.h:2040
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
unsigned int GLenum
Definition: gl.h:150
GLdouble s
Definition: gl.h:2039
unsigned int GLuint
Definition: gl.h:159
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLuint GLuint end
Definition: gl.h:1545
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLint GLint internalformat
Definition: gl.h:1546
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
int GLsizei
Definition: gl.h:160
int GLint
Definition: gl.h:156
GLint GLint GLsizei width
Definition: gl.h:1546
unsigned char GLboolean
Definition: gl.h:151
GLsizeiptr size
Definition: glext.h:5919
GLenum func
Definition: glext.h:6028
GLdouble n
Definition: glext.h:7729
GLuint GLenum GLenum transform
Definition: glext.h:9407
GLenum GLuint texture
Definition: glext.h:6295
GLsizei stride
Definition: glext.h:5848
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB
Definition: glext.h:1237
GLint GLint GLint GLint GLint GLint GLint dstY1
Definition: glext.h:7005
GLint srcY0
Definition: glext.h:7005
GLuint * samplers
Definition: glext.h:7280
GLenum src
Definition: glext.h:6340
GLuint renderbuffer
Definition: glext.h:6989
GLsizei const GLint * locations
Definition: glext.h:10542
GLuint buffer
Definition: glext.h:5915
GLuint color
Definition: glext.h:6243
const GLuint * textures
Definition: glext.h:8098
#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB
Definition: glext.h:1232
GLuint GLuint GLuint GLuint arg1
Definition: glext.h:9513
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB
Definition: glext.h:1234
GLuint sampler
Definition: glext.h:7283
GLuint GLuint GLuint GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg3
Definition: glext.h:9515
GLuint shader
Definition: glext.h:6030
GLuint index
Definition: glext.h:6031
GLenum GLint GLuint mask
Definition: glext.h:6028
GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg2
Definition: glext.h:9514
GLuint program
Definition: glext.h:6723
GLenum pname
Definition: glext.h:5645
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB
Definition: glext.h:1235
GLint GLint GLint GLint GLint GLint dstX1
Definition: glext.h:7005
GLfloat f
Definition: glext.h:7540
const GLuint * shaders
Definition: glext.h:7538
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB
Definition: glext.h:1236
GLuint GLenum matrix
Definition: glext.h:9407
GLint GLint GLint GLint GLint dstY0
Definition: glext.h:7005
GLuint in
Definition: glext.h:9616
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
Definition: glext.h:10929
GLenum GLenum dst
Definition: glext.h:6340
GLint GLint GLint srcY1
Definition: glext.h:7005
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: glext.h:7005
GLbitfield flags
Definition: glext.h:7161
GLuint framebuffer
Definition: glext.h:6995
GLuint GLint GLboolean GLint GLenum access
Definition: glext.h:7866
GLenum GLenum textarget
Definition: glext.h:6999
GLfloat GLfloat p
Definition: glext.h:8902
GLboolean enable
Definition: glext.h:11120
GLenum GLuint GLint GLint layer
Definition: glext.h:7007
GLenum GLenum renderbuffertarget
Definition: glext.h:7002
GLenum attachment
Definition: glext.h:6295
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
struct __GLsync * GLsync
Definition: glext.h:5569
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB
Definition: glext.h:1233
GLint GLfloat GLint stencil
Definition: glext.h:6260
GLdouble GLdouble z
Definition: glext.h:5874
GLintptr offset
Definition: glext.h:5920
const GLfloat * m
Definition: glext.h:10848
GLenum target
Definition: glext.h:7315
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint GLenum GLenum GLenum GLint GLuint GLenum GLenum GLfloat GLenum GLfloat GLenum GLint const GLfloat GLenum GLint const GLushort GLint GLint GLsizei GLsizei GLenum GLsizei GLsizei GLenum GLenum const GLvoid GLenum plane
Definition: glfuncs.h:270
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum light
Definition: glfuncs.h:170
const struct wined3d_shader_backend_ops glsl_shader_backend
const struct fragment_pipeline glsl_fragment_pipe
const struct wined3d_vertex_pipe_ops glsl_vertex_pipe
static int reg
Definition: i386-dis.c:1290
#define cs
Definition: i386-dis.c:442
_Check_return_ float __cdecl powf(_In_ float b, _In_ float e)
Definition: math.h:232
#define InterlockedCompareExchange
Definition: interlocked.h:104
uint32_t entry
Definition: isohybrid.c:63
#define e
Definition: ke_i.h:82
#define resource
Definition: kernel32.h:9
#define location(file, line)
Definition: kmtest.h:18
static const WCHAR dc[]
#define error(str)
Definition: mkdosfs.c:1605
static const CLSID * objects[]
Definition: apphelp.c:112
static PVOID ptr
Definition: dispmode.c:27
HDC hdc
Definition: main.c:9
static HBITMAP
Definition: button.c:44
static HDC
Definition: imagelist.c:92
static IPrintDialogCallback callback
Definition: printdlg.c:326
static const WCHAR desc[]
Definition: protectdata.c:36
#define NAN
Definition: mesh.c:39
static const MAT2 mat
Definition: font.c:66
static HMODULE MODULEINFO DWORD cb
Definition: module.c:33
constants
Definition: resource.c:29
static IHTMLWindow2 * window
Definition: events.c:77
#define INFINITY
Definition: misc.c:36
static char * dest
Definition: rtl.c:135
static LARGE_INTEGER * frequency
Definition: time.c:106
static void stream_info(IStream *stream, HGLOBAL *hmem, int *size, int *pos)
static float(__cdecl *square_half_float)(float x
static HPALETTE palette
Definition: clipboard.c:1345
static UINT format_id
Definition: clipboard.c:1343
#define shift
Definition: input.c:1755
static BOOL clipped
Definition: input.c:1258
int convert
Definition: msacm.c:1374
int other
Definition: msacm.c:1376
unsigned int UINT
Definition: ndis.h:50
#define BOOL
Definition: nt_native.h:43
#define DWORD
Definition: nt_native.h:44
const struct fragment_pipeline nvts_fragment_pipeline
const struct fragment_pipeline nvrc_fragment_pipeline
static HGLRC(WINAPI *pwglCreateContextAttribsARB)(HDC hDC
static HANDLE proc()
Definition: pdb.c:34
long LONG
Definition: pedump.c:60
png_const_structrp png_const_inforp int * unit
Definition: png.h:2159
__asm__(".p2align 4, 0x90\n" ".seh_proc __seh2_global_filter_func\n" "__seh2_global_filter_func:\n" "\tpush %rbp\n" "\t.seh_pushreg %rbp\n" "\tsub $32, %rsp\n" "\t.seh_stackalloc 32\n" "\t.seh_endprologue\n" "\tmov %rdx, %rbp\n" "\tjmp *%rax\n" "__seh2_global_filter_func_exit:\n" "\t.p2align 4\n" "\tadd $32, %rsp\n" "\tpop %rbp\n" "\tret\n" "\t.seh_endproc")
static unsigned __int64 next
Definition: rand_nt.c:6
static FILE * out
Definition: regtests2xml.c:44
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
#define ffs
Definition: port.h:359
#define f2(x, y, z)
Definition: sha1.c:31
#define f1(x, y, z)
Definition: sha1.c:30
#define is_alpha(c)
Definition: main.cpp:20
#define finish()
Definition: seh0024.c:15
const struct wined3d_shader_frontend sm1_shader_frontend
Definition: shader_sm1.c:807
const struct wined3d_shader_frontend sm4_shader_frontend
Definition: shader_sm4.c:1748
& rect
Definition: startmenu.cpp:1413
enum wined3d_gl_extension extension
struct StateEntry content
APPLYSTATEFUNC apply
DWORD representative
Definition: match.c:390
Definition: palette.c:468
unsigned short x_source
unsigned short y_sign_fixup
unsigned short w_source
unsigned short x_sign_fixup
unsigned short z_sign_fixup
unsigned short y_source
unsigned short w_sign_fixup
unsigned short z_source
Definition: http.c:7252
Definition: devices.h:37
unsigned int render_offscreen
unsigned int padding
enum wined3d_tessellator_output_primitive tessellator_output_primitive
unsigned int output_count
enum wined3d_tessellator_partitioning tessellator_partitioning
unsigned int next_shader_type
DWORD rb_namespace
struct list entry
GLuint id
DWORD flags
DWORD rt_mask
struct wine_rb_entry entry
struct ffp_frag_settings settings
enum wined3d_ffp_ps_fog_mode fog
unsigned char alpha_test_func
unsigned char padding
unsigned char color_key_enabled
unsigned char texcoords_initialized
unsigned char flatshading
unsigned char pointsprite
unsigned char emul_clipplanes
unsigned char sRGB_write
Definition: fci.c:127
Definition: dsound.c:943
DWORD MaxSimultaneousTextures
DWORD MaxTextureBlendStages
const struct StateEntryTemplate * states
struct wined3d_sampler_desc sampler_desc
unsigned int base_level
unsigned int output_count
Definition: copy.c:22
Definition: parser.c:49
Definition: tftpd.h:60
Definition: name.c:39
enum wined3d_ffp_ps_fog_mode fog
enum vertexprocessing_mode vp_mode
unsigned int vs_version
unsigned int cs_version
DWORD vs_uniform_count
DWORD ps_uniform_count
unsigned int hs_version
unsigned int gs_version
unsigned int ps_version
unsigned int ds_version
Definition: ps.c:97
struct color_fixup_desc color_fixup
Definition: mesh.c:4558
enum view_type type
unsigned int next_shader_input_count
Definition: rbtree.h:36
struct wined3d_gl_info gl_info
struct wined3d_driver_info driver_info
const struct wined3d_shader_backend_ops * shader_backend
struct wined3d_d3d_info d3d_info
struct wined3d_pixel_format * cfgs
const struct fragment_pipeline * fragment_pipe
enum wined3d_format_id screen_format
unsigned int cfg_count
const struct wined3d_vertex_pipe_ops * vertex_pipe
struct wined3d_blend_state_desc desc
struct wined3d_device * device
const struct wined3d_parent_ops * parent_ops
struct wined3d_blitter * next
const struct wined3d_blitter_ops * ops
unsigned int bind_flags
struct wined3d_fence * fence
GLenum buffer_object_usage
enum wined3d_buffer_conversion_type * conversion_map
struct wined3d_map_range * maps
struct wined3d_resource resource
struct wined3d_buffer_desc desc
const struct wined3d_gl_info * gl_info
enum wined3d_format_id dst_format
struct wined3d_shader_thread_group_size thread_group_size
struct wined3d_device * device
const struct StateEntry * state_table
struct list fbo_list
DWORD update_shader_resource_bindings
unsigned int free_occlusion_query_count
union wined3d_gl_so_statistics_query * free_so_statistics_queries
DWORD transform_feedback_paused
struct wined3d_texture * texture
struct list pipeline_statistics_queries
const struct wined3d_gl_info * gl_info
SIZE_T free_so_statistics_query_size
enum fogsource fog_source
union wined3d_gl_fence_object * free_fences
struct list fbo_destroy_list
struct wined3d_swapchain * swapchain
unsigned int free_fence_count
unsigned int free_timestamp_query_count
DWORD update_compute_unordered_access_view_bindings
DWORD fixed_function_usage_map
unsigned int sub_resource_idx
unsigned int free_pipeline_statistics_query_count
const struct wined3d_d3d_info * d3d_info
GLuint * free_occlusion_queries
struct wined3d_stream_info stream_info
struct list occlusion_queries
struct fbo_entry * current_fbo
SIZE_T free_pipeline_statistics_query_size
unsigned int free_so_statistics_query_count
DWORD transform_feedback_active
struct list so_statistics_queries
unsigned int buffer_fence_count
DWORD update_compute_shader_resource_bindings
SIZE_T free_timestamp_query_size
struct list timestamp_queries
union wined3d_gl_pipeline_statistics_query * free_pipeline_statistics_queries
GLuint * free_timestamp_queries
DWORD update_unordered_access_view_bindings
SIZE_T free_occlusion_query_size
struct list fences
BOOL waiting_for_event
HMODULE wined3d_module
const struct wined3d_cs_ops * ops
struct wined3d_fb_state fb
struct wined3d_state state
struct wined3d_device * device
struct list query_poll_list
struct wined3d_d3d_limits limits
struct wined3d_ffp_attrib_ops ffp_attrib_ops
unsigned int vs_version
unsigned int ds_version
unsigned int ffp_textures
unsigned int gs_version
unsigned int varying_count
unsigned int ffp_vertex_blend_matrices
unsigned int ps_version
unsigned int cs_version
unsigned int ffp_blend_stages
unsigned int active_light_count
unsigned int hs_version
struct wined3d_device_parent * device_parent
struct wined3d_dummy_textures dummy_textures
struct wine_rb_tree samplers
unsigned char surface_alignment
struct wined3d_fb_state fb
const struct wined3d_shader_backend_ops * shader_backend
struct wined3d_state state
struct wined3d * wined3d
struct list shaders
struct wined3d_texture * cursor_texture
struct wined3d_blitter * blitter
struct wined3d_texture * logo_texture
struct list resources
struct wined3d_stateblock * recording
struct wined3d_context ** contexts
struct wined3d_sampler * null_sampler
struct wined3d_swapchain ** swapchains
struct wined3d_device_creation_parameters create_parms
struct wined3d_sampler * default_sampler
struct wined3d_cs * cs
struct wined3d_rendertarget_view * back_buffer_view
struct wined3d_state * update_state
struct wined3d_rendertarget_view * auto_depth_stencil_view
struct wined3d_adapter * adapter
struct wined3d_indirect_dispatch_parameters indirect
struct wined3d_direct_dispatch_parameters direct
enum wined3d_tessellator_domain tessellator_domain
struct wined3d_direct_draw_parameters direct
struct wined3d_indirect_draw_parameters indirect
enum wined3d_pci_vendor vendor
enum wined3d_pci_device device
const char * description
struct wined3d_fence fence
struct wined3d_query query
struct wined3d_rendertarget_view * depth_stencil
struct wined3d_rendertarget_view * render_targets[MAX_RENDER_TARGET_VIEWS]
GLboolean(WINE_GLAPI *glIsFramebuffer)(GLuint framebuffer)
GLint GLint GLint GLint dstX0
const GLuint * framebuffers
GLenum GLuint GLint level
void(WINE_GLAPI *glFramebufferTextureLayer)(GLenum target
void(WINE_GLAPI *glGetFramebufferAttachmentParameteriv)(GLenum target
GLenum(WINE_GLAPI *glCheckFramebufferStatus)(GLenum target)
void(WINE_GLAPI *glFramebufferTexture3D)(GLenum target
GLenum GLuint GLint GLint layer
GLenum GLenum GLuint GLint level
void(WINE_GLAPI *glFramebufferRenderbuffer)(GLenum target
void(WINE_GLAPI *glFramebufferTexture1D)(GLenum target
GLenum GLenum GLuint renderbuffer
GLenum GLint * params
GLenum GLsizei GLsizei height
void(WINE_GLAPI *glGenerateMipmap)(GLenum target)
void(WINE_GLAPI *glFramebufferTexture2D)(GLenum target
GLsizei GLenum GLsizei GLsizei height
GLenum GLenum GLint * params
const GLuint * renderbuffers
GLboolean(WINE_GLAPI *glIsRenderbuffer)(GLuint renderbuffer)
GLenum GLenum GLuint GLint GLint layer
union wined3d_gl_fence_object object
struct list entry
struct wined3d_context * context
wined3d_ffp_texcoord_func texcoord[WINED3D_FFP_EMIT_COUNT]
wined3d_ffp_attrib_func position[WINED3D_FFP_EMIT_COUNT]
wined3d_ffp_attrib_func normal[WINED3D_FFP_EMIT_COUNT]
wined3d_ffp_attrib_func specular[WINED3D_FFP_EMIT_COUNT]
wined3d_ffp_attrib_func diffuse[WINED3D_FFP_EMIT_COUNT]
struct wine_rb_entry entry
struct wined3d_ffp_vs_settings settings
struct wined3d_rational height_scale
enum wined3d_ffp_emit_idx emit_idx
GLboolean gl_normalized
enum wined3d_format_id id
unsigned int attribute_size
enum wined3d_format_id typeless_id
D3DDDIFORMAT ddi_format
struct color_fixup_desc color_fixup
struct wined3d_stream_output_desc so_desc
enum wined3d_primitive_type output_type
enum wined3d_primitive_type input_type
unsigned int format_count
HGLRC const GLint * attribs
BOOL supported[WINED3D_GL_EXT_COUNT]
struct opengl_funcs gl_ops
struct wined3d_gl_limits limits
struct wined3d_format * formats
struct wined3d_fbo_ops fbo_ops
unsigned int framebuffer_height
unsigned int graphics_samplers
unsigned int combined_samplers
unsigned int framebuffer_width
unsigned int texture_buffer_offset_alignment
struct wined3d_shader_phase * control_point
struct wined3d_shader_phase * fork
unsigned int output_vertex_count
enum wined3d_tessellator_output_primitive tessellator_output_primitive
enum wined3d_tessellator_partitioning tessellator_partitioning
struct wined3d_shader_phase * join
struct wined3d_buffer * buffer
struct wined3d_vec4 position
struct wined3d_light OriginalParms
struct wined3d_vec4 direction
struct wined3d_query query
struct wined3d_context * context
struct wined3d_device * device
unsigned int size
struct wined3d_query_data_pipeline_statistics statistics
union wined3d_gl_pipeline_statistics_query u
struct wined3d_context * context
unsigned int declared_in_count
enum wined3d_shader_register_type depth_output
const void * data
const struct wined3d_parent_ops * parent_ops
enum wined3d_query_state state
const struct wined3d_query_ops * query_ops
struct wined3d_device * device
enum wined3d_query_type type
struct list poll_list_entry
struct wined3d_device * device
struct wined3d_rasterizer_state_desc desc
const struct wined3d_parent_ops * parent_ops
UINT width
UINT height
struct list entry
GLuint id
struct wined3d_gl_view gl_view
struct wined3d_resource * resource
struct wined3d_view_desc desc
struct wined3d_resource * resource
struct wined3d_gl_view gl_view
const struct wined3d_parent_ops * parent_ops
const struct wined3d_format * format
const struct wined3d_parent_ops * parent_ops
enum wined3d_resource_type type
unsigned int format_flags
struct wined3d_device * device
unsigned int access
struct list resource_list_entry
enum wined3d_gl_resource_type gl_type
const struct wined3d_format * format
const struct wined3d_resource_ops * resource_ops
enum wined3d_multisample_type multisample_type
struct wined3d_sampler_desc desc
struct wine_rb_entry entry
const struct wined3d_parent_ops * parent_ops
struct wined3d_device * device
unsigned int max_sm_hs
unsigned int max_sm_vs
unsigned int cs_multithreaded
unsigned int multisample_textures
unsigned int max_sm_ps
unsigned int max_sm_cs
unsigned int max_sm_ds
unsigned int sample_count
unsigned int max_sm_gs
unsigned short pci_vendor_id
unsigned short pci_device_id
enum wined3d_decl_usage usage
const struct wined3d_shader_reg_maps * reg_maps
const struct wined3d_shader * shader
struct wined3d_string_buffer * buffer
struct wined3d_shader_parser_state * state
const struct wined3d_gl_info * gl_info
struct wined3d_shader_tex_mx * tex_mx
struct wined3d_shader_register reg
struct wined3d_shader_dst_param first_register
struct wined3d_shader_primitive_type primitive_type
struct wined3d_shader_tgsm_structured tgsm_structured
enum wined3d_tessellator_partitioning tessellator_partitioning
const struct wined3d_shader_src_param * src
struct wined3d_shader_semantic semantic
const struct wined3d_shader_dst_param * dst
struct wined3d_shader_function_table_pointer fp
const struct wined3d_shader_src_param * predicate
enum WINED3D_SHADER_INSTRUCTION_HANDLER handler_idx
struct wined3d_shader_indexable_temp indexable_temp
struct wined3d_shader_structured_resource structured_resource
struct wined3d_shader_src_param src
struct wined3d_shader_index_range index_range
enum wined3d_tessellator_output_primitive tessellator_output_primitive
enum wined3d_tessellator_domain tessellator_domain
struct wined3d_shader_tgsm_raw tgsm_raw
const struct wined3d_shader_context * ctx
const struct wined3d_shader_immediate_constant_buffer * icb
struct wined3d_shader_texel_offset texel_offset
struct wined3d_shader_thread_group_size thread_group_size
struct wined3d_shader_dst_param dst
struct wined3d_shader_register_semantic register_semantic
unsigned int instance_count
unsigned int temporary_count
enum wined3d_primitive_type type
struct wined3d_shader_version shader_version
struct wined3d_shader_tgsm * tgsm
const struct wined3d_shader_immediate_constant_buffer * icb
struct wined3d_shader_sampler_map sampler_map
const struct wined3d_shader_src_param * rel_addr
enum wined3d_shader_input_sysval_semantic sysval_semantic
struct wined3d_shader_dst_param reg
enum wined3d_shader_register_type type
enum wined3d_data_type data_type
enum wined3d_immconst_type immconst_type
enum wined3d_shader_resource_type type
enum wined3d_data_type data_type
struct wined3d_resource * resource
const struct wined3d_parent_ops * parent_ops
struct wined3d_gl_view gl_view
struct wined3d_view_desc desc
const struct wined3d_format * format
unsigned int sampler_idx
unsigned int bind_idx
unsigned int resource_idx
struct wined3d_shader_sampler_map_entry * entries
struct wined3d_shader_dst_param reg
enum wined3d_decl_usage usage
enum wined3d_data_type resource_data_type
enum wined3d_shader_resource_type resource_type
enum wined3d_shader_src_modifier modifiers
struct wined3d_shader_register reg
struct wined3d_shader_dst_param reg
struct wined3d_shader_dst_param reg
struct wined3d_shader_dst_param reg
enum wined3d_shader_type type
union wined3d_shader::@289 u
struct list constantsB
struct wined3d_shader_signature output_signature
struct wined3d_shader_signature patch_constant_signature
struct list constantsI
struct wined3d_domain_shader ds
struct list constantsF
struct wined3d_compute_shader cs
struct wined3d_shader_signature input_signature
const struct wined3d_parent_ops * parent_ops
struct wined3d_pixel_shader ps
struct wined3d_vertex_shader vs
const struct wined3d_shader_limits * limits
struct wined3d_shader_reg_maps reg_maps
const struct wined3d_shader_frontend * frontend
struct list shader_list_entry
struct wined3d_geometry_shader gs
struct list linked_programs
struct wined3d_device * device
struct wined3d_hull_shader hs
struct wined3d_query query
struct wined3d_query_data_so_statistics statistics
struct wined3d_context * context
union wined3d_gl_so_statistics_query u
enum wined3d_format_id index_format
struct wined3d_vertex_declaration * vertex_declaration
const struct wined3d_fb_state * fb
GLenum gl_primitive_type
struct wined3d_material material
struct wined3d_viewport viewport
struct wined3d_buffer * index_buffer
struct wined3d_blend_state * blend_state
struct wined3d_rasterizer_state * rasterizer_state
struct wined3d_query * predicate
unsigned int index_offset
unsigned int num_contained_sampler_states
struct wined3d_device * device
unsigned int num_contained_transform_states
unsigned int num_contained_vs_consts_i
unsigned int num_contained_vs_consts_b
unsigned int num_contained_ps_consts_f
unsigned int num_contained_vs_consts_f
unsigned int num_contained_tss_states
unsigned int num_contained_ps_consts_b
struct wined3d_state state
unsigned int num_contained_ps_consts_i
struct wined3d_saved_states changed
unsigned int num_contained_render_states
const struct wined3d_format * format
struct wined3d_bo_address data
struct wined3d_buffer * buffer
struct wined3d_buffer * buffer
struct list renderbuffers
unsigned int texture_layer
const struct wined3d_renderbuffer_entry * current_renderbuffer
struct wined3d_texture * container
unsigned int texture_level
struct wined3d_texture ** back_buffers
struct wined3d_swapchain_desc desc
struct wined3d_context ** context
struct wined3d_display_mode original_mode d3d_mode
const struct wined3d_format * ds_format
const struct wined3d_swapchain_ops * swapchain_ops
struct wined3d_palette * palette
unsigned int num_contexts
struct wined3d_texture * front_buffer
struct wined3d_gamma_ramp orig_gamma
const struct wined3d_parent_ops * parent_ops
struct wined3d_device * device
struct wined3d_color_key src_blt_color_key
struct wined3d_color_key dst_blt_color_key
struct wined3d_color_key src_overlay_color_key
struct wined3d_color_key dst_overlay_color_key
const struct wined3d_parent_ops * parent_ops
unsigned int sysmem_count
unsigned int pow2_height
unsigned int slice_pitch
struct gl_texture texture_rgb texture_srgb
unsigned int pow2_width
const struct wined3d_texture_ops * texture_ops
struct wined3d_swapchain * swapchain
unsigned int row_pitch
struct wined3d_resource resource
unsigned int download_count
struct wined3d_query query
struct wined3d_context * context
const struct wined3d_format * format
struct wined3d_view_desc desc
struct wined3d_gl_view gl_view
struct wined3d_resource * resource
const struct wined3d_parent_ops * parent_ops
const struct wined3d_format * format
enum wined3d_input_classification input_slot_class
struct wined3d_vertex_declaration_element * elements
struct wined3d_device * device
const struct wined3d_parent_ops * parent_ops
const struct StateEntryTemplate * vp_states
UINT adapter_count
#define max(a, b)
Definition: svc.c:63
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
Definition: synch.c:790
GLfixed fx
Definition: tritemp.h:484
ULONG_PTR SIZE_T
Definition: typedefs.h:80
int32_t INT
Definition: typedefs.h:58
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
Definition: pdh_main.c:94
long sgn(REAL x)
Definition: varray.cc:48
int ret
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
Definition: wdfdevice.h:3275
DWORD WINAPI GetCurrentThreadId(void)
Definition: thread.c:459
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
HICON HCURSOR
Definition: windef.h:299
#define HRESULT
Definition: msvc.h:7
#define WINAPI
Definition: msvc.h:6
const GLenum magLookup[]
Definition: directx.c:299
const struct min_lookup minMipLookup[]
Definition: directx.c:291
const struct wined3d_parent_ops wined3d_null_parent_ops
Definition: directx.c:6815
wined3d_multisample_type
Definition: wined3d.h:553
wined3d_decl_usage
Definition: wined3d.h:785
#define WINED3D_NO_RASTERIZER_STREAM
Definition: wined3d.h:1571
wined3d_render_state
Definition: wined3d.h:264
@ WINED3D_RS_VERTEXBLEND
Definition: wined3d.h:336
@ WINED3D_RS_SRCBLEND
Definition: wined3d.h:279
@ WINED3D_RS_SRGBWRITEENABLE
Definition: wined3d.h:377
@ WINED3D_RS_ALPHABLENDENABLE
Definition: wined3d.h:286
@ WINED3D_RS_DESTBLEND
Definition: wined3d.h:280
@ WINED3D_RS_SRCBLENDALPHA
Definition: wined3d.h:388
@ WINED3D_RS_DESTBLENDALPHA
Definition: wined3d.h:389
@ WINED3D_RS_INDEXEDVERTEXBLENDENABLE
Definition: wined3d.h:352
wined3d_primitive_type
Definition: wined3d.h:70
wined3d_decl_method
Definition: wined3d.h:774
#define WINED3DUSAGE_LEGACY_CUBEMAP
Definition: wined3d.h:917
wined3d_sampler_state
Definition: wined3d.h:535
#define WINED3D_MAX_STREAM_OUTPUT_BUFFERS
Definition: wined3d.h:1569
#define WINED3D_RESOURCE_ACCESS_GPU
Definition: wined3d.h:55
#define WINED3D_RESOURCE_ACCESS_CPU
Definition: wined3d.h:56
wined3d_resource_type
Definition: wined3d.h:696
@ WINED3D_RTYPE_TEXTURE_2D
Definition: wined3d.h:700
#define WINED3DCREATE_MIXED_VERTEXPROCESSING
Definition: wined3d.h:1013
wined3d_texture_filter_type
Definition: wined3d.h:684
@ WINED3D_TEXF_LINEAR
Definition: wined3d.h:687
wined3d_texture_stage_state
Definition: wined3d.h:574
wined3d_query_type
Definition: wined3d.h:705
#define WINED3D_HIGHEST_SAMPLER_STATE
Definition: wined3d.h:550
@ WINED3D_TADDRESS_MIRROR_ONCE
Definition: wined3d.h:643
@ WINED3D_TADDRESS_WRAP
Definition: wined3d.h:639
wined3d_format_id
Definition: wined3d.h:106
@ WINED3DFMT_UNKNOWN
Definition: wined3d.h:107
wined3d_texture_op
Definition: wined3d.h:608
wined3d_cmp_func
Definition: wined3d.h:451
@ WINED3D_CMP_ALWAYS
Definition: wined3d.h:459
@ WINED3D_VBF_DISABLE
Definition: wined3d.h:442
#define WINED3DCREATE_SOFTWARE_VERTEXPROCESSING
Definition: wined3d.h:1011
#define WINED3D_HIGHEST_TEXTURE_STATE
Definition: wined3d.h:595
wined3d_transform_state
Definition: wined3d.h:647
wined3d_device_type
Definition: wined3d.h:86
#define WINED3D_PIXEL_CENTER_INTEGER
Definition: wined3d.h:1322
#define WINED3D_SRGB_READ_WRITE_CONTROL
Definition: wined3d.h:1324
wined3d_input_classification
Definition: wined3d.h:1784
#define WINEHIGHEST_RENDER_STATE
Definition: wined3d.h:398
wined3d_gl_extension
Definition: wined3d_gl.h:36
@ EXT_TEXTURE_SRGB_DECODE
Definition: wined3d_gl.h:183
@ ARB_BLEND_FUNC_EXTENDED
Definition: wined3d_gl.h:46
@ ARB_TEXTURE_SWIZZLE
Definition: wined3d_gl.h:130
@ WINED3D_GL_EXT_COUNT
Definition: wined3d_gl.h:220
void find_gs_compile_args(const struct wined3d_state *state, const struct wined3d_shader *shader, struct gs_compile_args *args, const struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: shader.c:3771
static void shader_get_position_fixup(const struct wined3d_context *context, const struct wined3d_state *state, float *position_fixup)
void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const struct wined3d_vec4 *plane) DECLSPEC_HIDDEN
Definition: cs.c:1582
void dispatch_compute(struct wined3d_device *device, const struct wined3d_state *state, const struct wined3d_dispatch_parameters *dispatch_parameters) DECLSPEC_HIDDEN
Definition: context.c:4327
static BOOL needs_interpolation_qualifiers_for_shader_outputs(const struct wined3d_gl_info *gl_info)
void wined3d_cs_emit_dispatch_indirect(struct wined3d_cs *cs, struct wined3d_buffer *buffer, unsigned int offset) DECLSPEC_HIDDEN
Definition: cs.c:756
HRESULT compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_multistate_funcs, const struct wined3d_gl_info *gl_info, const struct wined3d_d3d_info *d3d_info, const struct wined3d_vertex_pipe_ops *vertex, const struct fragment_pipeline *fragment, const struct StateEntryTemplate *misc) DECLSPEC_HIDDEN
Definition: state.c:6142
void wined3d_gl_limits_get_uniform_block_range(const struct wined3d_gl_limits *gl_limits, enum wined3d_shader_type shader_type, unsigned int *base, unsigned int *count) DECLSPEC_HIDDEN
Definition: utils.c:6480
BOOL wined3d_resource_is_offscreen(struct wined3d_resource *resource) DECLSPEC_HIDDEN
Definition: resource.c:547
BOOL wined3d_dxtn_init(void) DECLSPEC_HIDDEN
Definition: dxtn.c:461
void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resource *resource) DECLSPEC_HIDDEN
Definition: cs.c:1978
static void context_apply_state(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
void state_pointsprite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:1661
void context_active_texture(struct wined3d_context *context, const struct wined3d_gl_info *gl_info, unsigned int unit) DECLSPEC_HIDDEN
Definition: context.c:2717
static BOOL use_indexed_vertex_blending(const struct wined3d_state *state, const struct wined3d_stream_info *si)
#define WINE_GLAPI
void wined3d_cs_emit_set_rasterizer_state(struct wined3d_cs *cs, struct wined3d_rasterizer_state *rasterizer_state) DECLSPEC_HIDDEN
Definition: cs.c:1476
static float float_24_to_32(DWORD in)
void wined3d_cs_emit_set_render_state(struct wined3d_cs *cs, enum wined3d_render_state state, DWORD value) DECLSPEC_HIDDEN
Definition: cs.c:1496
void wined3d_cs_emit_set_scissor_rect(struct wined3d_cs *cs, const RECT *rect) DECLSPEC_HIDDEN
Definition: cs.c:988
#define STATE_COMPUTE_COUNT
BOOL wined3d_adapter_init_format_info(struct wined3d_adapter *adapter, struct wined3d_caps_gl_ctx *ctx) DECLSPEC_HIDDEN
Definition: utils.c:3803
static BOOL wined3d_format_is_typeless(const struct wined3d_format *format)
const char * debug_d3dinput_classification(enum wined3d_input_classification classification) DECLSPEC_HIDDEN
Definition: utils.c:4315
projection_types
@ proj_none
@ proj_count3
@ proj_count4
void dump_color_fixup_desc(struct color_fixup_desc fixup) DECLSPEC_HIDDEN
Definition: utils.c:4851
void state_pointsprite_w(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:1648
static unsigned int wined3d_texture_get_level_height(const struct wined3d_texture *texture, unsigned int level)
void find_ps_compile_args(const struct wined3d_state *state, const struct wined3d_shader *shader, BOOL position_transformed, struct ps_compile_args *args, const struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: shader.c:3782
const char * debug_d3dusage(DWORD usage) DECLSPEC_HIDDEN
Definition: utils.c:4217
#define D3DCOLOR_B_G(dw)
#define MAX_SAMPLER_OBJECTS
struct wined3d_context * context_create(struct wined3d_swapchain *swapchain, struct wined3d_texture *target, const struct wined3d_format *ds_format) DECLSPEC_HIDDEN
Definition: context.c:1891
void wined3d_cs_emit_set_stream_source_freq(struct wined3d_cs *cs, UINT stream_idx, UINT frequency, UINT flags) DECLSPEC_HIDDEN
Definition: cs.c:1134
BOOL is_invalid_op(const struct wined3d_state *state, int stage, enum wined3d_texture_op op, DWORD arg1, DWORD arg2, DWORD arg3) DECLSPEC_HIDDEN
Definition: utils.c:4865
void wined3d_cs_emit_set_sampler(struct wined3d_cs *cs, enum wined3d_shader_type type, UINT sampler_idx, struct wined3d_sampler *sampler) DECLSPEC_HIDDEN
Definition: cs.c:1411
void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_material *material) DECLSPEC_HIDDEN
Definition: cs.c:1685
const char * debug_d3dresourcetype(enum wined3d_resource_type resource_type) DECLSPEC_HIDDEN
Definition: utils.c:4329
#define MAX_REG_OUTPUT
void wined3d_cs_init_object(struct wined3d_cs *cs, void(*callback)(void *object), void *object) DECLSPEC_HIDDEN
Definition: cs.c:1890
void wined3d_ffp_blitter_create(struct wined3d_blitter **next, const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN
Definition: surface.c:3170
int wined3d_ffp_frag_program_key_compare(const void *key, const struct wine_rb_entry *entry) DECLSPEC_HIDDEN
Definition: utils.c:6230
#define STATE_HIGHEST
void state_clipping(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:709
wined3d_push_constants
@ WINED3D_PUSH_CONSTANTS_PS_B
@ WINED3D_PUSH_CONSTANTS_VS_B
@ WINED3D_PUSH_CONSTANTS_VS_I
@ WINED3D_PUSH_CONSTANTS_PS_F
@ WINED3D_PUSH_CONSTANTS_PS_I
@ WINED3D_PUSH_CONSTANTS_VS_F
const char * wined3d_debug_location(DWORD location) DECLSPEC_HIDDEN
Definition: utils.c:6396
wined3d_shader_rel_op
@ WINED3D_SHADER_REL_OP_GT
@ WINED3D_SHADER_REL_OP_LE
@ WINED3D_SHADER_REL_OP_GE
@ WINED3D_SHADER_REL_OP_EQ
@ WINED3D_SHADER_REL_OP_LT
@ WINED3D_SHADER_REL_OP_NE
void get_projection_matrix(const struct wined3d_context *context, const struct wined3d_state *state, struct wined3d_matrix *mat) DECLSPEC_HIDDEN
Definition: utils.c:4908
const DWORD * context_get_tex_unit_mapping(const struct wined3d_context *context, const struct wined3d_shader_version *shader_version, unsigned int *base, unsigned int *count) DECLSPEC_HIDDEN
Definition: context.c:2334
void context_free_timestamp_query(struct wined3d_timestamp_query *query) DECLSPEC_HIDDEN
Definition: context.c:943
static BOOL is_scaling_fixup(struct color_fixup_desc fixup)
BOOL wined3d_texture_prepare_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN
Definition: texture.c:1605
void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined3d_texture *texture) DECLSPEC_HIDDEN
Definition: cs.c:1321
void state_fogcolor(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:1289
#define MAX_FRAGMENT_SAMPLERS
wined3d_data_type
@ WINED3D_DATA_UINT
@ WINED3D_DATA_INT
@ WINED3D_DATA_UAV
@ WINED3D_DATA_SAMPLER
@ WINED3D_DATA_SNORM
@ WINED3D_DATA_UNORM
@ WINED3D_DATA_RESOURCE
@ WINED3D_DATA_FLOAT
@ WINED3D_DATA_OPAQUE
wined3d_shader_interpolation_mode
@ WINED3DSIM_LINEAR_CENTROID
@ WINED3DSIM_LINEAR_NOPERSPECTIVE_SAMPLE
@ WINED3DSIM_LINEAR
@ WINED3DSIM_NONE
@ WINED3DSIM_LINEAR_NOPERSPECTIVE
@ WINED3DSIM_LINEAR_NOPERSPECTIVE_CENTROID
@ WINED3DSIM_LINEAR_SAMPLE
@ WINED3DSIM_CONSTANT
const struct wined3d_color_key_conversion * wined3d_format_get_color_key_conversion(const struct wined3d_texture *texture, BOOL need_alpha_ck) DECLSPEC_HIDDEN
Definition: utils.c:1046
void wined3d_cs_emit_set_stream_output(struct wined3d_cs *cs, UINT stream_idx, struct wined3d_buffer *buffer, UINT offset) DECLSPEC_HIDDEN
Definition: cs.c:1166
void string_buffer_list_init(struct wined3d_string_buffer_list *list) DECLSPEC_HIDDEN
Definition: shader.c:550
void wined3d_rendertarget_view_load_location(struct wined3d_rendertarget_view *view, struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN
Definition: view.c:466
#define MAX_VERTEX_SAMPLERS
void wined3d_cs_emit_set_blend_state(struct wined3d_cs *cs, struct wined3d_blend_state *state) DECLSPEC_HIDDEN
Definition: cs.c:1457
WINED3D_SHADER_INSTRUCTION_HANDLER
@ WINED3DSIH_DSX_COARSE
@ WINED3DSIH_DCL_TESSELLATOR_PARTITIONING
@ WINED3DSIH_MOVC
@ WINED3DSIH_ULT
@ WINED3DSIH_SINCOS
@ WINED3DSIH_DCL_TEMPS
@ WINED3DSIH_LIT
@ WINED3DSIH_DP4
@ WINED3DSIH_GATHER4_PO_C
@ WINED3DSIH_ATOMIC_XOR
@ WINED3DSIH_TEXDEPTH
@ WINED3DSIH_MUL
@ WINED3DSIH_DSX_FINE
@ WINED3DSIH_DCL_OUTPUT
@ WINED3DSIH_DCL_FUNCTION_TABLE
@ WINED3DSIH_DCL_INPUT_SIV
@ WINED3DSIH_M3x3
@ WINED3DSIH_CALLNZ
@ WINED3DSIH_IMM_ATOMIC_XOR
@ WINED3DSIH_TEXREG2RGB
@ WINED3DSIH_IEQ
@ WINED3DSIH_DCL_INPUT
@ WINED3DSIH_TEXLDL
@ WINED3DSIH_CONTINUE
@ WINED3DSIH_CONTINUEP
@ WINED3DSIH_DEFI
@ WINED3DSIH_FIRSTBIT_HI
@ WINED3DSIH_IADD
@ WINED3DSIH_ABS
@ WINED3DSIH_SAMPLE_B
@ WINED3DSIH_LRP
@ WINED3DSIH_DCL_CONSTANT_BUFFER
@ WINED3DSIH_ROUND_Z
@ WINED3DSIH_DST
@ WINED3DSIH_DCL_INTERFACE
@ WINED3DSIH_TEXREG2AR
@ WINED3DSIH_TEXM3x3PAD
@ WINED3DSIH_IMM_ATOMIC_IADD
@ WINED3DSIH_TEXREG2GB
@ WINED3DSIH_LOOP
@ WINED3DSIH_DSY_COARSE
@ WINED3DSIH_M3x4
@ WINED3DSIH_SAMPLE_LOD
@ WINED3DSIH_SYNC
@ WINED3DSIH_ISHL
@ WINED3DSIH_SWITCH
@ WINED3DSIH_SWAPC
@ WINED3DSIH_SUB
@ WINED3DSIH_RCP
@ WINED3DSIH_F16TOF32
@ WINED3DSIH_IMIN
@ WINED3DSIH_STORE_STRUCTURED
@ WINED3DSIH_NOP
@ WINED3DSIH_ENDIF
@ WINED3DSIH_IMM_ATOMIC_UMAX
@ WINED3DSIH_STORE_UAV_TYPED
@ WINED3DSIH_FTOI
@ WINED3DSIH_LD
@ WINED3DSIH_TEXM3x3TEX
@ WINED3DSIH_EXP
@ WINED3DSIH_ATOMIC_IMAX
@ WINED3DSIH_DEFAULT
@ WINED3DSIH_UMAX
@ WINED3DSIH_OR
@ WINED3DSIH_ROUND_PI
@ WINED3DSIH_SAMPLE_GRAD
@ WINED3DSIH_ATOMIC_AND
@ WINED3DSIH_TEXM3x3VSPEC
@ WINED3DSIH_DCL_INPUT_SGV
@ WINED3DSIH_IF
@ WINED3DSIH_ATOMIC_UMIN
@ WINED3DSIH_UMIN
@ WINED3DSIH_ATOMIC_OR
@ WINED3DSIH_DCL_INPUT_PS_SGV
@ WINED3DSIH_LD2DMS
@ WINED3DSIH_LOG
@ WINED3DSIH_TEXM3x2DEPTH
@ WINED3DSIH_SAMPLE
@ WINED3DSIH_MOV
@ WINED3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER
@ WINED3DSIH_HS_DECLS
@ WINED3DSIH_AND
@ WINED3DSIH_NRM
@ WINED3DSIH_DCL_THREAD_GROUP
@ WINED3DSIH_CRS
@ WINED3DSIH_UMUL
@ WINED3DSIH_DCL_OUTPUT_SIV
@ WINED3DSIH_DCL_INDEX_RANGE
@ WINED3DSIH_DCL_TESSELLATOR_OUTPUT_PRIMITIVE
@ WINED3DSIH_ATOMIC_CMP_STORE
@ WINED3DSIH_LD_RAW
@ WINED3DSIH_GATHER4
@ WINED3DSIH_TEXM3x3
@ WINED3DSIH_UTOF
@ WINED3DSIH_ELSE
@ WINED3DSIH_HS_CONTROL_POINT_PHASE
@ WINED3DSIH_DEFB
@ WINED3DSIH_LD_STRUCTURED
@ WINED3DSIH_ENDSWITCH
@ WINED3DSIH_ATOMIC_IADD
@ WINED3DSIH_RSQ
@ WINED3DSIH_SQRT
@ WINED3DSIH_IMM_ATOMIC_AND
@ WINED3DSIH_DP2ADD
@ WINED3DSIH_TEXM3x2TEX
@ WINED3DSIH_IMM_ATOMIC_CONSUME
@ WINED3DSIH_EQ
@ WINED3DSIH_IMM_ATOMIC_UMIN
@ WINED3DSIH_ADD
@ WINED3DSIH_HS_FORK_PHASE
@ WINED3DSIH_BREAK
@ WINED3DSIH_NOT
@ WINED3DSIH_XOR
@ WINED3DSIH_BFREV
@ WINED3DSIH_FRC
@ WINED3DSIH_SAMPLE_INFO
@ WINED3DSIH_DSX
@ WINED3DSIH_DCL
@ WINED3DSIH_COUNTBITS
@ WINED3DSIH_IMM_ATOMIC_CMP_EXCH
@ WINED3DSIH_DCL_VERTICES_OUT
@ WINED3DSIH_CALL
@ WINED3DSIH_HS_JOIN_PHASE
@ WINED3DSIH_USHR
@ WINED3DSIH_ENDREP
@ WINED3DSIH_F32TOF16
@ WINED3DSIH_EMIT
@ WINED3DSIH_BEM
@ WINED3DSIH_TEXDP3TEX
@ WINED3DSIH_TEXBEML
@ WINED3DSIH_ILT
@ WINED3DSIH_DCL_OUTPUT_TOPOLOGY
@ WINED3DSIH_DCL_HS_MAX_TESSFACTOR
@ WINED3DSIH_TEXM3x3SPEC
@ WINED3DSIH_BREAKC
@ WINED3DSIH_UBFE
@ WINED3DSIH_ATOMIC_IMIN
@ WINED3DSIH_SETP
@ WINED3DSIH_BREAKP
@ WINED3DSIH_BFI
@ WINED3DSIH_DCL_SAMPLER
@ WINED3DSIH_TEXBEM
@ WINED3DSIH_DCL_GS_INSTANCES
@ WINED3DSIH_DCL_TGSM_RAW
@ WINED3DSIH_M3x2
@ WINED3DSIH_DCL_UAV_TYPED
@ WINED3DSIH_MIN
@ WINED3DSIH_TEXLDD
@ WINED3DSIH_TABLE_SIZE
@ WINED3DSIH_GE
@ WINED3DSIH_SLT
@ WINED3DSIH_DP3
@ WINED3DSIH_CUT
@ WINED3DSIH_REP
@ WINED3DSIH_EMIT_STREAM
@ WINED3DSIH_SAMPLE_POS
@ WINED3DSIH_FTOU
@ WINED3DSIH_RET
@ WINED3DSIH_IMAX
@ WINED3DSIH_ITOF
@ WINED3DSIH_IGE
@ WINED3DSIH_IMM_ATOMIC_IMAX
@ WINED3DSIH_IFC
@ WINED3DSIH_SAMPLE_C_LZ
@ WINED3DSIH_LOD
@ WINED3DSIH_ENDLOOP
@ WINED3DSIH_DSY
@ WINED3DSIH_TEXDP3
@ WINED3DSIH_MOVA
@ WINED3DSIH_DCL_INPUT_PS
@ WINED3DSIH_GATHER4_C
@ WINED3DSIH_LD_UAV_TYPED
@ WINED3DSIH_INEG
@ WINED3DSIH_DEF
@ WINED3DSIH_GATHER4_PO
@ WINED3DSIH_DCL_UAV_STRUCTURED
@ WINED3DSIH_CMP
@ WINED3DSIH_LT
@ WINED3DSIH_DCL_HS_FORK_PHASE_INSTANCE_COUNT
@ WINED3DSIH_DCL_INPUT_CONTROL_POINT_COUNT
@ WINED3DSIH_DCL_GLOBAL_FLAGS
@ WINED3DSIH_TEXKILL
@ WINED3DSIH_POW
@ WINED3DSIH_CND
@ WINED3DSIH_UDIV
@ WINED3DSIH_EVAL_SAMPLE_INDEX
@ WINED3DSIH_ROUND_NI
@ WINED3DSIH_M4x3
@ WINED3DSIH_TEXM3x2PAD
@ WINED3DSIH_INE
@ WINED3DSIH_IBFE
@ WINED3DSIH_BUFINFO
@ WINED3DSIH_STORE_RAW
@ WINED3DSIH_IMM_ATOMIC_ALLOC
@ WINED3DSIH_IMM_ATOMIC_IMIN
@ WINED3DSIH_UGE
@ WINED3DSIH_MAD
@ WINED3DSIH_CUT_STREAM
@ WINED3DSIH_TEX
@ WINED3DSIH_DCL_TESSELLATOR_DOMAIN
@ WINED3DSIH_EXPP
@ WINED3DSIH_LABEL
@ WINED3DSIH_IMM_ATOMIC_EXCH
@ WINED3DSIH_FCALL
@ WINED3DSIH_CASE
@ WINED3DSIH_IMUL
@ WINED3DSIH_IMAD
@ WINED3DSIH_NE
@ WINED3DSIH_SGE
@ WINED3DSIH_FIRSTBIT_SHI
@ WINED3DSIH_RESINFO
@ WINED3DSIH_DCL_INPUT_PS_SIV
@ WINED3DSIH_DCL_TGSM_STRUCTURED
@ WINED3DSIH_FIRSTBIT_LO
@ WINED3DSIH_M4x4
@ WINED3DSIH_SAMPLE_C
@ WINED3DSIH_ROUND_NE
@ WINED3DSIH_DCL_UAV_RAW
@ WINED3DSIH_TEXM3x3DIFF
@ WINED3DSIH_DCL_FUNCTION_BODY
@ WINED3DSIH_SGN
@ WINED3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT
@ WINED3DSIH_LOGP
@ WINED3DSIH_IMM_ATOMIC_OR
@ WINED3DSIH_DCL_STREAM
@ WINED3DSIH_DIV
@ WINED3DSIH_TEXCOORD
@ WINED3DSIH_ATOMIC_UMAX
@ WINED3DSIH_DCL_INDEXABLE_TEMP
@ WINED3DSIH_DCL_RESOURCE_RAW
@ WINED3DSIH_MAX
@ WINED3DSIH_DCL_INPUT_PRIMITIVE
@ WINED3DSIH_RETP
@ WINED3DSIH_ISHR
@ WINED3DSIH_DCL_HS_JOIN_PHASE_INSTANCE_COUNT
@ WINED3DSIH_DP2
@ WINED3DSIH_PHASE
@ WINED3DSIH_DSY_FINE
@ WINED3DSIH_DCL_RESOURCE_STRUCTURED
void wined3d_cs_emit_clear_rendertarget_view(struct wined3d_cs *cs, struct wined3d_rendertarget_view *view, const RECT *rect, DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil) DECLSPEC_HIDDEN
Definition: cs.c:574
UINT64 adapter_adjust_memory(struct wined3d_adapter *adapter, INT64 amount) DECLSPEC_HIDDEN
Definition: directx.c:441
HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst_rect, struct wined3d_surface *src_surface, const RECT *src_rect, DWORD flags, const struct wined3d_blt_fx *blt_fx, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN
Definition: surface.c:3998
void tex_alphaop(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:3215
void context_apply_blit_state(struct wined3d_context *context, const struct wined3d_device *device) DECLSPEC_HIDDEN
Definition: context.c:2981
static struct color_fixup_desc create_complex_fixup_desc(enum complex_fixup complex_fixup)
void context_bind_bo(struct wined3d_context *context, GLenum binding, GLuint name) DECLSPEC_HIDDEN
Definition: context.c:2724
void context_copy_bo_address(struct wined3d_context *context, const struct wined3d_bo_address *dst, GLenum dst_binding, const struct wined3d_bo_address *src, GLenum src_binding, size_t size) DECLSPEC_HIDDEN
Definition: context.c:2846
void context_restore(struct wined3d_context *context, struct wined3d_surface *restore) DECLSPEC_HIDDEN
Definition: context.c:1606
static int wined3d_bit_scan(unsigned int *x)
#define WINED3D_MAX_CBS
wined3d_tessellator_output_primitive
@ WINED3D_TESSELLATOR_OUTPUT_POINT
@ WINED3D_TESSELLATOR_OUTPUT_TRIANGLE_CW
@ WINED3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW
@ WINED3D_TESSELLATOR_OUTPUT_LINE
#define IS_DUAL_SOURCE_BLEND(x)
const char * debug_d3dtop(enum wined3d_texture_op d3dtop) DECLSPEC_HIDDEN
Definition: utils.c:4589
void wined3d_check_gl_call(const struct wined3d_gl_info *gl_info, const char *file, unsigned int line, const char *name) DECLSPEC_HIDDEN
Definition: context.c:1807
wined3d_ffp_idx
@ WINED3D_FFP_TEXCOORD4
@ WINED3D_FFP_PSIZE
@ WINED3D_FFP_TEXCOORD3
@ WINED3D_FFP_SPECULAR
@ WINED3D_FFP_TEXCOORD7
@ WINED3D_FFP_TEXCOORD1
@ WINED3D_FFP_POSITION
@ WINED3D_FFP_NORMAL
@ WINED3D_FFP_TEXCOORD5
@ WINED3D_FFP_BLENDWEIGHT
@ WINED3D_FFP_TEXCOORD2
@ WINED3D_FFP_DIFFUSE
@ WINED3D_FFP_TEXCOORD6
@ WINED3D_FFP_BLENDINDICES
@ WINED3D_FFP_TEXCOORD0
@ WINED3D_FFP_ATTRIBS_COUNT
BOOL context_set_current(struct wined3d_context *ctx) DECLSPEC_HIDDEN
Definition: context.c:1512
BYTE * wined3d_buffer_load_sysmem(struct wined3d_buffer *buffer, struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: buffer.c:706
void clipplane(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:3836
void wined3d_texture_prepare_texture(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN
Definition: texture.c:1546
void wined3d_fbo_blitter_create(struct wined3d_blitter **next, const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN
Definition: surface.c:2734
static unsigned int wined3d_texture_get_level_pow2_height(const struct wined3d_texture *texture, unsigned int level)
void wined3d_cs_emit_reset_state(struct wined3d_cs *cs) DECLSPEC_HIDDEN
Definition: cs.c:1856
void swapchain_update_draw_bindings(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN
Definition: swapchain.c:1132
BOOL wined3d_texture_load_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN
Definition: texture.c:229
void wined3d_texture_set_swapchain(struct wined3d_texture *texture, struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN
Definition: texture.c:722
void device_invalidate_state(const struct wined3d_device *device, DWORD state) DECLSPEC_HIDDEN
Definition: device.c:5263
wined3d_shader_sync_flags
@ WINED3DSSF_THREAD_GROUP
@ WINED3DSSF_GROUP_SHARED_MEMORY
void resource_unload(struct wined3d_resource *resource) DECLSPEC_HIDDEN
Definition: resource.c:257
struct wined3d_context * context_acquire(const struct wined3d_device *device, struct wined3d_texture *texture, unsigned int sub_resource_idx) DECLSPEC_HIDDEN
Definition: context.c:4242
wined3d_shader_src_modifier
@ WINED3DSPSM_ABSNEG
@ WINED3DSPSM_X2NEG
@ WINED3DSPSM_BIAS
@ WINED3DSPSM_BIASNEG
@ WINED3DSPSM_COMP
@ WINED3DSPSM_ABS
@ WINED3DSPSM_NOT
@ WINED3DSPSM_SIGNNEG
@ WINED3DSPSM_DW
@ WINED3DSPSM_X2
@ WINED3DSPSM_SIGN
@ WINED3DSPSM_NONE
@ WINED3DSPSM_NEG
@ WINED3DSPSM_DZ
BOOL context_apply_clear_state(struct wined3d_context *context, const struct wined3d_state *state, UINT rt_count, const struct wined3d_fb_state *fb) DECLSPEC_HIDDEN
Definition: context.c:3047
#define MAX_CONSTANT_BUFFERS
void context_free_fence(struct wined3d_fence *fence) DECLSPEC_HIDDEN
Definition: context.c:904
void context_bind_texture(struct wined3d_context *context, GLenum target, GLuint name) DECLSPEC_HIDDEN
Definition: context.c:2734
static GLenum wined3d_gl_mag_filter(enum wined3d_texture_filter_type mag_filter)
static void wined3d_resource_acquire(struct wined3d_resource *resource)
void(WINE_GLAPI * wined3d_ffp_texcoord_func)(GLenum unit, const void *data)
void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buffer *buffer, enum wined3d_format_id format_id, unsigned int offset) DECLSPEC_HIDDEN
Definition: cs.c:1198
void context_alloc_fence(struct wined3d_context *context, struct wined3d_fence *fence) DECLSPEC_HIDDEN
Definition: context.c:863
wined3d_ffp_emit_idx
@ WINED3D_FFP_EMIT_D3DCOLOR
@ WINED3D_FFP_EMIT_FLOAT16_2
@ WINED3D_FFP_EMIT_UBYTE4N
@ WINED3D_FFP_EMIT_COUNT
@ WINED3D_FFP_EMIT_FLOAT2
@ WINED3D_FFP_EMIT_SHORT4N
@ WINED3D_FFP_EMIT_USHORT2N
@ WINED3D_FFP_EMIT_SHORT2N
@ WINED3D_FFP_EMIT_UBYTE4
@ WINED3D_FFP_EMIT_FLOAT4
@ WINED3D_FFP_EMIT_INVALID
@ WINED3D_FFP_EMIT_UDEC3
@ WINED3D_FFP_EMIT_DEC3N
@ WINED3D_FFP_EMIT_FLOAT3
@ WINED3D_FFP_EMIT_FLOAT16_4
@ WINED3D_FFP_EMIT_USHORT4N
@ WINED3D_FFP_EMIT_SHORT2
@ WINED3D_FFP_EMIT_SHORT4
@ WINED3D_FFP_EMIT_FLOAT1
void wined3d_buffer_load(struct wined3d_buffer *buffer, struct wined3d_context *context, const struct wined3d_state *state) DECLSPEC_HIDDEN
Definition: buffer.c:887
#define MAKEDWORD_VERSION(maj, min)
void transpose_matrix(struct wined3d_matrix *out, const struct wined3d_matrix *m) DECLSPEC_HIDDEN
Definition: utils.c:5705
void wined3d_format_get_float_color_key(const struct wined3d_format *format, const struct wined3d_color_key *key, struct wined3d_color *float_colors) DECLSPEC_HIDDEN
Definition: utils.c:5321
void context_check_fbo_status(const struct wined3d_context *context, GLenum target) DECLSPEC_HIDDEN
Definition: context.c:381
void wined3d_texture_apply_sampler_desc(struct wined3d_texture *texture, const struct wined3d_sampler_desc *sampler_desc, const struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: texture.c:896
wined3d_pci_vendor
@ HW_VENDOR_INTEL
@ HW_VENDOR_NVIDIA
@ HW_VENDOR_AMD
@ HW_VENDOR_SOFTWARE
@ HW_VENDOR_VMWARE
void wined3d_rendertarget_view_get_drawable_size(const struct wined3d_rendertarget_view *view, const struct wined3d_context *context, unsigned int *width, unsigned int *height) DECLSPEC_HIDDEN
Definition: view.c:404
static BOOL use_vs(const struct wined3d_state *state)
#define WINED3D_MAX_PS_CONSTS_F
void context_destroy(struct wined3d_device *device, struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: context.c:2290
void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined3d_pipeline pipeline, unsigned int view_idx, struct wined3d_unordered_access_view *view, unsigned int initial_count) DECLSPEC_HIDDEN
Definition: cs.c:1385
void wined3d_cs_emit_set_sampler_state(struct wined3d_cs *cs, UINT sampler_idx, enum wined3d_sampler_state state, DWORD value) DECLSPEC_HIDDEN
Definition: cs.c:1538
void wined3d_texture_bind_and_dirtify(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN
Definition: texture.c:868
static unsigned int wined3d_texture_get_level_width(const struct wined3d_texture *texture, unsigned int level)
LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL unicode, UINT message, WPARAM wparam, LPARAM lparam, WNDPROC proc) DECLSPEC_HIDDEN
Definition: device.c:5292
void surface_set_compatible_renderbuffer(struct wined3d_surface *surface, const struct wined3d_rendertarget_info *rt) DECLSPEC_HIDDEN
Definition: surface.c:981
#define WINED3DFMT_FLAG_SRGB_WRITE
void wined3d_texture_validate_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, DWORD location) DECLSPEC_HIDDEN
Definition: texture.c:135
void draw_primitive(struct wined3d_device *device, const struct wined3d_state *state, const struct wined3d_draw_parameters *draw_parameters) DECLSPEC_HIDDEN
Definition: context.c:4924
#define PRINTF_ATTR(fmt, args)
void context_free_occlusion_query(struct wined3d_occlusion_query *query) DECLSPEC_HIDDEN
Definition: context.c:844
const char * debug_ivec4(const struct wined3d_ivec4 *v) DECLSPEC_HIDDEN
Definition: utils.c:3956
#define HIGHEST_TRANSFORMSTATE
const char * debug_fboattachment(GLenum attachment) DECLSPEC_HIDDEN
Definition: utils.c:4745
void wined3d_state_enable_light(struct wined3d_state *state, const struct wined3d_d3d_info *d3d_info, struct wined3d_light_info *light_info, BOOL enable) DECLSPEC_HIDDEN
Definition: stateblock.c:582
void context_invalidate_compute_state(struct wined3d_context *context, DWORD state_id) DECLSPEC_HIDDEN
Definition: context.c:1642
static unsigned int surface_get_sub_resource_idx(const struct wined3d_surface *surface)
void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3d_vertex_declaration *declaration) DECLSPEC_HIDDEN
Definition: cs.c:1076
GLenum wined3d_texture_get_gl_buffer(const struct wined3d_texture *texture) DECLSPEC_HIDDEN
Definition: texture.c:51
void get_identity_matrix(struct wined3d_matrix *mat) DECLSPEC_HIDDEN
Definition: utils.c:4886
void wined3d_buffer_upload_data(struct wined3d_buffer *buffer, struct wined3d_context *context, const struct wined3d_box *box, const void *data) DECLSPEC_HIDDEN
Definition: buffer.c:1219
const char * debug_d3ddeclmethod(enum wined3d_decl_method method) DECLSPEC_HIDDEN
Definition: utils.c:4270
enum wined3d_fence_result wined3d_fence_wait(const struct wined3d_fence *fence, const struct wined3d_device *device) DECLSPEC_HIDDEN
Definition: query.c:169
void wined3d_buffer_invalidate_location(struct wined3d_buffer *buffer, DWORD location) DECLSPEC_HIDDEN
Definition: buffer.c:130
BOOL surface_load_location(struct wined3d_surface *surface, struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN
Definition: surface.c:2630
int wined3d_ffp_vertex_program_key_compare(const void *key, const struct wine_rb_entry *entry) DECLSPEC_HIDDEN
Definition: utils.c:6387
void device_resource_add(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN
Definition: device.c:5081
void wined3d_cs_destroy(struct wined3d_cs *cs) DECLSPEC_HIDDEN
Definition: cs.c:2885
#define MAX_STREAMS
wined3d_shader_dst_modifier
@ WINED3DSPDM_MSAMPCENTROID
@ WINED3DSPDM_PARTIALPRECISION
@ WINED3DSPDM_SATURATE
@ WINED3DSPDM_NONE
void print_glsl_info_log(const struct wined3d_gl_info *gl_info, GLuint id, BOOL program) DECLSPEC_HIDDEN
Definition: glsl_shader.c:459
#define WINED3D_MAX_VS_CONSTS_F
DWORD wined3d_buffer_get_memory(struct wined3d_buffer *buffer, struct wined3d_bo_address *data, DWORD locations) DECLSPEC_HIDDEN
Definition: buffer.c:713
void resource_cleanup(struct wined3d_resource *resource) DECLSPEC_HIDDEN
Definition: resource.c:237
#define MAX_REG_INPUT
void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *query, DWORD flags) DECLSPEC_HIDDEN
Definition: cs.c:1934
void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture *texture, WORD flags, const struct wined3d_color_key *color_key) DECLSPEC_HIDDEN
Definition: cs.c:1657
const char * debug_d3ddevicetype(enum wined3d_device_type device_type) DECLSPEC_HIDDEN
Definition: utils.c:4153
HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d, UINT adapter_idx, enum wined3d_device_type device_type, HWND focus_window, DWORD flags, BYTE surface_alignment, struct wined3d_device_parent *device_parent) DECLSPEC_HIDDEN
Definition: device.c:5195
static void wined3d_pause(void)
static enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup)
struct wined3d_context * context_reacquire(const struct wined3d_device *device, struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: context.c:4305
static BOOL wined3d_dualblend_enabled(const struct wined3d_state *state, const struct wined3d_gl_info *gl_info)
int shader_addline(struct wined3d_string_buffer *buffer, const char *fmt,...) PRINTF_ATTR(2
unsigned int wined3d_max_compat_varyings(const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN
Definition: utils.c:5744
BOOL invert_matrix_3d(struct wined3d_matrix *out, const struct wined3d_matrix *in) DECLSPEC_HIDDEN
Definition: utils.c:5431
void install_gl_compat_wrapper(struct wined3d_gl_info *gl_info, enum wined3d_gl_extension ext) DECLSPEC_HIDDEN
Definition: gl_compat.c:355
const char * wined3d_debug_resource_access(DWORD access) DECLSPEC_HIDDEN
Definition: utils.c:4200
static BOOL wined3d_shader_instruction_has_texel_offset(const struct wined3d_shader_instruction *ins)
void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, const struct wined3d_fb_state *fb, UINT rect_count, const RECT *rects, const RECT *draw_rect, DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil) DECLSPEC_HIDDEN
Definition: device.c:224
DWORD get_flexible_vertex_size(DWORD d3dvtVertexType) DECLSPEC_HIDDEN
Definition: utils.c:923
const char * debug_d3dformat(enum wined3d_format_id format_id) DECLSPEC_HIDDEN
Definition: utils.c:3980
void context_surface_update(struct wined3d_context *context, const struct wined3d_surface *surface) DECLSPEC_HIDDEN
Definition: context.c:1110
HRESULT wined3d_fence_create(struct wined3d_device *device, struct wined3d_fence **fence) DECLSPEC_HIDDEN
Definition: query.c:303
void context_resource_released(const struct wined3d_device *device, struct wined3d_resource *resource, enum wined3d_resource_type type) DECLSPEC_HIDDEN
Definition: context.c:1073
static struct wined3d_surface * wined3d_rendertarget_view_get_surface(const struct wined3d_rendertarget_view *view)
void wined3d_resource_free_sysmem(struct wined3d_resource *resource) DECLSPEC_HIDDEN
Definition: resource.c:504
BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource) DECLSPEC_HIDDEN
Definition: resource.c:487
void apply_pixelshader(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:3759
void wined3d_release_dc(HWND window, HDC dc) DECLSPEC_HIDDEN
Definition: utils.c:6444
BOOL wined3d_register_window(HWND window, struct wined3d_device *device) DECLSPEC_HIDDEN
Definition: wined3d_main.c:432
#define MAX_UNORDERED_ACCESS_VIEWS
void wined3d_resource_update_draw_binding(struct wined3d_resource *resource) DECLSPEC_HIDDEN
Definition: resource.c:568
void state_fog_fragpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:1131
static BOOL is_complex_fixup(struct color_fixup_desc fixup)
const char * debug_color(const struct wined3d_color *color) DECLSPEC_HIDDEN
Definition: utils.c:3948
void wined3d_cs_emit_clear_unordered_access_view_uint(struct wined3d_cs *cs, struct wined3d_unordered_access_view *view, const struct wined3d_uvec4 *clear_value) DECLSPEC_HIDDEN
Definition: cs.c:2381
void wined3d_rendertarget_view_invalidate_location(struct wined3d_rendertarget_view *view, DWORD location) DECLSPEC_HIDDEN
Definition: view.c:505
void wined3d_cs_emit_preload_resource(struct wined3d_cs *cs, struct wined3d_resource *resource) DECLSPEC_HIDDEN
Definition: cs.c:1956
fixup_channel_source
@ CHANNEL_SOURCE_COMPLEX1
@ CHANNEL_SOURCE_ONE
@ CHANNEL_SOURCE_W
@ CHANNEL_SOURCE_X
@ CHANNEL_SOURCE_ZERO
@ CHANNEL_SOURCE_Z
@ CHANNEL_SOURCE_Y
@ CHANNEL_SOURCE_COMPLEX0
void state_nop(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:173
BOOL string_buffer_resize(struct wined3d_string_buffer *buffer, int rc) DECLSPEC_HIDDEN
Definition: shader.c:446
void state_shademode(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:293
void pixelshader_update_resource_types(struct wined3d_shader *shader, WORD tex_types) DECLSPEC_HIDDEN
Definition: shader.c:4073
wined3d_shader_resource_type
@ WINED3D_SHADER_RESOURCE_BUFFER
@ WINED3D_SHADER_RESOURCE_TEXTURE_3D
@ WINED3D_SHADER_RESOURCE_TEXTURE_2D
@ WINED3D_SHADER_RESOURCE_TEXTURE_1DARRAY
@ WINED3D_SHADER_RESOURCE_TEXTURE_2DARRAY
@ WINED3D_SHADER_RESOURCE_NONE
@ WINED3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY
@ WINED3D_SHADER_RESOURCE_TEXTURE_2DMS
@ WINED3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY
@ WINED3D_SHADER_RESOURCE_TEXTURE_CUBE
@ WINED3D_SHADER_RESOURCE_TEXTURE_1D
void context_release(struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: context.c:1571
void string_buffer_list_cleanup(struct wined3d_string_buffer_list *list) DECLSPEC_HIDDEN
Definition: shader.c:555
void add_ffp_frag_shader(struct wine_rb_tree *shaders, struct ffp_frag_desc *desc) DECLSPEC_HIDDEN
Definition: utils.c:6083
void context_alloc_occlusion_query(struct wined3d_context *context, struct wined3d_occlusion_query *query) DECLSPEC_HIDDEN
Definition: context.c:816
static struct wined3d_texture_sub_resource * surface_get_sub_resource(struct wined3d_surface *surface)
void wined3d_cs_emit_set_texture_state(struct wined3d_cs *cs, UINT stage, enum wined3d_texture_stage_state state, DWORD value) DECLSPEC_HIDDEN
Definition: cs.c:1516
#define WINED3D_CS_QUEUE_SIZE
#define MAX_GL_FRAGMENT_SAMPLERS
static BOOL is_same_fixup(struct color_fixup_desc f1, struct color_fixup_desc f2)
@ tempreg
@ resultreg
const char * debug_d3dtexturestate(enum wined3d_texture_stage_state state) DECLSPEC_HIDDEN
Definition: utils.c:4559
static BOOL use_software_vertex_processing(const struct wined3d_device *device)
static enum wined3d_cmp_func wined3d_sanitize_cmp_func(enum wined3d_cmp_func func)
wined3d_shader_uav_flags
@ WINED3DSUF_ORDER_PRESERVING_COUNTER
@ WINED3DSUF_GLOBALLY_COHERENT
void context_unmap_bo_address(struct wined3d_context *context, const struct wined3d_bo_address *data, GLenum binding) DECLSPEC_HIDDEN
Definition: context.c:2831
void context_end_transform_feedback(struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: context.c:4127
struct wined3d_light_info * wined3d_state_get_light(const struct wined3d_state *state, unsigned int idx) DECLSPEC_HIDDEN
Definition: stateblock.c:567
BOOL invert_matrix(struct wined3d_matrix *out, const struct wined3d_matrix *m) DECLSPEC_HIDDEN
Definition: utils.c:5501
BOOL device_context_add(struct wined3d_device *device, struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: device.c:146
static float float_16_to_32(const unsigned short *in)
void wined3d_texture_upload_data(struct wined3d_texture *texture, unsigned int sub_resource_idx, const struct wined3d_context *context, const struct wined3d_box *box, const struct wined3d_const_bo_address *data, unsigned int row_pitch, unsigned int slice_pitch) DECLSPEC_HIDDEN
Definition: texture.c:1696
#define MAX_TEXTURES
void wined3d_texture_set_map_binding(struct wined3d_texture *texture, DWORD map_binding) DECLSPEC_HIDDEN
Definition: texture.c:468
GLenum wined3d_gl_compare_func(enum wined3d_cmp_func f) DECLSPEC_HIDDEN
Definition: state.c:348
#define WINED3DFMT_FLAG_SRGB_READ
fog_src_type
@ VS_FOG_COORD
@ VS_FOG_Z
static unsigned int wined3d_texture_get_level_pow2_width(const struct wined3d_texture *texture, unsigned int level)
DWORD context_get_tls_idx(void) DECLSPEC_HIDDEN
Definition: context.c:1497
const char * debug_d3dtexturefiltertype(enum wined3d_texture_filter_type filter_type) DECLSPEC_HIDDEN
Definition: utils.c:4539
wined3d_shader_input_sysval_semantic
@ WINED3D_SIV_VIEWPORT_ARRAY_INDEX
@ WINED3D_SIV_TRIANGLE_INNER_TESS_FACTOR
@ WINED3D_SIV_CULL_DISTANCE
@ WINED3D_SIV_QUAD_V0_TESS_FACTOR
@ WINED3D_SIV_POSITION
@ WINED3D_SIV_IS_FRONT_FACE
@ WINED3D_SIV_QUAD_V_INNER_TESS_FACTOR
@ WINED3D_SIV_TRIANGLE_U_TESS_FACTOR
@ WINED3D_SIV_INSTANCE_ID
@ WINED3D_SIV_TRIANGLE_W_TESS_FACTOR
@ WINED3D_SIV_RENDER_TARGET_ARRAY_INDEX
@ WINED3D_SIV_QUAD_U0_TESS_FACTOR
@ WINED3D_SIV_CLIP_DISTANCE
@ WINED3D_SIV_QUAD_U1_TESS_FACTOR
@ WINED3D_SIV_SAMPLE_INDEX
@ WINED3D_SIV_TRIANGLE_V_TESS_FACTOR
@ WINED3D_SIV_LINE_DETAIL_TESS_FACTOR
@ WINED3D_SIV_LINE_DENSITY_TESS_FACTOR
@ WINED3D_SIV_VERTEX_ID
@ WINED3D_SIV_QUAD_V1_TESS_FACTOR
@ WINED3D_SIV_PRIMITIVE_ID
@ WINED3D_SIV_QUAD_U_INNER_TESS_FACTOR
void wined3d_rendertarget_view_prepare_location(struct wined3d_rendertarget_view *view, struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN
Definition: view.c:446
void string_buffer_release(struct wined3d_string_buffer_list *list, struct wined3d_string_buffer *buffer) DECLSPEC_HIDDEN
Definition: shader.c:543
void get_modelview_matrix(const struct wined3d_context *context, const struct wined3d_state *state, unsigned int index, struct wined3d_matrix *mat) DECLSPEC_HIDDEN
Definition: utils.c:4899
void sampler_texdim(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: utils.c:6212
void get_pointsize(const struct wined3d_context *context, const struct wined3d_state *state, float *out_pointsize, float *out_att) DECLSPEC_HIDDEN
Definition: utils.c:5147
GLenum context_get_offscreen_gl_buffer(const struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: context.c:2954
void wined3d_ftoa(float value, char *s) DECLSPEC_HIDDEN
Definition: utils.c:6429
void device_resource_released(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN
Definition: device.c:5099
void context_state_drawbuf(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: context.c:3479
#define MAX_RENDER_TARGET_VIEWS
void wined3d_cs_destroy_object(struct wined3d_cs *cs, void(*callback)(void *object), void *object) DECLSPEC_HIDDEN
Definition: cs.c:1885
void wined3d_unordered_access_view_invalidate_location(struct wined3d_unordered_access_view *view, DWORD location) DECLSPEC_HIDDEN
Definition: view.c:998
BOOL wined3d_array_reserve(void **elements, SIZE_T *capacity, SIZE_T count, SIZE_T size) DECLSPEC_HIDDEN
Definition: utils.c:6526
static const struct color_fixup_desc COLOR_FIXUP_IDENTITY
static BOOL is_rasterization_disabled(const struct wined3d_shader *geometry_shader)
void wined3d_texture_load(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN
Definition: texture.c:1066
void(WINE_GLAPI * wined3d_ffp_attrib_func)(const void *data)
void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) DECLSPEC_HIDDEN
Definition: stateblock.c:290
static ULONG wined3d_resource_decref(struct wined3d_resource *resource)
static struct wined3d_surface * context_get_rt_surface(const struct wined3d_context *context)
#define MAX_ACTIVE_LIGHTS
HRESULT wined3d_init(struct wined3d *wined3d, DWORD flags) DECLSPEC_HIDDEN
Definition: directx.c:6820
struct wined3d_blitter * wined3d_cpu_blitter_create(void) DECLSPEC_HIDDEN
Definition: surface.c:3983
void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count, int base_vertex_idx, unsigned int start_idx, unsigned int index_count, unsigned int start_instance, unsigned int instance_count, BOOL indexed) DECLSPEC_HIDDEN
Definition: cs.c:873
const char * debug_box(const struct wined3d_box *box) DECLSPEC_HIDDEN
Definition: utils.c:3939
void context_free_pipeline_statistics_query(struct wined3d_pipeline_statistics_query *query) DECLSPEC_HIDDEN
Definition: context.c:1021
wined3d_tessellator_domain
@ WINED3D_TESSELLATOR_DOMAIN_TRIANGLE
@ WINED3D_TESSELLATOR_DOMAIN_QUAD
@ WINED3D_TESSELLATOR_DOMAIN_LINE
void wined3d_cs_emit_copy_uav_counter(struct wined3d_cs *cs, struct wined3d_buffer *dst_buffer, unsigned int offset, struct wined3d_unordered_access_view *uav) DECLSPEC_HIDDEN
Definition: cs.c:2410
const char * debug_d3dstate(DWORD state) DECLSPEC_HIDDEN
Definition: utils.c:4676
void wined3d_cs_emit_generate_mipmaps(struct wined3d_cs *cs, struct wined3d_shader_resource_view *view) DECLSPEC_HIDDEN
Definition: cs.c:2436
HGLRC context_create_wgl_attribs(const struct wined3d_gl_info *gl_info, HDC hdc, HGLRC share_ctx) DECLSPEC_HIDDEN
Definition: context.c:1857
void swapchain_destroy_contexts(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN
Definition: swapchain.c:1079
#define MAX_IMMEDIATE_CONSTANT_BUFFER_SIZE
static void wined3d_resource_release(struct wined3d_resource *resource)
static GLenum wined3d_texture_get_sub_resource_target(const struct wined3d_texture *texture, unsigned int sub_resource_idx)
void set_tex_op_nvrc(const struct wined3d_gl_info *gl_info, const struct wined3d_state *state, BOOL is_alpha, int stage, enum wined3d_texture_op op, DWORD arg1, DWORD arg2, DWORD arg3, INT texture_idx, DWORD dst) DECLSPEC_HIDDEN
const char * debug_shader_type(enum wined3d_shader_type shader_type) DECLSPEC_HIDDEN
Definition: utils.c:4658
void wined3d_texture_invalidate_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, DWORD location) DECLSPEC_HIDDEN
Definition: texture.c:159
enum wined3d_format_id pixelformat_for_depth(DWORD depth) DECLSPEC_HIDDEN
Definition: utils.c:5388
static void wined3d_color_from_d3dcolor(struct wined3d_color *wined3d_color, DWORD d3d_color)
void wined3d_arbfp_blitter_create(struct wined3d_blitter **next, const struct wined3d_device *device) DECLSPEC_HIDDEN
const struct wined3d_format * wined3d_get_format(const struct wined3d_gl_info *gl_info, enum wined3d_format_id format_id, unsigned int resource_usage) DECLSPEC_HIDDEN
Definition: utils.c:3831
fogsource
@ FOGSOURCE_VS
@ FOGSOURCE_COORD
@ FOGSOURCE_FFP
void context_alloc_timestamp_query(struct wined3d_context *context, struct wined3d_timestamp_query *query) DECLSPEC_HIDDEN
Definition: context.c:923
static BOOL wined3d_resource_access_is_managed(unsigned int access)
wined3d_pipeline
@ WINED3D_PIPELINE_COMPUTE
@ WINED3D_PIPELINE_COUNT
@ WINED3D_PIPELINE_GRAPHICS
HRESULT wined3d_texture_check_box_dimensions(const struct wined3d_texture *texture, unsigned int level, const struct wined3d_box *box) DECLSPEC_HIDDEN
Definition: texture.c:1128
BOOL shader_match_semantic(const char *semantic_name, enum wined3d_decl_usage usage) DECLSPEC_HIDDEN
Definition: shader.c:377
void wined3d_unordered_access_view_clear_uint(struct wined3d_unordered_access_view *view, const struct wined3d_uvec4 *clear_value, struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: view.c:1004
BOOL string_buffer_init(struct wined3d_string_buffer *buffer) DECLSPEC_HIDDEN
Definition: shader.c:428
const char * debug_fbostatus(GLenum status) DECLSPEC_HIDDEN
Definition: utils.c:4774
static BOOL is_identity_fixup(struct color_fixup_desc fixup)
BOOL wined3d_buffer_load_location(struct wined3d_buffer *buffer, struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN
Definition: buffer.c:641
static BOOL needs_srgb_write(const struct wined3d_context *context, const struct wined3d_state *state, const struct wined3d_fb_state *fb)
void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, unsigned int idx, BOOL enable) DECLSPEC_HIDDEN
Definition: cs.c:1766
void wined3d_stream_info_from_declaration(struct wined3d_stream_info *stream_info, const struct wined3d_state *state, const struct wined3d_gl_info *gl_info, const struct wined3d_d3d_info *d3d_info) DECLSPEC_HIDDEN
Definition: context.c:3523
void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_shader_type type, UINT cb_idx, struct wined3d_buffer *buffer) DECLSPEC_HIDDEN
Definition: cs.c:1228
static BOOL shader_is_scalar(const struct wined3d_shader_register *reg)
wined3d_gl_resource_type
@ WINED3D_GL_RES_TYPE_TEX_3D
@ WINED3D_GL_RES_TYPE_TEX_CUBE
@ WINED3D_GL_RES_TYPE_BUFFER
@ WINED3D_GL_RES_TYPE_TEX_2D
@ WINED3D_GL_RES_TYPE_RB
@ WINED3D_GL_RES_TYPE_TEX_RECT
@ WINED3D_GL_RES_TYPE_TEX_1D
@ WINED3D_GL_RES_TYPE_COUNT
void context_gl_resource_released(struct wined3d_device *device, GLuint name, BOOL rb_namespace) DECLSPEC_HIDDEN
Definition: context.c:1104
static void wined3d_insert_bits(DWORD *bitstream, unsigned int offset, unsigned int count, DWORD bits)
wined3d_shader_register_type
@ WINED3DSPR_CONSTBOOL
@ WINED3DSPR_RESOURCE
@ WINED3DSPR_COLOROUT
@ WINED3DSPR_LOOP
@ WINED3DSPR_CONST
@ WINED3DSPR_PRIMID
@ WINED3DSPR_LOCALTHREADID
@ WINED3DSPR_FUNCTIONPOINTER
@ WINED3DSPR_CONST3
@ WINED3DSPR_IMMCONST
@ WINED3DSPR_OUTPOINTID
@ WINED3DSPR_OUTCONTROLPOINT
@ WINED3DSPR_INCONTROLPOINT
@ WINED3DSPR_TESSCOORD
@ WINED3DSPR_NULL
@ WINED3DSPR_CONSTINT
@ WINED3DSPR_GSINSTID
@ WINED3DSPR_ATTROUT
@ WINED3DSPR_CONST4
@ WINED3DSPR_THREADGROUPID
@ WINED3DSPR_ADDR
@ WINED3DSPR_LABEL
@ WINED3DSPR_JOININSTID
@ WINED3DSPR_DEPTHOUTGE
@ WINED3DSPR_UAV
@ WINED3DSPR_SAMPLER
@ WINED3DSPR_CONSTBUFFER
@ WINED3DSPR_FUNCTIONBODY
@ WINED3DSPR_IDXTEMP
@ WINED3DSPR_RASTOUT
@ WINED3DSPR_CONST2
@ WINED3DSPR_STREAM
@ WINED3DSPR_PATCHCONST
@ WINED3DSPR_OUTPUT
@ WINED3DSPR_PREDICATE
@ WINED3DSPR_INPUT
@ WINED3DSPR_GROUPSHAREDMEM
@ WINED3DSPR_SAMPLEMASK
@ WINED3DSPR_TEMP
@ WINED3DSPR_DEPTHOUT
@ WINED3DSPR_TEXCRDOUT
@ WINED3DSPR_THREADID
@ WINED3DSPR_COVERAGE
@ WINED3DSPR_TEXTURE
@ WINED3DSPR_LOCALTHREADINDEX
@ WINED3DSPR_FORKINSTID
@ WINED3DSPR_TEMPFLOAT16
@ WINED3DSPR_DEPTHOUTLE
@ WINED3DSPR_MISCTYPE
@ WINED3DSPR_IMMCONSTBUFFER
void get_fog_start_end(const struct wined3d_context *context, const struct wined3d_state *state, float *start, float *end) DECLSPEC_HIDDEN
Definition: utils.c:5179
void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, struct wined3d_rendertarget_view *view) DECLSPEC_HIDDEN
Definition: cs.c:1057
BOOL wined3d_caps_gl_ctx_test_viewport_subpixel_bits(struct wined3d_caps_gl_ctx *ctx) DECLSPEC_HIDDEN
Definition: utils.c:3632
#define D3DCOLOR_B_R(dw)
void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_resource *dst_resource, unsigned int dst_sub_resource_idx, const struct wined3d_box *dst_box, struct wined3d_resource *src_resource, unsigned int src_sub_resource_idx, const struct wined3d_box *src_box, DWORD flags, const struct wined3d_blt_fx *fx, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN
Definition: cs.c:2172
void context_set_draw_buffer(struct wined3d_context *context, GLenum buffer) DECLSPEC_HIDDEN
Definition: context.c:2701
HDC swapchain_get_backup_dc(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN
Definition: swapchain.c:1107
void wined3d_unordered_access_view_set_counter(struct wined3d_unordered_access_view *view, unsigned int value) DECLSPEC_HIDDEN
Definition: view.c:1046
void context_enable_clip_distances(struct wined3d_context *context, unsigned int mask) DECLSPEC_HIDDEN
Definition: context.c:2414
void wined3d_sampler_bind(struct wined3d_sampler *sampler, unsigned int unit, struct wined3d_texture *texture, const struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: sampler.c:184
static BOOL needs_separate_srgb_gl_texture(const struct wined3d_context *context, const struct wined3d_texture *texture)
const char * debug_d3dtstype(enum wined3d_transform_state tstype) DECLSPEC_HIDDEN
Definition: utils.c:4627
void context_apply_fbo_state_blit(struct wined3d_context *context, GLenum target, struct wined3d_surface *render_target, struct wined3d_surface *depth_stencil, DWORD location) DECLSPEC_HIDDEN
Definition: context.c:802
void state_srgbwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:4988
void wined3d_unregister_window(HWND window) DECLSPEC_HIDDEN
Definition: wined3d_main.c:470
struct wined3d_cs * wined3d_cs_create(struct wined3d_device *device) DECLSPEC_HIDDEN
Definition: cs.c:2828
void wined3d_texture_bind(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN
Definition: texture.c:729
void wined3d_cs_emit_draw_indirect(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count, struct wined3d_buffer *buffer, unsigned int offset, BOOL indexed) DECLSPEC_HIDDEN
Definition: cs.c:898
void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) DECLSPEC_HIDDEN
Definition: cs.c:969
void context_set_tls_idx(DWORD idx) DECLSPEC_HIDDEN
Definition: context.c:1502
void wined3d_cs_emit_set_shader_resource_view(struct wined3d_cs *cs, enum wined3d_shader_type type, UINT view_idx, struct wined3d_shader_resource_view *view) DECLSPEC_HIDDEN
Definition: cs.c:1352
wined3d_immconst_type
@ WINED3D_IMMCONST_VEC4
@ WINED3D_IMMCONST_SCALAR
const char * debug_d3dprimitivetype(enum wined3d_primitive_type primitive_type) DECLSPEC_HIDDEN
Definition: utils.c:4346
const char * debug_glerror(GLenum error) DECLSPEC_HIDDEN
Definition: utils.c:4796
void wined3d_cs_emit_set_shader(struct wined3d_cs *cs, enum wined3d_shader_type type, struct wined3d_shader *shader) DECLSPEC_HIDDEN
Definition: cs.c:1437
BOOL wined3d_clip_blit(const RECT *clip_rect, RECT *clipped, RECT *other) DECLSPEC_HIDDEN
Definition: utils.c:6458
int shader_vaddline(struct wined3d_string_buffer *buffer, const char *fmt, va_list args) DECLSPEC_HIDDEN
Definition: shader.c:464
static BOOL shader_constant_is_local(const struct wined3d_shader *shader, DWORD reg)
void(* SHADER_HANDLER)(const struct wined3d_shader_instruction *)
struct wined3d_context * swapchain_get_context(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN
Definition: swapchain.c:1092
static DWORD wined3d_extract_bits(const DWORD *bitstream, unsigned int offset, unsigned int count)
#define WINED3D_MAX_CONSTS_B
const char * debug_uvec4(const struct wined3d_uvec4 *v) DECLSPEC_HIDDEN
Definition: utils.c:3964
GLenum gl_primitive_type_from_d3d(enum wined3d_primitive_type primitive_type) DECLSPEC_HIDDEN
Definition: device.c:58
wined3d_shader_global_flags
@ WINED3DSGF_REFACTORING_ALLOWED
@ WINED3DSGF_FORCE_EARLY_DEPTH_STENCIL
@ WINED3DSGF_ENABLE_RAW_AND_STRUCTURED_BUFFERS
void string_buffer_clear(struct wined3d_string_buffer *buffer) DECLSPEC_HIDDEN
Definition: shader.c:422
void wined3d_shader_resource_view_bind(struct wined3d_shader_resource_view *view, unsigned int unit, struct wined3d_sampler *sampler, struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: view.c:807
void multiply_matrix(struct wined3d_matrix *dest, const struct wined3d_matrix *src1, const struct wined3d_matrix *src2) DECLSPEC_HIDDEN
Definition: utils.c:5401
wined3d_buffer_conversion_type
@ CONV_NONE
@ CONV_POSITIONT
@ CONV_D3DCOLOR
static GLuint wined3d_texture_get_texture_name(const struct wined3d_texture *texture, const struct wined3d_context *context, BOOL srgb)
void wined3d_cs_emit_dispatch(struct wined3d_cs *cs, unsigned int group_count_x, unsigned int group_count_y, unsigned int group_count_z) DECLSPEC_HIDDEN
Definition: cs.c:738
wined3d_shader_type
@ WINED3D_SHADER_TYPE_HULL
@ WINED3D_SHADER_TYPE_PIXEL
@ WINED3D_SHADER_TYPE_GEOMETRY
@ WINED3D_SHADER_TYPE_GRAPHICS_COUNT
@ WINED3D_SHADER_TYPE_DOMAIN
@ WINED3D_SHADER_TYPE_COMPUTE
@ WINED3D_SHADER_TYPE_VERTEX
@ WINED3D_SHADER_TYPE_COUNT
static BOOL use_ps(const struct wined3d_state *state)
UINT wined3d_format_calculate_size(const struct wined3d_format *format, UINT alignment, UINT width, UINT height, UINT depth) DECLSPEC_HIDDEN
Definition: utils.c:3906
static GLenum wined3d_gl_min_mip_filter(enum wined3d_texture_filter_type min_filter, enum wined3d_texture_filter_type mip_filter)
void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int view_idx, struct wined3d_rendertarget_view *view) DECLSPEC_HIDDEN
Definition: cs.c:1007
static ULONG wined3d_resource_incref(struct wined3d_resource *resource)
wined3d_ffp_vs_fog_mode
@ WINED3D_FFP_VS_FOG_FOGCOORD
@ WINED3D_FFP_VS_FOG_OFF
@ WINED3D_FFP_VS_FOG_DEPTH
@ WINED3D_FFP_VS_FOG_RANGE
wined3d_query_state
@ QUERY_BUILDING
@ QUERY_SIGNALLED
@ QUERY_CREATED
void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform_state state, const struct wined3d_matrix *matrix) DECLSPEC_HIDDEN
Definition: cs.c:1561
static void wined3d_from_cs(const struct wined3d_cs *cs)
void shader_resource_view_generate_mipmaps(struct wined3d_shader_resource_view *view) DECLSPEC_HIDDEN
Definition: view.c:851
complex_fixup
@ COMPLEX_FIXUP_P8
@ COMPLEX_FIXUP_YUY2
@ COMPLEX_FIXUP_UYVY
@ COMPLEX_FIXUP_NV12
@ COMPLEX_FIXUP_YV12
@ COMPLEX_FIXUP_NONE
#define LIGHTMAP_SIZE
#define D3DCOLOR_B_A(dw)
void state_cleanup(struct wined3d_state *state) DECLSPEC_HIDDEN
Definition: stateblock.c:528
void get_texture_matrix(const struct wined3d_context *context, const struct wined3d_state *state, unsigned int tex, struct wined3d_matrix *mat) DECLSPEC_HIDDEN
Definition: utils.c:5096
void context_free_so_statistics_query(struct wined3d_so_statistics_query *query) DECLSPEC_HIDDEN
Definition: context.c:983
wined3d_tessellator_partitioning
@ WINED3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD
@ WINED3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN
@ WINED3D_TESSELLATOR_PARTITIONING_INTEGER
@ WINED3D_TESSELLATOR_PARTITIONING_POW2
void texture_activate_dimensions(const struct wined3d_texture *texture, const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN
Definition: utils.c:6097
void context_alloc_pipeline_statistics_query(struct wined3d_context *context, struct wined3d_pipeline_statistics_query *query) DECLSPEC_HIDDEN
Definition: context.c:1002
void wined3d_surface_upload_data(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info, const struct wined3d_format *format, const RECT *src_rect, UINT src_pitch, const POINT *dst_point, BOOL srgb, const struct wined3d_const_bo_address *data) DECLSPEC_HIDDEN
Definition: surface.c:779
#define WINED3D_MAX_CONSTS_I
const char * debug_d3dusagequery(DWORD usagequery) DECLSPEC_HIDDEN
Definition: utils.c:4249
#define D3DCOLOR_B_B(dw)
static struct gl_texture * wined3d_texture_get_gl_texture(struct wined3d_texture *texture, BOOL srgb)
void find_vs_compile_args(const struct wined3d_state *state, const struct wined3d_shader *shader, WORD swizzle_map, struct vs_compile_args *args, const struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: shader.c:3463
void wined3d_gl_limits_get_texture_unit_range(const struct wined3d_gl_limits *gl_limits, enum wined3d_shader_type shader_type, unsigned int *base, unsigned int *count) DECLSPEC_HIDDEN
Definition: utils.c:6498
#define MAX_SHADER_RESOURCE_VIEWS
wined3d_shader_tex_types
@ WINED3D_SHADER_TEX_3D
@ WINED3D_SHADER_TEX_2D
@ WINED3D_SHADER_TEX_CUBE
void wined3d_cs_emit_add_dirty_texture_region(struct wined3d_cs *cs, struct wined3d_texture *texture, unsigned int layer) DECLSPEC_HIDDEN
Definition: cs.c:2353
void wined3d_swapchain_activate(struct wined3d_swapchain *swapchain, BOOL activate) DECLSPEC_HIDDEN
Definition: swapchain.c:1149
wined3d_fence_result
@ WINED3D_FENCE_WRONG_THREAD
@ WINED3D_FENCE_OK
@ WINED3D_FENCE_WAITING
@ WINED3D_FENCE_ERROR
@ WINED3D_FENCE_NOT_STARTED
void context_invalidate_state(struct wined3d_context *context, DWORD state_id) DECLSPEC_HIDDEN
Definition: context.c:1652
void * context_map_bo_address(struct wined3d_context *context, const struct wined3d_bo_address *data, size_t size, GLenum binding, DWORD flags) DECLSPEC_HIDDEN
Definition: context.c:2802
HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device *device, enum wined3d_resource_type type, const struct wined3d_format *format, enum wined3d_multisample_type multisample_type, unsigned int multisample_quality, unsigned int usage, unsigned int access, unsigned int width, unsigned int height, unsigned int depth, unsigned int size, void *parent, const struct wined3d_parent_ops *parent_ops, const struct wined3d_resource_ops *resource_ops) DECLSPEC_HIDDEN
Definition: resource.c:59
void wined3d_cs_emit_set_predication(struct wined3d_cs *cs, struct wined3d_query *predicate, BOOL value) DECLSPEC_HIDDEN
Definition: cs.c:949
void wined3d_dxtn_free(void) DECLSPEC_HIDDEN
Definition: dxtn.c:515
#define WINED3D_PACKED_INTERPOLATION_SIZE
#define MAX_ATTRIBS
void wined3d_rendertarget_view_validate_location(struct wined3d_rendertarget_view *view, DWORD location) DECLSPEC_HIDDEN
Definition: view.c:486
void wined3d_cs_emit_set_light(struct wined3d_cs *cs, const struct wined3d_light_info *light) DECLSPEC_HIDDEN
Definition: cs.c:1733
wined3d_ffp_ps_fog_mode
@ WINED3D_FFP_PS_FOG_EXP
@ WINED3D_FFP_PS_FOG_OFF
@ WINED3D_FFP_PS_FOG_EXP2
@ WINED3D_FFP_PS_FOG_LINEAR
const char * debug_d3dsamplerstate(enum wined3d_sampler_state state) DECLSPEC_HIDDEN
Definition: utils.c:4514
#define MAX_CLIP_DISTANCES
vertexprocessing_mode
@ pretransformed
@ vertexshader
@ fixedfunction
#define MAX_COMBINED_SAMPLERS
void draw_textured_quad(struct wined3d_texture *texture, unsigned int sub_resource_idx, struct wined3d_context *context, const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN
Definition: surface.c:188
void wined3d_cs_emit_set_stream_source(struct wined3d_cs *cs, UINT stream_idx, struct wined3d_buffer *buffer, UINT offset, UINT stride) DECLSPEC_HIDDEN
Definition: cs.c:1107
static void wined3d_not_from_cs(struct wined3d_cs *cs)
BOOL vshader_get_input(const struct wined3d_shader *shader, BYTE usage_req, BYTE usage_idx_req, unsigned int *regnum) DECLSPEC_HIDDEN
Definition: shader.c:3510
void wined3d_unordered_access_view_copy_counter(struct wined3d_unordered_access_view *view, struct wined3d_buffer *buffer, unsigned int offset, struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: view.c:1063
BOOL wined3d_formats_are_srgb_variants(enum wined3d_format_id format1, enum wined3d_format_id format2) DECLSPEC_HIDDEN
Definition: utils.c:3922
void wined3d_texture_get_memory(struct wined3d_texture *texture, unsigned int sub_resource_idx, struct wined3d_bo_address *data, DWORD locations) DECLSPEC_HIDDEN
Definition: texture.c:285
void shader_glsl_validate_link(const struct wined3d_gl_info *gl_info, GLuint program) DECLSPEC_HIDDEN
Definition: glsl_shader.c:577
#define MAX_REG_TEXCRD
DWORD wined3d_format_convert_from_float(const struct wined3d_format *format, const struct wined3d_color *color) DECLSPEC_HIDDEN
Definition: utils.c:5227
void wined3d_raw_blitter_create(struct wined3d_blitter **next, const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN
Definition: surface.c:2871
void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_resource *resource, unsigned int sub_resource_idx, const struct wined3d_box *box, const void *data, unsigned int row_pitch, unsigned int slice_pitch) DECLSPEC_HIDDEN
Definition: cs.c:2260
void state_fogstartend(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:1115
void(* APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id)
const char * debug_d3dshaderinstructionhandler(enum WINED3D_SHADER_INSTRUCTION_HANDLER handler_idx) DECLSPEC_HIDDEN
Definition: shader.c:334
void find_ds_compile_args(const struct wined3d_state *state, const struct wined3d_shader *shader, struct ds_compile_args *args, const struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: shader.c:3748
void wined3d_fence_issue(struct wined3d_fence *fence, const struct wined3d_device *device) DECLSPEC_HIDDEN
Definition: query.c:244
const char * debug_d3drenderstate(enum wined3d_render_state state) DECLSPEC_HIDDEN
Definition: utils.c:4370
void surface_translate_drawable_coords(const struct wined3d_surface *surface, HWND window, RECT *rect) DECLSPEC_HIDDEN
Definition: surface.c:2164
wined3d_ffp_attrib_func specular_func_3ubv DECLSPEC_HIDDEN
BOOL wined3d_format_is_depth_view(enum wined3d_format_id resource_format_id, enum wined3d_format_id view_format_id) DECLSPEC_HIDDEN
Definition: utils.c:3863
unsigned int shader_find_free_input_register(const struct wined3d_shader_reg_maps *reg_maps, unsigned int max) DECLSPEC_HIDDEN
Definition: shader.c:1838
static void wined3d_resource_wait_idle(struct wined3d_resource *resource)
void string_buffer_sprintf(struct wined3d_string_buffer *buffer, const char *format,...) PRINTF_ATTR(2
void wined3d_ffp_get_vs_settings(const struct wined3d_context *context, const struct wined3d_state *state, struct wined3d_ffp_vs_settings *settings) DECLSPEC_HIDDEN
Definition: utils.c:6238
static BOOL isStateDirty(const struct wined3d_context *context, DWORD state)
void context_bind_dummy_textures(const struct wined3d_device *device, const struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: context.c:1764
void surface_load_fb_texture(struct wined3d_surface *surface, BOOL srgb, struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: surface.c:1710
void wined3d_cs_emit_flush(struct wined3d_cs *cs) DECLSPEC_HIDDEN
Definition: cs.c:930
void device_context_remove(struct wined3d_device *device, struct wined3d_context *context) DECLSPEC_HIDDEN
Definition: device.c:163
const char * debug_vec4(const struct wined3d_vec4 *v) DECLSPEC_HIDDEN
Definition: utils.c:3972
const char * debug_d3ddeclusage(enum wined3d_decl_usage usage) DECLSPEC_HIDDEN
Definition: utils.c:4289
void(WINE_GLAPI * wined3d_generic_attrib_func)(GLuint idx, const void *data)
struct wined3d_context * context_get_current(void) DECLSPEC_HIDDEN
Definition: context.c:1507
void state_unbind_resources(struct wined3d_state *state) DECLSPEC_HIDDEN
Definition: stateblock.c:429
void context_state_fb(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: context.c:3196
wined3d_cs_queue_id
@ WINED3D_CS_QUEUE_MAP
@ WINED3D_CS_QUEUE_COUNT
@ WINED3D_CS_QUEUE_DEFAULT
void state_fogdensity(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:1299
void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *rects, DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil) DECLSPEC_HIDDEN
Definition: cs.c:536
void gen_ffp_frag_op(const struct wined3d_context *context, const struct wined3d_state *state, struct ffp_frag_settings *settings, BOOL ignore_textype) DECLSPEC_HIDDEN
Definition: utils.c:5751
void string_buffer_free(struct wined3d_string_buffer *buffer) DECLSPEC_HIDDEN
Definition: shader.c:441
static BOOL can_use_texture_swizzle(const struct wined3d_gl_info *gl_info, const struct wined3d_format *format)
wined3d_pci_device
@ CARD_NVIDIA_GEFORCE_GTX780
@ CARD_INTEL_I5100_4
@ CARD_INTEL_I5100_3
@ CARD_NVIDIA_GEFORCE_GTX950M
@ CARD_INTEL_946GZ
@ CARD_NVIDIA_GEFORCE_GT325M
@ CARD_NVIDIA_GEFORCE_GTXTITANZ
@ CARD_INTEL_HD5500
@ CARD_AMD_RADEON_HD4800
@ CARD_NVIDIA_GEFORCE_GTX570
@ CARD_NVIDIA_GEFORCE_GTXTITAN
@ CARD_NVIDIA_GEFORCE_GTX560TI
@ CARD_NVIDIA_GEFORCE_GTX1080TI
@ CARD_INTEL_855GM
@ CARD_NVIDIA_GEFORCE_GTS250
@ CARD_AMD_RADEON_HD6400
@ CARD_AMD_RADEON_HD4700
@ CARD_INTEL_IP5200_2
@ CARD_NVIDIA_GEFORCE_6800
@ CARD_AMD_RADEON_HD5700
@ CARD_NVIDIA_GEFORCE_GT610
@ CARD_NVIDIA_GEFORCE_GT420
@ CARD_NVIDIA_GEFORCEFX_5600
@ CARD_INTEL_945G
@ CARD_INTEL_HWD
@ CARD_NVIDIA_GEFORCE_GTX1080
@ CARD_INTEL_945GME
@ CARD_AMD_RADEON_RX_460
@ CARD_NVIDIA_GEFORCE_9600GT
@ CARD_NVIDIA_GEFORCE_GT640M
@ CARD_AMD_RADEON_HD7800
@ CARD_NVIDIA_GEFORCE_940M
@ CARD_INTEL_915G
@ CARD_NVIDIA_GEFORCE_320M
@ CARD_INTEL_G41
@ CARD_NVIDIA_GEFORCE_GT650M
@ CARD_NVIDIA_GEFORCE_GTX460
@ CARD_INTEL_IP555
@ CARD_NVIDIA_GEFORCE_830M
@ CARD_AMD_RADEON_HD2900
@ CARD_NVIDIA_RIVA_128
@ CARD_INTEL_I555
@ CARD_NVIDIA_GEFORCE_7300
@ CARD_NVIDIA_GEFORCEFX_5200
@ CARD_NVIDIA_GEFORCE_GT330
@ CARD_NVIDIA_GEFORCE_7600
@ CARD_INTEL_IPP6300
@ CARD_NVIDIA_GEFORCE_GT320M
@ CARD_INTEL_PNVG
@ CARD_WINE
@ CARD_NVIDIA_GEFORCE_820M
@ CARD_NVIDIA_GEFORCE_GTX280
@ CARD_NVIDIA_GEFORCE_6600GT
@ CARD_NVIDIA_GEFORCE_GT425M
@ CARD_NVIDIA_GEFORCE_GTX275
@ CARD_AMD_RADEON_XPRESS_200M
@ CARD_NVIDIA_GEFORCE_GT440
@ CARD_NVIDIA_GEFORCE_7400
@ CARD_AMD_RADEON_HD5600
@ CARD_NVIDIA_GEFORCE_GTX560
@ CARD_INTEL_IVBD
@ CARD_NVIDIA_GEFORCE_GTX650TI
@ CARD_INTEL_SNBS
@ CARD_NVIDIA_GEFORCE_845M
@ CARD_AMD_RADEON_HD5400
@ CARD_NVIDIA_GEFORCE_840M
@ CARD_INTEL_915GM
@ CARD_AMD_RADEON_X1600
@ CARD_INTEL_945GM
@ CARD_NVIDIA_GEFORCE_8800GTX
@ CARD_NVIDIA_GEFORCE_9700MGT
@ CARD_INTEL_965Q
@ CARD_INTEL_965G
@ CARD_NVIDIA_GEFORCE_GT730
@ CARD_INTEL_PNVM
@ CARD_NVIDIA_GEFORCE_GTX580
@ CARD_NVIDIA_GEFORCE_GTX1060
@ CARD_INTEL_IVBM
@ CARD_NVIDIA_GEFORCE_GTX1070
@ CARD_NVIDIA_GEFORCE_GTX950
@ CARD_NVIDIA_GEFORCE_GTX690
@ CARD_NVIDIA_GEFORCE_GTX780TI
@ CARD_NVIDIA_GEFORCE_GTX770
@ CARD_NVIDIA_GEFORCE_GTX760
@ CARD_NVIDIA_GEFORCE_GTX880M
@ CARD_NVIDIA_GEFORCE4_TI4200
@ CARD_AMD_RADEON_HD4200M
@ CARD_INTEL_HD6000
@ CARD_NVIDIA_GEFORCE_GT430
@ CARD_NVIDIA_RIVA_TNT
@ CARD_NVIDIA_GEFORCE_GTX750TI
@ CARD_INTEL_I5100_2
@ CARD_INTEL_I540
@ CARD_NVIDIA_GEFORCE_8300GS
@ CARD_NVIDIA_GEFORCE_GTX465
@ CARD_INTEL_E7221G
@ CARD_INTEL_965GME
@ CARD_INTEL_IP580_2
@ CARD_AMD_RADEON_HD2600
@ CARD_INTEL_IP6200
@ CARD_NVIDIA_GEFORCE_GT240
@ CARD_NVIDIA_TITANX_PASCAL
@ CARD_AMD_RADEON_HD6550D
@ CARD_AMD_RADEON_HD4600
@ CARD_INTEL_HD520_1
@ CARD_NVIDIA_GEFORCE_GT520
@ CARD_INTEL_G33
@ CARD_INTEL_HD5600
@ CARD_NVIDIA_GEFORCE_GT730M
@ CARD_NVIDIA_GEFORCE_8800GTS
@ CARD_AMD_RADEON_HD6800
@ CARD_AMD_RADEON_HD3200
@ CARD_NVIDIA_GEFORCE_8400GS
@ CARD_AMD_RAGE_128PRO
@ CARD_NVIDIA_GEFORCE_8200
@ CARD_VMWARE_SVGA3D
@ CARD_AMD_RADEON_HD6600M
@ CARD_AMD_RADEON_HD7900
@ CARD_INTEL_HD5000
@ CARD_INTEL_845G
@ CARD_INTEL_HD510_2
@ CARD_AMD_RADEON_HD3850
@ CARD_AMD_RADEON_HD6600
@ CARD_INTEL_I5100_1
@ CARD_INTEL_ILKD
@ CARD_NVIDIA_GEFORCE_GTX480
@ CARD_INTEL_HD515
@ CARD_NVIDIA_GEFORCE_GTX550
@ CARD_NVIDIA_GEFORCE_9400M
@ CARD_NVIDIA_GEFORCE_GTX960
@ CARD_AMD_RADEON_9500
@ CARD_NVIDIA_GEFORCE_GTX680
@ CARD_INTEL_Q45
@ CARD_AMD_RADEON_HD8670
@ CARD_NVIDIA_GEFORCE2
@ CARD_NVIDIA_GEFORCE_8600MGT
@ CARD_INTEL_Q33
@ CARD_NVIDIA_GEFORCE_GTX650
@ CARD_NVIDIA_GEFORCE_GT555M
@ CARD_NVIDIA_GEFORCE_GTS350M
@ CARD_AMD_RADEON_HD7660D
@ CARD_NVIDIA_GEFORCE_GTX870M
@ CARD_NVIDIA_GEFORCE_9400GT
@ CARD_NVIDIA_GEFORCE_GTX850M
@ CARD_NVIDIA_GEFORCE_7800GT
@ CARD_INTEL_Q35
@ CARD_NVIDIA_GEFORCE
@ CARD_NVIDIA_GEFORCE_GTX670
@ CARD_AMD_RADEON_R9_290
@ CARD_NVIDIA_GEFORCE_GTX765M
@ CARD_AMD_RADEON_HD5900
@ CARD_INTEL_G45
@ CARD_AMD_RADEON_R9_FURY
@ CARD_INTEL_IVBS
@ CARD_INTEL_865G
@ CARD_INTEL_IP5200_5
@ CARD_NVIDIA_GEFORCE_210
@ CARD_INTEL_IPP580_1
@ CARD_NVIDIA_GEFORCE_GTX660M
@ CARD_INTEL_HD510_3
@ CARD_NVIDIA_GEFORCE_GTX460M
@ CARD_AMD_RADEON_HD6700
@ CARD_NVIDIA_GEFORCE_9800GT
@ CARD_INTEL_IGD
@ CARD_INTEL_965GM
@ CARD_AMD_RADEON_X700
@ CARD_AMD_RADEON_7200
@ CARD_AMD_RADEON_HD6900
@ CARD_INTEL_I6100
@ CARD_NVIDIA_GEFORCE_6200
@ CARD_INTEL_I550
@ CARD_INTEL_IP580_1
@ CARD_INTEL_SNBD
@ CARD_AMD_RADEON_R7
@ CARD_AMD_RADEON_8500
@ CARD_INTEL_IP5200_1
@ CARD_NVIDIA_GEFORCE_9300
@ CARD_NVIDIA_GEFORCE_GT525M
@ CARD_NVIDIA_GEFORCE_GTX760TI
@ CARD_INTEL_GM45
@ CARD_NVIDIA_GEFORCE_GTX260
@ CARD_NVIDIA_GEFORCE_GTX980
@ CARD_NVIDIA_GEFORCE_8600GT
@ CARD_NVIDIA_GEFORCE_GTX970M
@ CARD_NVIDIA_GEFORCE_GTX560M
@ CARD_NVIDIA_GEFORCE_315M
@ CARD_NVIDIA_GEFORCE_GT630
@ CARD_NVIDIA_GEFORCE_GT220
@ CARD_AMD_RADEON_HD7700
@ CARD_NVIDIA_GEFORCE_GTX750
@ CARD_INTEL_HDP530
@ CARD_NVIDIA_RIVA_TNT2
@ CARD_NVIDIA_GEFORCE_GTX770M
@ CARD_NVIDIA_GEFORCE_GTXTITANX
@ CARD_AMD_RADEON_HD5800
@ CARD_INTEL_HD530_2
@ CARD_NVIDIA_GEFORCEFX_5800
@ CARD_AMD_RADEON_HD2350
@ CARD_AMD_RADEON_R9_285
@ CARD_NVIDIA_GEFORCE_GTX1050
@ CARD_AMD_RADEON_HD8600M
@ CARD_NVIDIA_GEFORCE3
@ CARD_INTEL_HD520_2
@ CARD_NVIDIA_GEFORCE_GTXTITANB
@ CARD_NVIDIA_GEFORCE4_MX
@ CARD_NVIDIA_GEFORCE_GTX960M
@ CARD_AMD_RADEON_R3
@ CARD_NVIDIA_GEFORCE_GTX970
@ CARD_AMD_RADEON_HD6300
@ CARD_NVIDIA_GEFORCE_GT630M
@ CARD_INTEL_SNBM
@ CARD_NVIDIA_GEFORCE_GT740M
@ CARD_NVIDIA_GEFORCE_GTX675MX
@ CARD_AMD_RADEON_HD8770
@ CARD_INTEL_HD510_1
@ CARD_INTEL_830M
@ CARD_NVIDIA_GEFORCE_GT540M
@ CARD_NVIDIA_GEFORCE_GTX660
@ CARD_INTEL_IPP580_2
@ CARD_INTEL_IP5200_4
@ CARD_AMD_RADEON_RX_480
@ CARD_INTEL_HD530_1
@ CARD_INTEL_IP5200_3
@ CARD_INTEL_HD5300
@ CARD_NVIDIA_GEFORCE2_MX
@ CARD_INTEL_ILKM
@ CARD_NVIDIA_GEFORCE_GTX470
@ CARD_NVIDIA_GEFORCE_8500GT
@ CARD_NVIDIA_GEFORCE_GTX980TI
@ CARD_NVIDIA_GEFORCE_410M
@ CARD_NVIDIA_GEFORCE_GTS450
@ CARD_NVIDIA_GEFORCE_GT750M
@ CARD_AMD_RADEON_HD6480G
@ CARD_NVIDIA_GEFORCE_GTX660TI
@ CARD_INTEL_HWM
@ CARD_NVIDIA_GEFORCE_9500GT
@ CARD_NVIDIA_GEFORCE_GTX670MX
@ CARD_NVIDIA_GEFORCE_GTX860M
@ CARD_AMD_RADEON_HD4350
@ CARD_INTEL_B43
@ CARD_NVIDIA_GEFORCE_9200
@ CARD_AMD_RADEON_HD6410D
GLbitfield wined3d_resource_gl_map_flags(DWORD d3d_flags) DECLSPEC_HIDDEN
Definition: resource.c:515
GLenum wined3d_resource_gl_legacy_map_flags(DWORD d3d_flags) DECLSPEC_HIDDEN
Definition: resource.c:532
void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *swapchain, const RECT *src_rect, const RECT *dst_rect, HWND dst_window_override, DWORD swap_interval, DWORD flags) DECLSPEC_HIDDEN
Definition: cs.c:477
void wined3d_buffer_copy(struct wined3d_buffer *dst_buffer, unsigned int dst_offset, struct wined3d_buffer *src_buffer, unsigned int src_offset, unsigned int size) DECLSPEC_HIDDEN
Definition: buffer.c:1195
static struct color_fixup_desc create_color_fixup_desc(int sign0, enum fixup_channel_source src0, int sign1, enum fixup_channel_source src1, int sign2, enum fixup_channel_source src2, int sign3, enum fixup_channel_source src3)
void get_pointsize_minmax(const struct wined3d_context *context, const struct wined3d_state *state, float *out_min, float *out_max) DECLSPEC_HIDDEN
Definition: utils.c:5128
struct wined3d_string_buffer * string_buffer_get(struct wined3d_string_buffer_list *list) DECLSPEC_HIDDEN
Definition: shader.c:495
static unsigned int wined3d_popcount(unsigned int x)
static struct wined3d_texture * texture_from_resource(struct wined3d_resource *resource)
wined3d_blit_op
@ WINED3D_BLIT_OP_COLOR_FILL
@ WINED3D_BLIT_OP_COLOR_BLIT_CKEY
@ WINED3D_BLIT_OP_RAW_BLIT
@ WINED3D_BLIT_OP_COLOR_BLIT_ALPHATEST
@ WINED3D_BLIT_OP_DEPTH_BLIT
@ WINED3D_BLIT_OP_DEPTH_FILL
@ WINED3D_BLIT_OP_COLOR_BLIT
void context_alloc_so_statistics_query(struct wined3d_context *context, struct wined3d_so_statistics_query *query) DECLSPEC_HIDDEN
Definition: context.c:961
static struct wined3d_buffer * buffer_from_resource(struct wined3d_resource *resource)
void swapchain_update_swap_interval(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN
Definition: swapchain.c:1144
wined3d_shader_conditional_op
@ WINED3D_SHADER_CONDITIONAL_OP_NZ
@ WINED3D_SHADER_CONDITIONAL_OP_Z
void state_init(struct wined3d_state *state, struct wined3d_fb_state *fb, const struct wined3d_gl_info *gl_info, const struct wined3d_d3d_info *d3d_info, DWORD flags) DECLSPEC_HIDDEN
Definition: stateblock.c:1310
HRESULT shader_generate_code(const struct wined3d_shader *shader, struct wined3d_string_buffer *buffer, const struct wined3d_shader_reg_maps *reg_maps, void *backend_ctx, const DWORD *start, const DWORD *end) DECLSPEC_HIDDEN
Definition: shader.c:2558
const struct ffp_frag_desc * find_ffp_frag_shader(const struct wine_rb_tree *fragment_shaders, const struct ffp_frag_settings *settings) DECLSPEC_HIDDEN
Definition: utils.c:6076
void wined3d_format_calculate_pitch(const struct wined3d_format *format, unsigned int alignment, unsigned int width, unsigned int height, unsigned int *row_pitch, unsigned int *slice_pitch) DECLSPEC_HIDDEN
Definition: utils.c:3876
void state_alpha_test(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN
Definition: state.c:653
static unsigned int wined3d_texture_get_level_depth(const struct wined3d_texture *texture, unsigned int level)
void wined3d_fence_destroy(struct wined3d_fence *fence) DECLSPEC_HIDDEN
Definition: query.c:286
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2906
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned char BYTE
Definition: xxhash.c:193
#define const
Definition: zconf.h:233