185 {
"GL_EXT_framebuffer_multisample_blit_scaled",
253 TRACE(
"Destroying caps GL context.\n");
258 if (
ctx->test_program_id ||
ctx->test_vbo)
265 ERR(
"Failed to disable caps GL context.\n");
270 ERR(
"wglDeleteContext(%p) failed, last error %#x.\n",
ctx->gl_ctx,
err);
277 ERR(
"Failed to restore previous GL context.\n");
285 if (!(gl_info->p_wglCreateContextAttribsARB = (
void *)
wglGetProcAddress(
"wglCreateContextAttribsARB")))
290 gl_info->p_wglCreateContextAttribsARB =
NULL;
296 ERR(
"Failed to make new context current, last error %#lx.\n",
GetLastError());
298 ERR(
"Failed to delete new context, last error %#lx.\n",
GetLastError());
299 gl_info->p_wglCreateContextAttribsARB =
NULL;
304 ERR(
"Failed to delete old context, last error %#lx.\n",
GetLastError());
305 caps_gl_ctx->
gl_ctx = new_ctx;
315 TRACE(
"getting context...\n");
325 ERR(
"Failed to create a window.\n");
332 ERR(
"Failed to get a DC.\n");
348 ERR(
"Failed to find a suitable pixel format.\n");
357 WARN(
"Failed to create default context for capabilities initialization.\n");
364 ERR(
"Failed to make caps GL context current.\n");
379 ERR(
"Failed to restore previous GL context.\n");
389 static const char testcode[] =
391 "PARAM C[66] = { program.env[0..65] };\n"
393 "PARAM zero = {0.0, 0.0, 0.0, 0.0};\n"
394 "ARL A0.x, zero.x;\n"
395 "MOV result.position, C[A0.x + 65];\n"
398 while (gl_info->
gl_ops.gl.p_glGetError());
401 ERR(
"Failed to create an ARB offset limit test program\n");
405 strlen(testcode), testcode));
406 if (gl_info->
gl_ops.gl.p_glGetError())
408 TRACE(
"OpenGL implementation does not allow indirect addressing offsets > 63\n");
411 }
else TRACE(
"OpenGL implementation allows offsets > 63\n");
477 static const unsigned int pattern[] =
479 0x00000000, 0x000000ff, 0x0000ff00, 0x40ff0000,
480 0x80ffffff, 0x40ffff00, 0x00ff00ff, 0x0000ffff,
481 0x00ffff00, 0x00ff00ff, 0x0000ffff, 0x000000ff,
482 0x80ff00ff, 0x0000ffff, 0x00ff00ff, 0x40ff00ff
489 while (gl_info->
gl_ops.gl.p_glGetError());
507 gl_info->
gl_ops.gl.p_glFinish();
519 WARN_(d3d_perf)(
"PBO test failed, read back data doesn't match original.\n"
520 "Disabling PBOs. This may result in slower performance.\n");
525 TRACE(
"PBO test successful.\n");
542 return gl_info->
limits.glsl_varyings > 44;
563 while (gl_info->
gl_ops.gl.p_glGetError());
569 TRACE(
"GL Implementation accepts 4 component specular color pointers\n");
574 TRACE(
"GL implementation does not accept 4 component specular colors, error %s\n",
588 static const char testcode[] =
590 "OPTION NV_vertex_program2;\n"
591 "MOV result.clip[0], 0.0;\n"
592 "MOV result.position, 0.0;\n"
597 while (gl_info->
gl_ops.gl.p_glGetError());
602 ERR(
"Failed to create the NVvp clip test program\n");
607 strlen(testcode), testcode));
611 WARN(
"GL_NV_vertex_program2_option result.clip[] test failed\n");
614 while (gl_info->
gl_ops.gl.p_glGetError());
616 else TRACE(
"GL_NV_vertex_program2_option result.clip[] test passed\n");
620 checkGLcall(
"GL_NV_vertex_program2_option result.clip[] test cleanup");
630 char data[4 * 4 * 4];
636 gl_info->
gl_ops.gl.p_glGenTextures(1, &tex);
643 gl_info->
fbo_ops.glGenFramebuffers(1, &fbo);
656 gl_info->
gl_ops.gl.p_glClearColor(0.996f, 0.729f, 0.745f, 0.792f);
668 gl_info->
fbo_ops.glDeleteFramebuffers(1, &fbo);
669 gl_info->
gl_ops.gl.p_glDeleteTextures(1, &tex);
685 gl_info->
gl_ops.gl.p_glGenTextures(1, &tex);
696 gl_info->
gl_ops.gl.p_glDeleteTextures(1, &tex);
722 unsigned int data[4];
725 float color[4] = {0.0f, 1.0f, 0.0f, 0.0f};
728 static const char program_code[] =
730 "OPTION ARB_fog_linear;\n"
731 "MOV result.color, {1.0, 0.0, 0.0, 0.0};\n"
739 gl_info->
gl_ops.gl.p_glGenTextures(1, &tex);
746 gl_info->
fbo_ops.glGenFramebuffers(1, &fbo);
755 gl_info->
gl_ops.gl.p_glClearColor(0.0f, 0.0f, 1.0f, 0.0f);
758 gl_info->
gl_ops.gl.p_glViewport(0, 0, 4, 1);
772 strlen(program_code), program_code));
779 const char *error_str;
781 FIXME(
"Fog test program error at position %d: %s\n\n", err_pos,
debugstr_a(error_str));
785 gl_info->
gl_ops.gl.p_glVertex3f(-1.0f, -1.0f, 0.0f);
786 gl_info->
gl_ops.gl.p_glVertex3f( 1.0f, -1.0f, 1.0f);
787 gl_info->
gl_ops.gl.p_glVertex3f(-1.0f, 1.0f, 0.0f);
788 gl_info->
gl_ops.gl.p_glVertex3f( 1.0f, 1.0f, 1.0f);
789 gl_info->
gl_ops.gl.p_glEnd();
794 data[0] &= 0x00ffffff;
795 data[1] &= 0x00ffffff;
796 data[2] &= 0x00ffffff;
797 data[3] &= 0x00ffffff;
802 gl_info->
fbo_ops.glDeleteFramebuffers(1, &fbo);
803 gl_info->
gl_ops.gl.p_glDeleteTextures(1, &tex);
811 return data[0] != 0x00ff0000 ||
data[3] != 0x0000ff00;
836 gl_info->
gl_ops.gl.p_glGenTextures(2, tex);
849 gl_info->
fbo_ops.glGenFramebuffers(1, &fbo);
857 gl_info->
fbo_ops.glDeleteFramebuffers(1, &fbo);
858 gl_info->
gl_ops.gl.p_glDeleteTextures(2, tex);
859 checkGLcall(
"testing multiple framebuffer attachments with different bit depths");
870 TRACE(
"Reserving 12 GLSL constants for compiler private use.\n");
894 TRACE(
"GL_ARB_texture_non_power_of_two advertised on R500 or earlier card, removing.\n");
914 TRACE(
"GL_ARB_texture_non_power_of_two advertised through OpenGL 2.0 on NV FX card, removing.\n");
967 TRACE(
"Reserving 1 ARB constant for compiler private use.\n");
978 gl_info->
limits.viewport_subpixel_bits = 0;
981 TRACE(
"Disabling ARB_clip_control.\n");
1008 TRACE(
"Card reports vendor PCI ID 0x%04x, device PCI ID 0x%04x, 0x%s bytes of video memory.\n",
1015 gpu_description = gpu_description_override;
1017 return gpu_description;
1028 static const struct driver_quirk
1041 "AMD normalised texrect quirk"
1046 "Apple GLSL uniform override"
1051 "Geforce 5 NP2 disable"
1056 "Reserved varying for gl_ClipPos"
1071 "Allow specular alpha quirk"
1076 "Apple NV_vertex_program clip bug quirk"
1081 "FBO rebind for attachment updates"
1086 "True RGBA16 is not available"
1091 "Not printing GLSL infolog"
1096 "Texture filtering, blending and VTF support is limited"
1101 "r200 vertex shader constants"
1106 "ARBfp fogstart == fogend workaround"
1111 "NVIDIA viewport subpixel bits bug"
1116 "No support for MRT with independent bit depths"
1129 ERR(
"Driver \"%s\" is missing extensions wined3d requires; skipping quirk detection.\n", gl_renderer);
1138 quirk_table[
i].apply(gl_info);
1147 const char *
ptr = gl_version;
1152 ERR(
"Invalid OpenGL major version %d.\n",
major);
1156 ERR(
"Invalid OpenGL version string %s.\n",
debugstr_a(gl_version));
1166 const char *gl_vendor_string,
const char *gl_renderer,
const char *gl_version)
1183 if (
strstr(gl_vendor_string,
"NVIDIA"))
1186 if (
strstr(gl_vendor_string,
"ATI"))
1189 if (
strstr(gl_vendor_string,
"Mesa")
1190 ||
strstr(gl_vendor_string,
"X.Org")
1191 ||
strstr(gl_vendor_string,
"Advanced Micro Devices, Inc.")
1192 ||
strstr(gl_vendor_string,
"DRI R300 Project")
1193 ||
strstr(gl_vendor_string,
"Tungsten Graphics, Inc")
1194 ||
strstr(gl_vendor_string,
"VMware, Inc.")
1195 ||
strstr(gl_vendor_string,
"Red Hat")
1196 ||
strstr(gl_vendor_string,
"Intel")
1197 ||
strstr(gl_renderer,
"Mesa")
1198 ||
strstr(gl_renderer,
"Gallium")
1199 ||
strstr(gl_renderer,
"Intel")
1200 ||
strstr(gl_version,
"Mesa"))
1203 FIXME(
"Received unrecognized GL_VENDOR %s. Returning GL_VENDOR_UNKNOWN.\n",
1211 if (
strstr(gl_vendor_string,
"NVIDIA")
1212 ||
strstr(gl_vendor_string,
"Nouveau")
1213 ||
strstr(gl_vendor_string,
"nouveau"))
1216 if (
strstr(gl_vendor_string,
"ATI")
1217 ||
strstr(gl_vendor_string,
"Advanced Micro Devices, Inc.")
1218 ||
strstr(gl_vendor_string,
"X.Org R300 Project")
1219 ||
strstr(gl_vendor_string,
"AMD")
1220 ||
strstr(gl_renderer,
"AMD")
1221 ||
strstr(gl_renderer,
"FirePro")
1222 ||
strstr(gl_renderer,
"Radeon")
1223 ||
strstr(gl_renderer,
"R100")
1224 ||
strstr(gl_renderer,
"R200")
1225 ||
strstr(gl_renderer,
"R300")
1226 ||
strstr(gl_renderer,
"R600")
1227 ||
strstr(gl_renderer,
"R700"))
1230 if (
strstr(gl_vendor_string,
"Intel(R)")
1232 ||
strstr(gl_renderer,
"Intel")
1233 ||
strstr(gl_renderer,
"i915")
1234 ||
strstr(gl_vendor_string,
"Intel Inc."))
1237 if (
strstr(gl_vendor_string,
"Red Hat")
1238 ||
strstr(gl_renderer,
"virgl"))
1241 if (
strstr(gl_renderer,
"SVGA3D"))
1244 if (
strstr(gl_vendor_string,
"Mesa")
1245 ||
strstr(gl_vendor_string,
"Brian Paul")
1246 ||
strstr(gl_vendor_string,
"Tungsten Graphics, Inc")
1247 ||
strstr(gl_vendor_string,
"VMware, Inc."))
1250 FIXME(
"Received unrecognized GL_VENDOR %s. Returning HW_VENDOR_NVIDIA.\n",
debugstr_a(gl_vendor_string));
1258 unsigned int shader_model;
1269 if (shader_model >= 5
1274 if (shader_model >= 4)
1283 if (shader_model >= 3 && gl_info->
limits.texture_size >= 4096 && gl_info->
limits.buffers >= 4)
1285 if (shader_model >= 2)
1295 if (shader_model >= 1)
1899 if (
table[
i].gl_vendor != gl_vendor)
1904 for (
j = 0;
j <
table[
i].cards_size; ++
j)
1911 FIXME(
"Couldn't find a suitable card selector for GL vendor %04x (using GL_RENDERER %s)\n",
2001 TRACE(
"Unrecognized renderer %s, falling back to default.\n",
debugstr_a(gl_renderer));
2006 FIXME(
"No card selector available for card vendor %04x (using GL_RENDERER %s).\n",
2024 while (!
isspace(*extensions) && *extensions)
2033 for (
i = 0;
i < entry_count; ++
i)
2038 TRACE(
" FOUND: %s support.\n",
map[
i].extension_string);
2049 const char *gl_extension_name;
2051 GLint extensions_count;
2054 for (
i = 0;
i < extensions_count; ++
i)
2058 for (
j = 0;
j < map_entries_count; ++
j)
2060 if (!
strcmp(gl_extension_name,
map[
j].extension_string))
2062 TRACE(
"FOUND: %s support.\n",
map[
j].extension_string);
2072#define USE_GL_FUNC(pfn) gl_info->gl_ops.ext.p_##pfn = (void *)wglGetProcAddress(#pfn);
2087 USE_GL_FUNC(glDrawElementsInstancedBaseVertexBaseInstance)
2157 USE_GL_FUNC(glGetFramebufferAttachmentParameteriv)
2466 USE_GL_FUNC(glGetFramebufferAttachmentParameterivEXT)
2736#define MAP_GL_FUNCTION(core_func, ext_func) \
2739 if (!gl_info->gl_ops.ext.p_##core_func) \
2740 gl_info->gl_ops.ext.p_##core_func = gl_info->gl_ops.ext.p_##ext_func; \
2742#define MAP_GL_FUNCTION_CAST(core_func, ext_func) \
2745 if (!gl_info->gl_ops.ext.p_##core_func) \
2746 gl_info->gl_ops.ext.p_##core_func = (void *)gl_info->gl_ops.ext.p_##ext_func; \
2759 MAP_GL_FUNCTION(glBlendEquationSeparatei, glBlendEquationSeparateiARB);
2782 MAP_GL_FUNCTION(glDisableVertexAttribArray, glDisableVertexAttribArrayARB);
2787 MAP_GL_FUNCTION(glEnableVertexAttribArray, glEnableVertexAttribArrayARB);
2858#undef MAP_GL_FUNCTION
2859#undef MAP_GL_FUNCTION_CAST
2864 unsigned int i, sampler_count;
2867 gl_info->
limits.buffers = 1;
2868 gl_info->
limits.ffp_textures = 0;
2869 gl_info->
limits.texture_coords = 0;
2872 gl_info->
limits.uniform_blocks[
i] = 0;
2873 gl_info->
limits.samplers[
i] = 0;
2877 gl_info->
limits.graphics_samplers = gl_info->
limits.combined_samplers;
2878 gl_info->
limits.vertex_attribs = 16;
2879 gl_info->
limits.texture_buffer_offset_alignment = 1;
2880 gl_info->
limits.glsl_vs_float_constants = 0;
2881 gl_info->
limits.glsl_ps_float_constants = 0;
2882 gl_info->
limits.arb_vs_float_constants = 0;
2883 gl_info->
limits.arb_vs_native_constants = 0;
2884 gl_info->
limits.arb_vs_instructions = 0;
2885 gl_info->
limits.arb_vs_temps = 0;
2886 gl_info->
limits.arb_ps_float_constants = 0;
2887 gl_info->
limits.arb_ps_local_constants = 0;
2888 gl_info->
limits.arb_ps_instructions = 0;
2889 gl_info->
limits.arb_ps_temps = 0;
2893 TRACE(
"Clip plane support - max planes %d.\n", gl_max);
2898 gl_info->
limits.lights = gl_max;
2899 TRACE(
"Light support - max lights %d.\n", gl_max);
2903 gl_info->
limits.texture_size = gl_max;
2904 TRACE(
"Maximum texture size support - max texture size %d.\n", gl_max);
2909 TRACE(
"Minimum buffer map alignment: %d.\n", gl_max);
2913 WARN_(d3d_perf)(
"Driver doesn't guarantee a minimum buffer map alignment.\n");
2918 gl_info->
limits.general_combiners = gl_max;
2919 TRACE(
"Max general combiners: %d.\n", gl_max);
2925 TRACE(
"Max draw buffers: %u.\n", gl_max);
2933 TRACE(
"Max textures: %d.\n", gl_info->
limits.ffp_textures);
2942 gl_info->
limits.texture_coords = gl_info->
limits.ffp_textures;
2944 TRACE(
"Max texture coords: %d.\n", gl_info->
limits.texture_coords);
2960 unsigned int vertex_sampler_count;
2965 gl_info->
limits.combined_samplers = gl_max;
2967 gl_info->
limits.vertex_attribs = gl_max;
2989 if (vertex_sampler_count && gl_info->
limits.combined_samplers < 12
2992 FIXME(
"OpenGL implementation supports %u vertex samplers and %u total samplers.\n",
2993 vertex_sampler_count, gl_info->
limits.combined_samplers);
2994 FIXME(
"Expected vertex samplers + WINED3D_MAX_FFP_TEXTURES(=8) > combined_samplers.\n");
2998 vertex_sampler_count = 0;
3007 TRACE(
"Max combined samplers: %u.\n", gl_info->
limits.combined_samplers);
3008 TRACE(
"Max vertex attributes: %u.\n", gl_info->
limits.vertex_attribs);
3012 gl_info->
limits.ffp_textures = 1;
3013 gl_info->
limits.texture_coords = 1;
3019 gl_info->
limits.texture3d_size = gl_max;
3020 TRACE(
"Max texture3D size: %d.\n", gl_info->
limits.texture3d_size);
3025 gl_info->
limits.anisotropy = gl_max;
3026 TRACE(
"Max anisotropy: %d.\n", gl_info->
limits.anisotropy);
3031 gl_info->
limits.arb_ps_float_constants = gl_max;
3032 TRACE(
"Max ARB_FRAGMENT_PROGRAM float constants: %d.\n", gl_info->
limits.arb_ps_float_constants);
3034 gl_info->
limits.arb_ps_native_constants = gl_max;
3035 TRACE(
"Max ARB_FRAGMENT_PROGRAM native float constants: %d.\n",
3036 gl_info->
limits.arb_ps_native_constants);
3038 gl_info->
limits.arb_ps_temps = gl_max;
3039 TRACE(
"Max ARB_FRAGMENT_PROGRAM native temporaries: %d.\n", gl_info->
limits.arb_ps_temps);
3041 gl_info->
limits.arb_ps_instructions = gl_max;
3042 TRACE(
"Max ARB_FRAGMENT_PROGRAM native instructions: %d.\n", gl_info->
limits.arb_ps_instructions);
3044 gl_info->
limits.arb_ps_local_constants = gl_max;
3045 TRACE(
"Max ARB_FRAGMENT_PROGRAM local parameters: %d.\n", gl_info->
limits.arb_ps_instructions);
3050 gl_info->
limits.arb_vs_float_constants = gl_max;
3051 TRACE(
"Max ARB_VERTEX_PROGRAM float constants: %d.\n", gl_info->
limits.arb_vs_float_constants);
3053 gl_info->
limits.arb_vs_native_constants = gl_max;
3054 TRACE(
"Max ARB_VERTEX_PROGRAM native float constants: %d.\n",
3055 gl_info->
limits.arb_vs_native_constants);
3057 gl_info->
limits.arb_vs_temps = gl_max;
3058 TRACE(
"Max ARB_VERTEX_PROGRAM native temporaries: %d.\n", gl_info->
limits.arb_vs_temps);
3060 gl_info->
limits.arb_vs_instructions = gl_max;
3061 TRACE(
"Max ARB_VERTEX_PROGRAM native instructions: %d.\n", gl_info->
limits.arb_vs_instructions);
3066 gl_info->
limits.glsl_vs_float_constants = gl_max / 4;
3067 TRACE(
"Max ARB_VERTEX_SHADER float constants: %u.\n", gl_info->
limits.glsl_vs_float_constants);
3073 TRACE(
"Max vertex uniform blocks: %u (%d).\n",
3081 TRACE(
"Max hull uniform blocks: %u (%d).\n",
3089 TRACE(
"Max domain uniform blocks: %u (%d).\n",
3099 TRACE(
"Max geometry uniform blocks: %u (%d).\n",
3108 gl_info->
limits.glsl_ps_float_constants = gl_max / 4;
3109 TRACE(
"Max ARB_FRAGMENT_SHADER float constants: %u.\n", gl_info->
limits.glsl_ps_float_constants);
3113 gl_info->
limits.glsl_varyings = gl_max;
3118 gl_info->
limits.glsl_varyings = gl_max - 4;
3120 TRACE(
"Max GLSL varyings: %u (%u 4 component varyings).\n", gl_info->
limits.glsl_varyings,
3121 gl_info->
limits.glsl_varyings / 4);
3127 TRACE(
"Max fragment uniform blocks: %u (%d).\n",
3135 TRACE(
"Max compute uniform blocks: %u (%d).\n",
3144 TRACE(
"Max combined uniform blocks: %d.\n", gl_max);
3146 TRACE(
"Max uniform buffer bindings: %d.\n", gl_max);
3151 gl_info->
limits.texture_buffer_offset_alignment = gl_max;
3152 TRACE(
"Minimum required texture buffer offset alignment %d.\n", gl_max);
3156 GLint max_fragment_buffers, max_combined_buffers, max_bindings;
3158 TRACE(
"Max fragment atomic counter buffers: %d.\n", max_fragment_buffers);
3160 TRACE(
"Max combined atomic counter buffers: %d.\n", max_combined_buffers);
3162 TRACE(
"Max atomic counter buffer bindings: %d.\n", max_bindings);
3167 WARN(
"Disabling ARB_shader_atomic_counters.\n");
3174 TRACE(
"Max vertex streams: %d.\n", gl_max);
3180 gl_info->
limits.shininess = 128.0f;
3185 gl_info->
limits.samples = gl_max;
3191 gl_info->
limits.framebuffer_width = gl_max;
3193 gl_info->
limits.framebuffer_height = gl_max;
3197 gl_info->
limits.framebuffer_width = gl_info->
limits.texture_size;
3198 gl_info->
limits.framebuffer_height = gl_info->
limits.texture_size;
3205 sampler_count += gl_info->
limits.samplers[
i];
3211 WARN(
"Graphics pipeline sampler count %u is greater than combined sampler count %u.\n",
3212 sampler_count, gl_info->
limits.combined_samplers);
3219 gl_info->
limits.graphics_samplers = gl_info->
limits.combined_samplers;
3222 sampler_count += gl_info->
limits.samplers[
i];
3223 if (gl_info->
limits.combined_samplers >= sampler_count)
3234 DWORD min_gl_version;
3373 const char *gl_vendor_str, *gl_renderer_str, *gl_version_str;
3376 unsigned int gl_version;
3377 DWORD gl_ext_emul_mask;
3378 const char *WGL_Extensions =
NULL;
3380 GLint context_profile = 0;
3384 TRACE(
"adapter_gl %p.\n", adapter_gl);
3388 if (!gl_renderer_str)
3390 ERR(
"Received a NULL GL_RENDERER.\n");
3394 gl_vendor_str = (
const char *)gl_info->
gl_ops.gl.p_glGetString(
GL_VENDOR);
3398 ERR(
"Received a NULL GL_VENDOR.\n");
3403 gl_version_str = (
const char *)gl_info->
gl_ops.gl.p_glGetString(
GL_VERSION);
3405 if (!gl_version_str)
3407 ERR(
"Received a NULL GL_VERSION.\n");
3423 TRACE(
"Got a core profile context.\n");
3427 TRACE(
"GL extensions reported:\n");
3430 const char *gl_extensions = (
const char *)gl_info->
gl_ops.gl.p_glGetString(
GL_EXTENSIONS);
3434 ERR(
"Received a NULL GL_EXTENSIONS.\n");
3447 WGL_Extensions = (
const char *)
GL_EXTCALL(wglGetExtensionsStringARB(
hdc));
3448 if (!WGL_Extensions)
3449 WARN(
"WGL extensions not supported.\n");
3455 if (!gl_info->
supported[core_extensions[
i].extension]
3456 && gl_version >= core_extensions[
i].min_gl_version)
3469 FIXME(
"GL extension %u not in the GL extensions map.\n", core_extensions[
i].extension);
3512 TRACE(
" IMPLIED: GL_ARB_texture_float support (by GL_APPLE_float_pixels).\n");
3517 TRACE(
" IMPLIED: GL_ARB_half_float_pixel support (by GL_APPLE_float_pixels).\n");
3529 TRACE(
" IMPLIED: NVIDIA (NV) Texture Gen Reflection support.\n");
3534 TRACE(
" IMPLIED: EXT_texture_compression_rgtc support (by ARB_texture_compression_rgtc).\n");
3539 TRACE(
" IMPLIED: ARB_texture_compression_rgtc support (by EXT_texture_compression_rgtc).\n");
3544 TRACE(
"ARB_texture_rg not supported, disabling ARB_texture_compression_rgtc.\n");
3579 TRACE(
"EXT_texture_sRGB_decode is not supported, disabling ARB_framebuffer_sRGB.\n");
3587 TRACE(
"Occlusion query counter has %d bits.\n", counter_bits);
3596 TRACE(
"Timestamp query counter has %d bits.\n", counter_bits);
3607 TRACE(
"Primitives query counter has %d bits.\n", counter_bits);
3612 TRACE(
"Transform feedback primitives query counter has %d bits.\n", counter_bits);
3618 GLint subpixel_bits;
3621 TRACE(
"Viewport supports %d subpixel bits.\n", subpixel_bits);
3624 TRACE(
"Disabling ARB_clip_control because viewport subpixel bits < 8.\n");
3627 gl_info->
limits.viewport_subpixel_bits = subpixel_bits;
3634 TRACE(
"Disabling ARB_clip_control because ARB_viewport_array is not supported.\n");
3640 TRACE(
"Disabling ARB_stencil_texturing because ARB_texture_swizzle is not supported.\n");
3645 TRACE(
" IMPLIED: ATI_texture_mirror_once support (by EXT_texture_mirror_clamp).\n");
3650 TRACE(
" IMPLIED: ARB_texture_mirror_clamp_to_edge support (by ATI_texture_mirror_once).\n");
3656 ERR(
"Disabling APPLE_ycbcr_422 because of ARB_texture_storage.\n");
3664 WARN(
"Disabling ARB_draw_indirect because ARB_base_instance is not supported.\n");
3671 WARN(
"Disabling ARB_texture_multisample because immutable storage is not supported.\n");
3676 TRACE(
" IMPLIED: GL_EXT_packed_depth_stencil (by GL_ARB_framebuffer_object).\n");
3697 WARN(
"OpenGL version %u.%u too low, limiting GLSL version to 1.30.\n",
3698 gl_version >> 16, gl_version & 0xffff);
3713 gl_info->
fbo_ops.glIsRenderbuffer = gl_info->
gl_ops.ext.p_glIsRenderbuffer;
3714 gl_info->
fbo_ops.glBindRenderbuffer = gl_info->
gl_ops.ext.p_glBindRenderbuffer;
3715 gl_info->
fbo_ops.glDeleteRenderbuffers = gl_info->
gl_ops.ext.p_glDeleteRenderbuffers;
3716 gl_info->
fbo_ops.glGenRenderbuffers = gl_info->
gl_ops.ext.p_glGenRenderbuffers;
3717 gl_info->
fbo_ops.glRenderbufferStorage = gl_info->
gl_ops.ext.p_glRenderbufferStorage;
3718 gl_info->
fbo_ops.glRenderbufferStorageMultisample = gl_info->
gl_ops.ext.p_glRenderbufferStorageMultisample;
3719 gl_info->
fbo_ops.glGetRenderbufferParameteriv = gl_info->
gl_ops.ext.p_glGetRenderbufferParameteriv;
3720 gl_info->
fbo_ops.glIsFramebuffer = gl_info->
gl_ops.ext.p_glIsFramebuffer;
3721 gl_info->
fbo_ops.glBindFramebuffer = gl_info->
gl_ops.ext.p_glBindFramebuffer;
3722 gl_info->
fbo_ops.glDeleteFramebuffers = gl_info->
gl_ops.ext.p_glDeleteFramebuffers;
3723 gl_info->
fbo_ops.glGenFramebuffers = gl_info->
gl_ops.ext.p_glGenFramebuffers;
3724 gl_info->
fbo_ops.glCheckFramebufferStatus = gl_info->
gl_ops.ext.p_glCheckFramebufferStatus;
3725 gl_info->
fbo_ops.glFramebufferTexture1D = gl_info->
gl_ops.ext.p_glFramebufferTexture1D;
3726 gl_info->
fbo_ops.glFramebufferTexture2D = gl_info->
gl_ops.ext.p_glFramebufferTexture2D;
3727 gl_info->
fbo_ops.glFramebufferTexture3D = gl_info->
gl_ops.ext.p_glFramebufferTexture3D;
3728 gl_info->
fbo_ops.glFramebufferTextureLayer = gl_info->
gl_ops.ext.p_glFramebufferTextureLayer;
3729 gl_info->
fbo_ops.glFramebufferRenderbuffer = gl_info->
gl_ops.ext.p_glFramebufferRenderbuffer;
3730 gl_info->
fbo_ops.glGetFramebufferAttachmentParameteriv
3731 = gl_info->
gl_ops.ext.p_glGetFramebufferAttachmentParameteriv;
3732 gl_info->
fbo_ops.glBlitFramebuffer = gl_info->
gl_ops.ext.p_glBlitFramebuffer;
3733 gl_info->
fbo_ops.glGenerateMipmap = gl_info->
gl_ops.ext.p_glGenerateMipmap;
3734 gl_info->
fbo_ops.glFramebufferTexture = gl_info->
gl_ops.ext.p_glFramebufferTexture;
3742 gl_info->
fbo_ops.glIsRenderbuffer = gl_info->
gl_ops.ext.p_glIsRenderbufferEXT;
3743 gl_info->
fbo_ops.glBindRenderbuffer = gl_info->
gl_ops.ext.p_glBindRenderbufferEXT;
3744 gl_info->
fbo_ops.glDeleteRenderbuffers = gl_info->
gl_ops.ext.p_glDeleteRenderbuffersEXT;
3745 gl_info->
fbo_ops.glGenRenderbuffers = gl_info->
gl_ops.ext.p_glGenRenderbuffersEXT;
3746 gl_info->
fbo_ops.glRenderbufferStorage = gl_info->
gl_ops.ext.p_glRenderbufferStorageEXT;
3747 gl_info->
fbo_ops.glGetRenderbufferParameteriv = gl_info->
gl_ops.ext.p_glGetRenderbufferParameterivEXT;
3748 gl_info->
fbo_ops.glIsFramebuffer = gl_info->
gl_ops.ext.p_glIsFramebufferEXT;
3749 gl_info->
fbo_ops.glBindFramebuffer = gl_info->
gl_ops.ext.p_glBindFramebufferEXT;
3750 gl_info->
fbo_ops.glDeleteFramebuffers = gl_info->
gl_ops.ext.p_glDeleteFramebuffersEXT;
3751 gl_info->
fbo_ops.glGenFramebuffers = gl_info->
gl_ops.ext.p_glGenFramebuffersEXT;
3752 gl_info->
fbo_ops.glCheckFramebufferStatus = gl_info->
gl_ops.ext.p_glCheckFramebufferStatusEXT;
3753 gl_info->
fbo_ops.glFramebufferTexture1D = gl_info->
gl_ops.ext.p_glFramebufferTexture1DEXT;
3754 gl_info->
fbo_ops.glFramebufferTexture2D = gl_info->
gl_ops.ext.p_glFramebufferTexture2DEXT;
3755 gl_info->
fbo_ops.glFramebufferTexture3D = gl_info->
gl_ops.ext.p_glFramebufferTexture3DEXT;
3756 gl_info->
fbo_ops.glFramebufferRenderbuffer = gl_info->
gl_ops.ext.p_glFramebufferRenderbufferEXT;
3757 gl_info->
fbo_ops.glGetFramebufferAttachmentParameteriv
3758 = gl_info->
gl_ops.ext.p_glGetFramebufferAttachmentParameterivEXT;
3759 gl_info->
fbo_ops.glGenerateMipmap = gl_info->
gl_ops.ext.p_glGenerateMipmapEXT;
3764 gl_info->
fbo_ops.glFramebufferTexture = gl_info->
gl_ops.ext.p_glFramebufferTextureARB;
3765 gl_info->
fbo_ops.glFramebufferTextureLayer = gl_info->
gl_ops.ext.p_glFramebufferTextureLayerARB;
3769 gl_info->
fbo_ops.glBlitFramebuffer = gl_info->
gl_ops.ext.p_glBlitFramebufferEXT;
3773 gl_info->
fbo_ops.glRenderbufferStorageMultisample
3774 = gl_info->
gl_ops.ext.p_glRenderbufferStorageMultisampleEXT;
3797 TRACE(
"Guessed GL vendor %#x.\n", gl_vendor);
3830 GLint device_count = 0;
3833 if (device_count > 0)
3835 if (device_count > 1)
3836 FIXME(
"A set of %d devices is not supported.\n", device_count);
3841 TRACE(
"Driver UUID: %s, device UUID %s.\n",
3846 WARN(
"Unexpected device count %d.\n", device_count);
3850 gl_ext_emul_mask =
adapter->vertex_pipe->vp_get_emul_mask(
adapter)
3862 ERR(
"Invalid attribute function called.\n");
3871 gl_info->
gl_ops.ext.p_glVertexAttrib4Nub(
idx,
3881 gl_info->
gl_ops.ext.p_glVertexAttrib4Nsv(
idx,
s);
3889 gl_info->
gl_ops.ext.p_glVertexAttrib4Nusv(
idx,
s);
3898 gl_info->
gl_ops.ext.p_glVertexAttrib2f(
idx,
x,
y);
3959 UINT attrib_count = 0;
4021 TRACE(
"iPixelFormat=%d, iPixelType=%#x, doubleBuffer=%d, RGBA=%d/%d/%d/%d, "
4022 "depth=%d, stencil=%d, samples=%d, windowDrawable=%d\n",
4052 TRACE(
"Skipping format %d because it isn't ICD accelerated.\n",
format_id);
4071 TRACE(
"iPixelFormat=%d, iPixelType=%#x, doubleBuffer=%d, RGBA=%d/%d/%d/%d, "
4072 "depth=%d, stencil=%d, windowDrawable=%d\n",
4099 if (!(device_gl =
calloc(1,
sizeof(*device_gl))))
4108 WARN(
"Failed to initialize device, hr %#lx.\n",
hr);
4323 if (!
device->context_count)
4370 bool coherent =
true;
4393 size =
texture->sub_resources[sub_resource_idx].size;
4399 if (!(bo_gl =
malloc(
sizeof(*bo_gl))))
4414 if ((bo_gl->
b.map_ptr =
chunk->c.map_ptr))
4415 ++
chunk->c.map_count;
4420 addr->buffer_object = &bo_gl->
b;
4423 if (!bo_gl->
b.map_ptr)
4425 WARN_(d3d_perf)(
"BO %p (chunk %p) is not persistently mapped.\n",
4445 TRACE(
"device %p, desc %p, state_parent %p, parent %p, parent_ops %p, swapchain %p.\n",
4448 if (!(swapchain_gl =
calloc(1,
sizeof(*swapchain_gl))))
4453 WARN(
"Failed to initialise swapchain, hr %#lx.\n",
hr);
4458 TRACE(
"Created swapchain %p.\n", swapchain_gl);
4459 *swapchain = &swapchain_gl->
s;
4479 TRACE(
"device %p, desc %p, data %p, parent %p, parent_ops %p, buffer %p.\n",
4482 if (!(buffer_gl =
calloc(1,
sizeof(*buffer_gl))))
4487 WARN(
"Failed to initialise buffer, hr %#lx.\n",
hr);
4492 TRACE(
"Created buffer %p.\n", buffer_gl);
4504 TRACE(
"buffer_gl %p.\n", buffer_gl);
4525 TRACE(
"device %p, desc %p, layer_count %u, level_count %u, flags %#x, parent %p, parent_ops %p, texture %p.\n",
4532 layer_count, level_count,
flags,
parent, parent_ops)))
4534 WARN(
"Failed to initialise texture, hr %#lx.\n",
hr);
4539 TRACE(
"Created texture %p.\n", texture_gl);
4551 TRACE(
"texture_gl %p.\n", texture_gl);
4561 texture->resource.parent_ops->wined3d_object_destroyed(
texture->resource.parent);
4577 TRACE(
"desc %s, resource %p, parent %p, parent_ops %p, view %p.\n",
4580 if (!(view_gl =
calloc(1,
sizeof(*view_gl))))
4585 WARN(
"Failed to initialise view, hr %#lx.\n",
hr);
4590 TRACE(
"Created render target view %p.\n", view_gl);
4591 *
view = &view_gl->
v;
4618 counter_id =
ctx->counter_bo ?
ctx->counter_bo->id : 0;
4619 if (
ctx->gl_view->name || counter_id)
4623 if (
ctx->gl_view->name)
4626 gl_info->
gl_ops.gl.p_glDeleteTextures(1, &
ctx->gl_view->name);
4633 if (
ctx->bo_user &&
ctx->bo_user->valid)
4664 TRACE(
"view_gl %p.\n", view_gl);
4677 TRACE(
"desc %s, resource %p, parent %p, parent_ops %p, view %p.\n",
4680 if (!(view_gl =
calloc(1,
sizeof(*view_gl))))
4685 WARN(
"Failed to initialise view, hr %#lx.\n",
hr);
4690 TRACE(
"Created shader resource view %p.\n", view_gl);
4691 *
view = &view_gl->
v;
4701 TRACE(
"view_gl %p.\n", view_gl);
4714 TRACE(
"desc %s, resource %p, parent %p, parent_ops %p, view %p.\n",
4717 if (!(view_gl =
calloc(1,
sizeof(*view_gl))))
4722 WARN(
"Failed to initialise view, hr %#lx.\n",
hr);
4727 TRACE(
"Created unordered access view %p.\n", view_gl);
4728 *
view = &view_gl->
v;
4738 TRACE(
"view_gl %p.\n", view_gl);
4749 TRACE(
"device %p, desc %p, parent %p, parent_ops %p, sampler %p.\n",
4752 if (!(sampler_gl =
calloc(1,
sizeof(*sampler_gl))))
4757 TRACE(
"Created sampler %p.\n", sampler_gl);
4769 TRACE(
"sampler_gl %p.\n", sampler_gl);
4771 if (sampler_gl->
name)
4786 TRACE(
"sampler_gl %p.\n", sampler_gl);
4794 TRACE(
"device %p, type %#x, parent %p, parent_ops %p, query %p.\n",
4806 if (
query->buffer_object)
4833 TRACE(
"context_gl %p.\n", context_gl);
4835 if (context_gl->
valid)
4836 context_gl->
gl_info->gl_ops.gl.p_glFlush();
4904 adapter_gl->
a.shader_backend->shader_get_caps(&adapter_gl->
a, &
shader_caps);
4905 adapter_gl->
a.vertex_pipe->vp_get_caps(&adapter_gl->
a, &vertex_caps);
4922 d3d_info->
limits.max_rt_count = gl_info->
limits.buffers;
4923 d3d_info->
limits.max_clip_distances = gl_info->
limits.user_clip_distances;
4924 d3d_info->
limits.texture_size = gl_info->
limits.texture_size;
4925 d3d_info->
limits.sample_count = gl_info->
limits.samples;
4929 d3d_info->
limits.pointsize_max =
f[1];
4930 TRACE(
"Maximum point size support - max point size %.8e.\n",
f[1]);
4964 static const float test_array[] =
4976 while (upper != lower)
4978 test = (upper + lower) / 2;
4980 TRACE(
"Good %u lower %u, test %u.\n", upper, lower,
test);
4989 value = test_array[upper];
4991 WARN(
"Using a filling convention fixup offset of -1/%f.\n", -1.0f /
value);
4993 TRACE(
"No need for a filling convention offset.\n");
4998 FIXME(
"Did not find a way to get the filling convention we want.\n");
5002 return -1.0f / 64.0f;
5009 L"ReactOS DirectX Needs at least OpenGL 2.0 or better\n\n"
5010 L"Install a display driver that provides an OpenGL ICD to enable 3D "
5011 L"acceleration. Or install Mesa3D from RAPPS",
5012 L"ReactOS - no 3D acceleration",
5017static void wined3d_warn_no_3d(
void)
5032 unsigned int ordinal,
unsigned int wined3d_creation_flags)
5034 static const unsigned int supported_gl_versions[] =
5051 required_extensions[] =
5059 TRACE(
"adapter_gl %p, ordinal %u, wined3d_creation_flags %#x.\n",
5060 adapter_gl, ordinal, wined3d_creation_flags);
5063 luid = &primary_luid;
5071#define USE_GL_FUNC(f) gl_info->gl_ops.gl.p_##f = (void *)GetProcAddress(mod_gl, #f);
5083 ERR(
"Failed to get a GL context for adapter %p.\n", adapter_gl);
5094 ERR_(winediag)(
"Requested invalid GL version %u.%u.\n",
5101 gl_info->selected_gl_version = supported_gl_versions[
i];
5106 WARN(
"Couldn't create an OpenGL %u.%u context, trying fallback to a lower version.\n",
5107 supported_gl_versions[
i] >> 16, supported_gl_versions[
i] & 0xffff);
5112 ERR(
"Failed to initialize GL caps for adapter %p.\n", adapter_gl);
5117 for (
unsigned int i = 0;
i <
ARRAY_SIZE(required_extensions); ++
i)
5119 if (!
gl_info->supported[required_extensions[
i].extension])
5121 ERR(
"Required extension %s is not supported.\n", required_extensions[
i].
string);
5123 wined3d_warn_no_3d();
5132 ERR(
"Required extension ARB_texture_non_power_of_two is not supported.\n");
5134 wined3d_warn_no_3d();
5142 ERR(
"GLSL version %s is too low; 1.20 is required.\n",
5145 wined3d_warn_no_3d();
5161 TRACE(
"Reporting (fake) driver version 0x%08x-0x%08x.\n",
5169 WARN(
"No suitable pixel formats found.\n");
5177 ERR(
"Failed to initialize GL format info.\n");
COMPILER_DEPENDENT_UINT64 UINT64
enum wined3d_pci_vendor card_vendor
static HRESULT adapter_gl_create_query(struct wined3d_device *device, enum wined3d_query_type type, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query)
static void quirk_limited_tex_filtering(struct wined3d_gl_info *gl_info)
static HRESULT adapter_gl_create_texture(struct wined3d_device *device, const struct wined3d_resource_desc *desc, unsigned int layer_count, unsigned int level_count, uint32_t flags, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_texture **texture)
static void wined3d_caps_gl_ctx_destroy(const struct wined3d_caps_gl_ctx *ctx)
static void adapter_gl_get_wined3d_caps(const struct wined3d_adapter *adapter, struct wined3d_caps *caps)
static unsigned int wined3d_parse_gl_version(const char *gl_version)
static const struct wined3d_renderer_table cards_intel[]
static const struct gl_vendor_selection vmware_gl_vendor_table[]
static BOOL match_dx10_capable(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static enum wined3d_feature_level feature_level_from_caps(const struct wined3d_gl_info *gl_info, const struct shader_caps *shader_caps, const struct fragment_caps *fragment_caps)
static BOOL match_geforce5(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static void wined3d_query_gl_destroy_object(void *object)
#define MAP_GL_FUNCTION(core_func, ext_func)
struct wined3d_adapter * wined3d_adapter_gl_create(unsigned int ordinal, unsigned int wined3d_creation_flags)
static void WINE_GLAPI generic_float16_2(GLuint idx, const void *data)
static HRESULT adapter_gl_init_3d(struct wined3d_device *device)
static void wined3d_sampler_gl_destroy_object(void *object)
static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info)
static void adapter_gl_copy_bo_address(struct wined3d_context *context, const struct wined3d_bo_address *dst, const struct wined3d_bo_address *src, unsigned int range_count, const struct wined3d_range *ranges, uint32_t map_flags)
static void quirk_fbo_tex_update(struct wined3d_gl_info *gl_info)
static BOOL match_broken_rgba16(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static void adapter_gl_generate_mipmap(struct wined3d_context *context, struct wined3d_shader_resource_view *view)
static void wined3d_view_gl_destroy_object(void *object)
static const struct wined3d_extension_map gl_extension_map[]
static void quirk_disable_nvvp_clip(struct wined3d_gl_info *gl_info)
static const struct gl_vendor_selection intel_gl_vendor_table[]
static void adapter_gl_destroy_buffer(struct wined3d_buffer *buffer)
static BOOL match_broken_nv_clip(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static void WINE_GLAPI generic_d3dcolor(GLuint idx, const void *data)
static BOOL match_broken_arb_fog(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static void load_gl_funcs(struct wined3d_gl_info *gl_info)
static BOOL match_no_independent_bit_depths(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static const struct wined3d_renderer_table cards_nvidia_binary[]
static void quirk_clip_varying(struct wined3d_gl_info *gl_info)
static void WINE_GLAPI generic_ushort2n(GLuint idx, const void *data)
static BOOL match_amd_r300_to_500(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static void adapter_gl_flush_bo_address(struct wined3d_context *context, const struct wined3d_const_bo_address *data, size_t size)
static void adapter_gl_destroy(struct wined3d_adapter *adapter)
static const struct gl_vendor_selection redhat_gl_vendor_table[]
static void adapter_gl_flush_context(struct wined3d_context *context)
static void adapter_gl_destroy_device(struct wined3d_device *device)
static void WINE_GLAPI generic_short2n(GLuint idx, const void *data)
static void adapter_gl_uninit_3d(struct wined3d_device *device)
static enum wined3d_gl_vendor wined3d_guess_gl_vendor(const struct wined3d_gl_info *gl_info, const char *gl_vendor_string, const char *gl_renderer, const char *gl_version)
static BOOL match_apple(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static BOOL test_arb_vs_offset_limit(const struct wined3d_gl_info *gl_info)
static void wined3d_adapter_init_ffp_attrib_ops(struct wined3d_adapter_gl *adapter_gl)
static const struct wined3d_gpu_description * query_gpu_description(const struct wined3d_gl_info *gl_info, UINT64 *vram_bytes)
static void parse_extension_string(struct wined3d_gl_info *gl_info, const char *extensions, const struct wined3d_extension_map *map, UINT entry_count)
static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_gl, uint32_t wined3d_creation_flags)
static HRESULT adapter_gl_create_sampler(struct wined3d_device *device, const struct wined3d_sampler_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_sampler **sampler)
static HRESULT adapter_gl_create_unordered_access_view(const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_unordered_access_view **view)
static void WINE_GLAPI generic_float16_4(GLuint idx, const void *data)
static void adapter_gl_destroy_unordered_access_view(struct wined3d_unordered_access_view *view)
#define MAP_GL_FUNCTION_CAST(core_func, ext_func)
static void test_pbo_functionality(struct wined3d_gl_info *gl_info)
static void quirk_no_independent_bit_depths(struct wined3d_gl_info *gl_info)
static void adapter_gl_clear_uav(struct wined3d_context *context, struct wined3d_unordered_access_view *view, const struct wined3d_uvec4 *clear_value, bool fp)
static void quirk_broken_rgba16(struct wined3d_gl_info *gl_info)
static HRESULT adapter_gl_create_device(struct wined3d *wined3d, const struct wined3d_adapter *adapter, enum wined3d_device_type device_type, HWND focus_window, unsigned int flags, BYTE surface_alignment, const enum wined3d_feature_level *levels, unsigned int level_count, struct wined3d_device_parent *device_parent, struct wined3d_device **device)
static enum wined3d_pci_vendor wined3d_guess_card_vendor(const char *gl_vendor_string, const char *gl_renderer)
static void quirk_broken_viewport_subpixel_bits(struct wined3d_gl_info *gl_info)
static void quirk_allows_specular_alpha(struct wined3d_gl_info *gl_info)
static void wined3d_view_gl_destroy(struct wined3d_device *device, const struct wined3d_gl_view *gl_view, struct wined3d_bo_user *bo_user, struct wined3d_bo_gl *counter_bo, void *object)
static void wined3d_adapter_init_fb_cfgs(struct wined3d_adapter_gl *adapter_gl, HDC dc)
static BOOL match_fglrx(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static const struct gl_vendor_selection nvidia_gl_vendor_table[]
static BOOL match_allows_spec_alpha(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static const struct wined3d_renderer_table cards_nvidia_mesa[]
static void * adapter_gl_map_bo_address(struct wined3d_context *context, const struct wined3d_bo_address *data, size_t size, uint32_t map_flags)
static BOOL adapter_gl_check_format(const struct wined3d_adapter *adapter, const struct wined3d_format *adapter_format, const struct wined3d_format *rt_format, const struct wined3d_format *ds_format)
static BOOL match_r200(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static float wined3d_adapter_find_fill_offset(struct wined3d_caps_gl_ctx *ctx)
static HRESULT adapter_gl_create_buffer(struct wined3d_device *device, const struct wined3d_buffer_desc *desc, const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_buffer **buffer)
static HRESULT adapter_gl_create_rendertarget_view(const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_rendertarget_view **view)
static void fixup_extensions(struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor)
static const struct wined3d_renderer_table cards_amd_binary[]
static BOOL match_not_dx10_capable(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static void adapter_gl_unmap_bo_address(struct wined3d_context *context, const struct wined3d_bo_address *data, unsigned int range_count, const struct wined3d_range *ranges)
static const struct wined3d_adapter_ops wined3d_adapter_gl_ops
static HRESULT adapter_gl_create_shader_resource_view(const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_shader_resource_view **view)
static enum wined3d_pci_device wined3d_guess_card(enum wined3d_feature_level feature_level, const char *gl_renderer, enum wined3d_gl_vendor *gl_vendor, enum wined3d_pci_vendor *card_vendor)
static HRESULT adapter_gl_create_swapchain(struct wined3d_device *device, const struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain)
static void adapter_gl_destroy_shader_resource_view(struct wined3d_shader_resource_view *view)
static struct wined3d_context * adapter_gl_acquire_context(struct wined3d_device *device, struct wined3d_texture *texture, unsigned int sub_resource_idx)
static void quirk_infolog_spam(struct wined3d_gl_info *gl_info)
static void enumerate_gl_extensions(struct wined3d_gl_info *gl_info, const struct wined3d_extension_map *map, unsigned int map_entries_count)
static void adapter_gl_release_context(struct wined3d_context *context)
static void quirk_no_np2(struct wined3d_gl_info *gl_info)
static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter_gl *adapter_gl, struct wined3d_caps_gl_ctx *caps_gl_ctx, unsigned int wined3d_creation_flags)
static BOOL wined3d_caps_gl_ctx_create_attribs(struct wined3d_caps_gl_ctx *caps_gl_ctx, struct wined3d_gl_info *gl_info)
static void adapter_gl_destroy_bo(struct wined3d_context *context, struct wined3d_bo *bo)
static const struct wined3d_renderer_table cards_amd_mesa[]
static BOOL wined3d_caps_gl_ctx_create(struct wined3d_adapter_gl *adapter_gl, struct wined3d_caps_gl_ctx *ctx)
static void quirk_broken_arb_fog(struct wined3d_gl_info *gl_info)
static void quirk_apple_glsl_constants(struct wined3d_gl_info *gl_info)
static void quirk_r200_constants(struct wined3d_gl_info *gl_info)
static void adapter_gl_destroy_swapchain(struct wined3d_swapchain *swapchain)
static void adapter_gl_destroy_texture(struct wined3d_texture *texture)
static const struct wined3d_extension_map wgl_extension_map[]
static const struct gl_vendor_selection amd_gl_vendor_table[]
unsigned int gl_vendor_count
static void adapter_gl_destroy_rendertarget_view(struct wined3d_rendertarget_view *view)
static void adapter_gl_destroy_sampler(struct wined3d_sampler *sampler)
static BOOL wined3d_adapter_gl_init(struct wined3d_adapter_gl *adapter_gl, unsigned int ordinal, unsigned int wined3d_creation_flags)
static void adapter_gl_destroy_query(struct wined3d_query *query)
static void quirk_amd_dx9(struct wined3d_gl_info *gl_info)
static const struct wined3d_renderer_table cards_redhat[]
static const struct wined3d_renderer_table cards_vmware[]
static enum wined3d_pci_device select_card_handler(const struct gl_vendor_selection *table, unsigned int table_size, enum wined3d_gl_vendor gl_vendor, const char *gl_renderer)
static BOOL match_broken_viewport_subpixel_bits(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static BOOL match_fbo_tex_update(const struct wined3d_gl_info *gl_info, struct wined3d_caps_gl_ctx *ctx, const char *gl_renderer, enum wined3d_gl_vendor gl_vendor, enum wined3d_pci_vendor card_vendor, enum wined3d_pci_device device)
static void WINE_GLAPI invalid_generic_attrib_func(GLuint idx, const void *data)
static const struct @331 card_vendor_table[]
static bool adapter_gl_alloc_bo(struct wined3d_device *device, struct wined3d_resource *resource, unsigned int sub_resource_idx, struct wined3d_bo_address *addr)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
void wined3d_context_gl_destroy_bo(struct wined3d_context_gl *context_gl, struct wined3d_bo_gl *bo)
void wined3d_context_gl_copy_bo_address(struct wined3d_context_gl *context_gl, const struct wined3d_bo_address *dst, const struct wined3d_bo_address *src, unsigned int range_count, const struct wined3d_range *ranges, uint32_t map_flags)
struct wined3d_context * wined3d_context_gl_acquire(const struct wined3d_device *device, struct wined3d_texture *texture, unsigned int sub_resource_idx)
struct wined3d_context_gl * wined3d_context_gl_get_current(void)
void wined3d_context_gl_unmap_bo_address(struct wined3d_context_gl *context_gl, const struct wined3d_bo_address *data, unsigned int range_count, const struct wined3d_range *ranges)
HGLRC context_create_wgl_attribs(const struct wined3d_gl_info *gl_info, HDC hdc, HGLRC share_ctx)
void dispatch_compute(struct wined3d_device *device, const struct wined3d_state *state, const struct wined3d_dispatch_parameters *parameters)
void wined3d_context_gl_release(struct wined3d_context_gl *context_gl)
void * wined3d_context_gl_map_bo_address(struct wined3d_context_gl *context_gl, const struct wined3d_bo_address *data, size_t size, uint32_t flags)
void context_gl_resource_released(struct wined3d_device *device, GLuint name, BOOL rb_namespace)
void wined3d_context_gl_flush_bo_address(struct wined3d_context_gl *context_gl, const struct wined3d_const_bo_address *data, size_t size)
void draw_primitive(struct wined3d_device *device, const struct wined3d_state *state, const struct wined3d_draw_parameters *parameters)
void wined3d_cs_destroy_object(struct wined3d_cs *cs, void(*callback)(void *object), void *object)
void wined3d_cs_init_object(struct wined3d_cs *cs, void(*callback)(void *object), void *object)
float float_16_to_32(const unsigned short in)
HRESULT wined3d_buffer_gl_init(struct wined3d_buffer_gl *buffer_gl, struct wined3d_device *device, const struct wined3d_buffer_desc *desc, const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops)
GLenum wined3d_buffer_gl_binding_from_bind_flags(const struct wined3d_gl_info *gl_info, uint32_t bind_flags)
void wined3d_buffer_cleanup(struct wined3d_buffer *buffer)
void wined3d_device_gl_delete_opengl_contexts_cs(void *object)
void wined3d_device_destroy_default_samplers(struct wined3d_device *device)
ULONG CDECL wined3d_device_decref(struct wined3d_device *device)
HRESULT wined3d_device_init(struct wined3d_device *device, struct wined3d *wined3d, unsigned int adapter_idx, enum wined3d_device_type device_type, HWND focus_window, unsigned int flags, BYTE surface_alignment, const enum wined3d_feature_level *levels, unsigned int level_count, const BOOL *supported_extensions, struct wined3d_device_parent *device_parent)
void wined3d_device_cleanup(struct wined3d_device *device)
bool wined3d_device_gl_create_bo(struct wined3d_device_gl *device_gl, struct wined3d_context_gl *context_gl, GLsizeiptr size, GLenum binding, GLenum usage, bool coherent, GLbitfield flags, struct wined3d_bo_gl *bo)
ULONG CDECL wined3d_device_incref(struct wined3d_device *device)
void wined3d_device_gl_create_primary_opengl_context_cs(void *object)
HRESULT wined3d_query_gl_create(struct wined3d_device *device, enum wined3d_query_type type, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query)
void wined3d_query_gl_destroy_buffer_object(struct wined3d_context_gl *context_gl, struct wined3d_query *query)
GLbitfield wined3d_resource_gl_storage_flags(const struct wined3d_resource *resource)
HRESULT wined3d_texture_gl_init(struct wined3d_texture_gl *texture_gl, struct wined3d_device *device, const struct wined3d_resource_desc *desc, unsigned int layer_count, unsigned int level_count, uint32_t flags, void *parent, const struct wined3d_parent_ops *parent_ops)
void wined3d_texture_cleanup(struct wined3d_texture *texture)
void wined3d_texture_sub_resources_destroyed(struct wined3d_texture *texture)
BOOL wined3d_get_primary_adapter_luid(LUID *luid)
void wined3d_release_dc(HWND window, HDC dc)
BOOL wined3d_adapter_gl_init_format_info(struct wined3d_adapter *adapter, struct wined3d_caps_gl_ctx *ctx)
BOOL wined3d_caps_gl_ctx_test_viewport_subpixel_bits(struct wined3d_caps_gl_ctx *ctx)
const char * debug_uvec4(const struct wined3d_uvec4 *v)
bool wined3d_caps_gl_ctx_test_filling_convention(struct wined3d_caps_gl_ctx *ctx, float offset)
const char * debug_glerror(GLenum error)
const char * wined3d_debug_view_desc(const struct wined3d_view_desc *d, const struct wined3d_resource *resource)
void wined3d_shader_resource_view_cleanup(struct wined3d_shader_resource_view *view)
void wined3d_unordered_access_view_cleanup(struct wined3d_unordered_access_view *view)
void wined3d_unordered_access_view_gl_clear(struct wined3d_unordered_access_view_gl *view_gl, const struct wined3d_uvec4 *clear_value, struct wined3d_context_gl *context_gl, bool fp)
HRESULT wined3d_rendertarget_view_gl_init(struct wined3d_rendertarget_view_gl *view_gl, const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops)
HRESULT wined3d_unordered_access_view_gl_init(struct wined3d_unordered_access_view_gl *view_gl, const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops)
void wined3d_rendertarget_view_cleanup(struct wined3d_rendertarget_view *view)
void wined3d_shader_resource_view_gl_generate_mipmap(struct wined3d_shader_resource_view_gl *view_gl, struct wined3d_context_gl *context_gl)
HRESULT wined3d_shader_resource_view_gl_init(struct wined3d_shader_resource_view_gl *view_gl, const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops)
#define GetProcAddress(x, y)
static __inline const char * debugstr_an(const char *s, int n)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
#define WINE_DECLARE_DEBUG_CHANNEL(x)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl sscanf(const char *, const char *,...) __WINE_CRT_SCANF_ATTR(2
_ACRTIMP int __cdecl atoi(const char *)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP char *__cdecl strstr(const char *, const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
#define check(expected, result)
const struct wined3d_state_entry_template misc_state_template_gl[]
#define GL_MAX_TEXTURE_SIZE
#define GL_TEXTURE_MIN_FILTER
GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r)
GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v)
GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v)
GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture)
GLAPI void GLAPIENTRY glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data)
GLAPI void GLAPIENTRY glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
#define GL_UNSIGNED_SHORT
#define GL_ALIASED_POINT_SIZE_RANGE
GLint GLint GLint GLint GLint x
GLAPI void GLAPIENTRY glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
#define GL_MAX_TEXTURE_UNITS_ARB
GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture)
GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t)
#define GL_TEXTURE_MAX_LEVEL
GLuint GLuint GLsizei GLenum type
GLAPI void GLAPIENTRY glGetCompressedTexImage(GLenum target, GLint lod, GLvoid *img)
GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
GLint GLint GLint GLint GLint GLint y
GLAPI void GLAPIENTRY glTexImage3D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
#define GL_POINT_SIZE_RANGE
#define GL_COLOR_BUFFER_BIT
GLAPI void GLAPIENTRY glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLAPI void GLAPIENTRY glBlendEquation(GLenum mode)
#define GL_UNSIGNED_INT_8_8_8_8
#define GL_TEXTURE_MAG_FILTER
#define GL_TRIANGLE_STRIP
GLAPI void GLAPIENTRY glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels)
GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s)
GLAPI void GLAPIENTRY glActiveTexture(GLenum texture)
#define GL_UNSIGNED_INT_8_8_8_8_REV
#define GL_UNSIGNED_SHORT_5_6_5
GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v)
GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v)
GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v)
GLAPI void GLAPIENTRY glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data)
#define GL_TEXTURE_RED_SIZE
void install_gl_compat_wrapper(struct wined3d_gl_info *gl_info, enum wined3d_gl_extension ext)
#define GL_MAX_3D_TEXTURE_SIZE_EXT
#define GL_MAX_UNIFORM_BUFFER_BINDINGS
#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB
#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS
#define GL_PROGRAM_ERROR_POSITION_ARB
#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS
#define GL_MIRRORED_REPEAT_ARB
#define GL_PROGRAM_FORMAT_ASCII_ARB
#define GL_PROGRAM_ERROR_STRING_ARB
#define GL_FRAGMENT_PROGRAM_ARB
#define GL_MAX_FRAGMENT_INPUT_COMPONENTS
#define GL_CONTEXT_PROFILE_MASK
#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB
#define GL_MAX_CLIP_DISTANCES
#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS
#define GL_CLAMP_TO_BORDER_ARB
#define GL_MAX_SHININESS_NV
#define GL_COLOR_ATTACHMENT0
#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB
#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS
#define GL_MAX_VERTEX_UNIFORM_BLOCKS
#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB
#define GL_COLOR_ATTACHMENT1
#define GL_MAX_GENERAL_COMBINERS_NV
#define GL_MAX_VERTEX_ATTRIBS_ARB
#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS
#define GL_PRIMITIVES_GENERATED
#define GL_FRAMEBUFFER_COMPLETE
#define GL_DRAW_FRAMEBUFFER
#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS
GLboolean GLenum GLenum GLvoid * values
#define GL_MAX_TEXTURE_COORDS_ARB
GLenum const GLvoid * addr
#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS
#define GL_MAX_TEXTURE_IMAGE_UNITS
#define GL_VIEWPORT_SUBPIXEL_BITS
#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
#define GL_SAMPLES_PASSED
#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
#define GL_SHADING_LANGUAGE_VERSION_ARB
#define GL_MAX_COMBINED_UNIFORM_BLOCKS
#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS
#define GL_CONTEXT_CORE_PROFILE_BIT
#define GL_MIN_MAP_BUFFER_ALIGNMENT
#define GL_MAX_VARYING_FLOATS_ARB
#define GL_MAX_VERTEX_STREAMS
#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
#define GL_VERTEX_PROGRAM_ARB
GLubyte GLubyte GLubyte GLubyte w
#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB
#define GL_MAX_DRAW_BUFFERS_ARB
#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS
GLsizeiptr const GLvoid GLenum usage
#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS
#define GL_NUM_EXTENSIONS
#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
#define GL_PIXEL_UNPACK_BUFFER
#define GL_QUERY_COUNTER_BITS
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 i
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 j
const struct wined3d_shader_backend_ops glsl_shader_backend
const struct wined3d_fragment_pipe_ops glsl_fragment_pipe
const struct wined3d_vertex_pipe_ops glsl_vertex_pipe
#define InterlockedCompareExchange
D3D11_SHADER_VARIABLE_DESC desc
static RPC_BINDING_HANDLE binding
static HGLRC(WINAPI *pwglCreateContextAttribsARB)(HDC hDC
#define WS_OVERLAPPEDWINDOW
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI DestroyWindow(_In_ HWND)
void wined3d_sampler_gl_init(struct wined3d_sampler_gl *sampler_gl, struct wined3d_device *device, const struct wined3d_sampler_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops)
static PIXELFORMATDESCRIPTOR pfd
unsigned int max_textures
unsigned int TextureOpCaps
const struct wined3d_renderer_table * cards
enum wined3d_gl_vendor gl_vendor
unsigned int varying_count
unsigned int ps_uniform_count
unsigned int vs_uniform_count
struct wined3d_pixel_format * pixel_formats
unsigned int pixel_format_count
struct wined3d_gl_info gl_info
struct wined3d_allocator_block * memory
const struct wined3d_gpu_description * gpu_description
const struct wined3d_gl_info * gl_info
DWORD MaxVertexShader30InstructionSlots
struct wined3d_vertex_shader_caps VS20Caps
DWORD VolumeTextureAddressCaps
DWORD MaxPixelShader30InstructionSlots
DWORD VolumeTextureFilterCaps
struct wined3d_pixel_shader_caps PS20Caps
DWORD VertexShaderVersion
DWORD CubeTextureFilterCaps
struct wined3d_ddraw_caps ddraw_caps
const struct wined3d_gl_info * gl_info
unsigned int sub_resource_idx
uint32_t subpixel_viewport
struct fragment_caps ffp_fragment_caps
uint32_t viewport_array_index_any_shader
uint32_t full_ffp_varyings
uint32_t srgb_read_control
enum wined3d_feature_level feature_level
struct wined3d_d3d_limits limits
uint32_t shader_double_precision
uint32_t wined3d_creation_flags
uint32_t emulated_flatshading
uint32_t draw_base_vertex_offset
uint32_t shader_output_interpolation
float filling_convention_offset
DWORD multisample_draw_location
uint32_t srgb_write_control
uint32_t unconditional_npot
CRITICAL_SECTION allocator_cs
struct wined3d_device_gl::wined3d_retired_block_gl * retired_blocks
uint64_t current_fence_id
unsigned int version_high
const char * extension_string
enum wined3d_gl_extension extension
wined3d_generic_attrib_func generic[WINED3D_FFP_EMIT_COUNT]
unsigned int reserved_arb_constants
BOOL supported[WINED3D_GL_EXT_COUNT]
struct opengl_funcs gl_ops
struct wined3d_ffp_attrib_ops ffp_attrib_ops
struct wined3d_gl_limits limits
struct wined3d_fbo_ops fbo_ops
unsigned int glsl_version
GLint wrap_lookup[WINED3D_TADDRESS_MIRROR_ONCE - WINED3D_TADDRESS_WRAP+1]
float filling_convention_offset
unsigned int reserved_glsl_constants
enum wined3d_pci_device id
struct wined3d_rendertarget_view v
struct wined3d_gl_view gl_view
const struct wined3d_parent_ops * parent_ops
unsigned int max_gl_version
unsigned int multisample_textures
struct wined3d_bo_user bo_user
struct wined3d_shader_resource_view v
struct wined3d_gl_view gl_view
struct wined3d_swapchain s
struct wined3d_bo_gl counter_bo
struct wined3d_unordered_access_view v
struct wined3d_bo_user bo_user
struct wined3d_gl_view gl_view
BOOL emulated_flatshading
DWORD max_vertex_blend_matrices
struct wined3d_bo_user * bo_user
const struct wined3d_gl_view * gl_view
struct wined3d_bo_gl * counter_bo
struct wined3d_view_gl_destroy_ctx * free
struct wined3d_device * device
BOOL WINAPI wglDeleteContext(HGLRC hglrc)
HDC WINAPI wglGetCurrentDC(void)
PROC WINAPI wglGetProcAddress(LPCSTR name)
HGLRC WINAPI wglGetCurrentContext(void)
HGLRC WINAPI wglCreateContext(HDC hdc)
BOOL WINAPI wglMakeCurrent(HDC hdc, HGLRC hglrc)
#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT
#define WGL_STENCIL_BITS_ARB
#define GL_MAX_COMPUTE_UNIFORM_BLOCKS
#define GL_DRIVER_UUID_EXT
#define GL_MAX_FRAMEBUFFER_WIDTH
#define WGL_BLUE_BITS_ARB
#define WGL_SWAP_METHOD_ARB
#define GL_MAX_TEXTURE_MAX_ANISOTROPY
#define WGL_RENDERER_VENDOR_ID_WINE
#define WGL_GREEN_BITS_ARB
#define GL_DEVICE_UUID_EXT
#define WGL_ALPHA_BITS_ARB
#define WGL_RENDERER_DEVICE_ID_WINE
#define GL_NUM_DEVICE_UUIDS_EXT
#define WGL_PIXEL_TYPE_ARB
#define WGL_DEPTH_BITS_ARB
#define GL_CLIENT_STORAGE_BIT
#define WGL_DOUBLE_BUFFER_ARB
#define WGL_TYPE_COLORINDEX_ARB
#define WGL_DRAW_TO_WINDOW_ARB
#define WGL_TYPE_RGBA_ARB
#define WGL_NUMBER_PIXEL_FORMATS_ARB
#define WGL_SAMPLE_BUFFERS_ARB
#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS
#define WGL_RENDERER_VIDEO_MEMORY_WINE
#define WGL_SWAP_UNDEFINED_ARB
#define WGL_AUX_BUFFERS_ARB
#define GL_MIRROR_CLAMP_TO_EDGE
#define GL_MAX_FRAMEBUFFER_HEIGHT
#define WGL_COLOR_BITS_ARB
DWORD WINAPI GetLastError(void)
void WINAPI DebugBreak(void)
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL _In_opt_ BRUSHOBJ * pbo
const struct wined3d_gpu_description * wined3d_get_gpu_description(enum wined3d_pci_vendor vendor, enum wined3d_pci_device device)
void wined3d_adapter_cleanup(struct wined3d_adapter *adapter)
BOOL wined3d_adapter_init(struct wined3d_adapter *adapter, unsigned int ordinal, const LUID *luid, const struct wined3d_adapter_ops *adapter_ops)
bool wined3d_driver_info_init(struct wined3d_driver_info *driver_info, const struct wined3d_gpu_description *gpu_desc, enum wined3d_feature_level feature_level, UINT64 vram_bytes, UINT64 sysmem_bytes)
const struct wined3d_gpu_description * wined3d_get_user_override_gpu_description(enum wined3d_pci_vendor vendor, enum wined3d_pci_device device)
enum wined3d_pci_device wined3d_gpu_from_feature_level(enum wined3d_pci_vendor *vendor, enum wined3d_feature_level feature_level)
void wined3d_swapchain_gl_cleanup(struct wined3d_swapchain_gl *swapchain_gl)
HRESULT wined3d_swapchain_gl_init(struct wined3d_swapchain_gl *swapchain_gl, struct wined3d_device *device, const struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent, void *parent, const struct wined3d_parent_ops *parent_ops)
#define WINED3DPTEXTURECAPS_MIPCUBEMAP
#define WINED3DPMISCCAPS_POSTBLENDSRGBCONVERT
#define WINED3DPRASTERCAPS_ANISOTROPY
#define WINED3DPTADDRESSCAPS_WRAP
#define WINEDDSCAPS_NONLOCALVIDMEM
#define WINEDDSCAPS_OWNDC
#define WINED3DSTENCILCAPS_DECR
#define WINED3DPTFILTERCAPS_LINEARMIPNEAREST
#define WINEDDSCAPS_VIDEOMEMORY
#define WINED3DPMISCCAPS_INDEPENDENTWRITEMASKS
#define WINED3DPTFILTERCAPS_MAGFLINEAR
#define WINED3DPTEXTURECAPS_CUBEMAP_POW2
#define WINED3DPTADDRESSCAPS_INDEPENDENTUV
#define WINED3DPTFILTERCAPS_MIPNEAREST
#define WINED3DPTEXTURECAPS_MIPVOLUMEMAP
#define WINED3DPTADDRESSCAPS_CLAMP
#define WINED3DPBLENDCAPS_SRCALPHASAT
#define WINED3DCAPS2_CANGENMIPMAP
#define WINED3DPRASTERCAPS_MIPMAPLODBIAS
#define WINED3D_MAX_RENDER_TARGETS
#define WINED3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS
#define WINED3DPTFILTERCAPS_MINFANISOTROPIC
#define WINED3DPTEXTURECAPS_VOLUMEMAP
#define WINED3DPTFILTERCAPS_MIPFLINEAR
#define WINED3DPMISCCAPS_SEPARATEALPHABLEND
#define WINEDDSCAPS_LOCALVIDMEM
#define WINED3DDTCAPS_FLOAT16_2
#define WINED3DPTADDRESSCAPS_MIRRORONCE
@ WINED3D_TADDRESS_BORDER
@ WINED3D_TADDRESS_MIRROR_ONCE
@ WINED3D_TADDRESS_MIRROR
#define WINED3DPTFILTERCAPS_LINEARMIPLINEAR
#define WINED3DPTADDRESSCAPS_BORDER
#define WINED3DDTCAPS_FLOAT16_4
#define WINED3DPTADDRESSCAPS_MIRROR
#define WINED3DPTFILTERCAPS_NEAREST
#define WINED3DPTFILTERCAPS_MAGFPOINT
#define WINED3D_MAP_DISCARD
#define WINED3D_MAP_WRITE
#define WINED3DPTFILTERCAPS_LINEAR
#define WINED3DPTFILTERCAPS_MAGFANISOTROPIC
#define WINEDDSCAPS_FRONTBUFFER
#define WINEDDSCAPS_COMPLEX
@ WINED3D_FEATURE_LEVEL_10_1
@ WINED3D_FEATURE_LEVEL_8
@ WINED3D_FEATURE_LEVEL_7
@ WINED3D_FEATURE_LEVEL_6
@ WINED3D_FEATURE_LEVEL_9_3
@ WINED3D_FEATURE_LEVEL_10
@ WINED3D_FEATURE_LEVEL_11_1
@ WINED3D_FEATURE_LEVEL_5
@ WINED3D_FEATURE_LEVEL_9_1
@ WINED3D_FEATURE_LEVEL_9_2
#define WINED3D_MAX_CLIP_DISTANCES
@ 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
#define WINED3DPMISCCAPS_BLENDOP
#define WINED3DPTFILTERCAPS_MIPLINEAR
#define WINED3DPTFILTERCAPS_MINFPOINT
#define WINED3DPTEXTURECAPS_VOLUMEMAP_POW2
#define WINED3DPBLENDCAPS_BLENDFACTOR
#define WINED3DSTENCILCAPS_INCR
#define WINED3DUSAGE_DYNAMIC
#define WINED3DPTEXTURECAPS_CUBEMAP
#define WINED3D_MAX_FFP_TEXTURES
#define WINED3DPTFILTERCAPS_MIPFPOINT
#define WINED3DTEXOPCAPS_DOTPRODUCT3
#define WINED3DPTFILTERCAPS_MINFLINEAR
#define WINEDDSCAPS_3DDEVICE
#define WINEDDSCAPS_BACKBUFFER
#define WINED3DSTENCILCAPS_TWOSIDED
#define WINED3D_QUIRK_NO_INDEPENDENT_BIT_DEPTHS
@ EXT_BLEND_EQUATION_SEPARATE
@ ARB_FRAGMENT_PROGRAM_SHADOW
@ ARB_EXPLICIT_ATTRIB_LOCATION
@ ARB_SHADING_LANGUAGE_PACKING
@ ARB_TEXTURE_QUERY_LEVELS
@ ARB_TEXTURE_FILTER_ANISOTROPIC
@ ARB_TEXTURE_BUFFER_OBJECT
@ ARB_INTERNALFORMAT_QUERY
@ ARB_PIPELINE_STATISTICS_QUERY
@ ARB_SHADER_BIT_ENCODING
@ EXT_TEXTURE_SHARED_EXPONENT
@ ARB_DRAW_ELEMENTS_BASE_VERTEX
@ WINED3D_GL_PRIMITIVE_QUERY
@ ARB_FRAGMENT_LAYER_VIEWPORT
@ WINED3D_GL_BLEND_EQUATION
@ WGL_WINE_QUERY_RENDERER
@ APPLE_FLUSH_BUFFER_RANGE
@ ARB_SHADER_STORAGE_BUFFER_OBJECT
@ ARB_TEXTURE_ENV_COMBINE
@ WGL_WINE_PIXEL_FORMAT_PASSTHROUGH
@ ATI_TEXTURE_COMPRESSION_3DC
@ EXT_FRAMEBUFFER_MULTISAMPLE_BLIT_SCALED
@ ARB_TEXTURE_COMPRESSION_RGTC
@ ARB_TEXTURE_MIRRORED_REPEAT
@ EXT_TEXTURE_SRGB_DECODE
@ ARB_VERTEX_BUFFER_OBJECT
@ ARB_POLYGON_OFFSET_CLAMP
@ ARB_TEXTURE_BORDER_CLAMP
@ ARB_TEXTURE_MULTISAMPLE
@ ARB_INTERNALFORMAT_QUERY2
@ EXT_BLEND_FUNC_SEPARATE
@ NV_TEXTURE_ENV_COMBINE4
@ ARB_MAP_BUFFER_ALIGNMENT
@ ARB_SHADER_TEXTURE_IMAGE_SAMPLES
@ ARB_FRAGMENT_COORD_CONVENTIONS
@ ARB_UNIFORM_BUFFER_OBJECT
@ WINED3D_GL_NORMALIZED_TEXRECT
@ ARB_CLEAR_BUFFER_OBJECT
@ EXT_PACKED_DEPTH_STENCIL
@ ATI_TEXTURE_ENV_COMBINE3
@ NV_FRAGMENT_PROGRAM_OPTION
@ ARB_FRAMEBUFFER_NO_ATTACHMENTS
@ ARB_SHADING_LANGUAGE_100
@ EXT_TEXTURE_COMPRESSION_RGTC
@ EXT_TEXTURE_MIRROR_CLAMP
@ ARB_BLEND_FUNC_EXTENDED
@ ARB_SHADER_ATOMIC_COUNTERS
@ EXT_FRAMEBUFFER_MULTISAMPLE
@ ARB_TEXTURE_MIRROR_CLAMP_TO_EDGE
@ ARB_SHADING_LANGUAGE_420PACK
@ ARB_TESSELLATION_SHADER
@ ATI_TEXTURE_MIRROR_ONCE
@ ARB_VERTEX_TYPE_2_10_10_10_REV
@ ARB_TRANSFORM_FEEDBACK3
@ ARB_TEXTURE_NON_POWER_OF_TWO
@ WINED3D_GL_LEGACY_CONTEXT
@ NV_VERTEX_PROGRAM2_OPTION
@ ARB_SHADER_STENCIL_EXPORT
@ EXT_GPU_PROGRAM_PARAMETERS
@ ARB_SHADER_IMAGE_LOAD_STORE
@ ARB_TEXTURE_COMPRESSION_BPTC
@ ARB_TEXTURE_COMPRESSION
@ ARB_SHADER_VIEWPORT_LAYER_ARRAY
@ EXT_TEXTURE_COMPRESSION_S3TC
@ ARB_TEXTURE_BUFFER_RANGE
@ ARB_PIXEL_BUFFER_OBJECT
@ ARB_QUERY_BUFFER_OBJECT
@ ARB_TRANSFORM_FEEDBACK2
@ ARB_VERTEX_TYPE_10F_11F_11F_REV
@ ARB_TEXTURE_STORAGE_MULTISAMPLE
@ EXT_TEXTURE_ENV_COMBINE
@ ARB_TEXTURE_CUBE_MAP_ARRAY
#define WINED3D_QUIRK_NV_CLIP_BROKEN
static void wined3d_allocator_chunk_gl_unlock(struct wined3d_allocator_chunk_gl *chunk_gl)
#define WINED3D_QUIRK_BROKEN_ARB_FOG
#define MAX_GL_FRAGMENT_SAMPLERS
#define WINED3D_QUIRK_ALLOWS_SPECULAR_ALPHA
#define WINED3D_QUIRK_LIMITED_TEX_FILTERING
static bool wined3d_fence_supported(const struct wined3d_gl_info *gl_info)
#define WINED3D_QUIRK_INFO_LOG_SPAM
static void wined3d_allocator_chunk_gl_lock(struct wined3d_allocator_chunk_gl *chunk_gl)
#define WINED3D_QUIRK_BROKEN_RGBA16
#define WINED3D_QUIRK_FBO_TEX_UPDATE
#define WINED3D_QUIRK_GLSL_CLIP_VARYING
#define WINED3D_QUIRK_ARB_VS_OFFSET_LIMIT
void(WINE_GLAPI * wined3d_generic_attrib_func)(GLuint idx, const void *data)
static const struct wined3d_adapter_gl * wined3d_adapter_gl_const(const struct wined3d_adapter *adapter)
#define WINED3D_OPENGL_WINDOW_CLASS_NAME
static void * wined3d_texture_allocate_object_memory(SIZE_T s, SIZE_T level_count, SIZE_T layer_count)
@ WINED3D_FFP_EMIT_D3DCOLOR
@ WINED3D_FFP_EMIT_FLOAT16_2
@ WINED3D_FFP_EMIT_UBYTE4N
@ 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_FLOAT3
@ WINED3D_FFP_EMIT_FLOAT16_4
@ WINED3D_FFP_EMIT_USHORT4N
@ WINED3D_FFP_EMIT_SHORT2
@ WINED3D_FFP_EMIT_SHORT4
@ WINED3D_FFP_EMIT_FLOAT1
#define WINED3D_SHADER_CAP_DOUBLE_PRECISION
#define MAKEDWORD_VERSION(maj, min)
static void wined3d_cs_finish(struct wined3d_cs *cs, enum wined3d_cs_queue_id queue_id)
static void wined3d_not_from_cs(const struct wined3d_cs *cs)
#define WINED3D_SHADER_CAP_OUTPUT_INTERPOLATION
#define MAX_UNORDERED_ACCESS_VIEWS
static void context_release(struct wined3d_context *context)
#define WINED3D_SHADER_CAP_FULL_FFP_VARYINGS
#define GL_EXT_EMUL_EXT_FOG_COORD
#define GL_EXT_EMUL_ARB_MULTITEXTURE
#define wined3d_lock_init(lock, name)
#define WINED3D_LOCATION_TEXTURE_RGB
static void wined3d_lock_cleanup(CRITICAL_SECTION *lock)
#define WINED3D_LOCATION_RB_MULTISAMPLE
static struct wined3d_context * context_acquire(struct wined3d_device *device, struct wined3d_texture *texture, unsigned int sub_resource_idx)
@ WINED3D_CS_QUEUE_DEFAULT
@ CARD_NVIDIA_GEFORCE_GTX780
@ CARD_NVIDIA_GEFORCE_GTX950M
@ CARD_NVIDIA_GEFORCE_RTX4060
@ CARD_NVIDIA_GEFORCE_GTX1060_3GB
@ CARD_NVIDIA_GEFORCE_GT325M
@ CARD_NVIDIA_GEFORCE_GTXTITANZ
@ CARD_NVIDIA_GEFORCE_GTX570
@ CARD_NVIDIA_GEFORCE_GTXTITAN
@ CARD_NVIDIA_GEFORCE_RTX3080_10GB_LHR
@ CARD_NVIDIA_GEFORCE_GTX560TI
@ CARD_NVIDIA_GEFORCE_GTX1080TI
@ CARD_NVIDIA_GEFORCE_GTS250
@ CARD_NVIDIA_GEFORCE_6800
@ CARD_NVIDIA_GEFORCE_GT610
@ CARD_NVIDIA_GEFORCE_GT420
@ CARD_NVIDIA_GEFORCEFX_5600
@ CARD_NVIDIA_GEFORCE_GTX1080
@ CARD_NVIDIA_GEFORCE_9600GT
@ CARD_NVIDIA_GEFORCE_GT640M
@ CARD_NVIDIA_GEFORCE_GTX1650SUPER
@ CARD_NVIDIA_GEFORCE_GT1030
@ CARD_NVIDIA_GEFORCE_940M
@ CARD_NVIDIA_GEFORCE_320M
@ CARD_NVIDIA_GEFORCE_GT650M
@ CARD_NVIDIA_GEFORCE_GTX460
@ CARD_NVIDIA_GEFORCE_830M
@ CARD_NVIDIA_GEFORCE_7300
@ CARD_NVIDIA_GEFORCEFX_5200
@ CARD_NVIDIA_GEFORCE_GTX1650
@ CARD_NVIDIA_GEFORCE_GT330
@ CARD_NVIDIA_GEFORCE_7600
@ CARD_NVIDIA_GEFORCE_GT320M
@ 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_NVIDIA_GEFORCE_GTX560
@ CARD_NVIDIA_GEFORCE_GTX650TI
@ CARD_NVIDIA_GEFORCE_845M
@ CARD_NVIDIA_GEFORCE_RTX3080_10GB
@ CARD_NVIDIA_GEFORCE_840M
@ CARD_NVIDIA_GEFORCE_8800GTX
@ CARD_NVIDIA_GEFORCE_9700MGT
@ CARD_NVIDIA_GEFORCE_GT730
@ CARD_NVIDIA_GEFORCE_GTX580
@ CARD_NVIDIA_GEFORCE_GTX1060
@ CARD_NVIDIA_GEFORCE_GTX1070
@ CARD_NVIDIA_GEFORCE_GTX950
@ CARD_NVIDIA_GEFORCE_RTX3090
@ CARD_NVIDIA_GEFORCE_RTX3060TI_GA104_LHR
@ CARD_NVIDIA_GEFORCE_GTX690
@ CARD_NVIDIA_GEFORCE_GTX780TI
@ CARD_NVIDIA_GEFORCE_RTX3050
@ CARD_NVIDIA_GEFORCE_RTX3060TI_GA104
@ CARD_NVIDIA_GEFORCE_GTX770
@ CARD_NVIDIA_GEFORCE_RTX3090TI
@ CARD_NVIDIA_GEFORCE_GTX760
@ CARD_NVIDIA_GEFORCE_GTX880M
@ CARD_NVIDIA_GEFORCE4_TI4200
@ CARD_AMD_RADEON_HD4200M
@ CARD_NVIDIA_GEFORCE_GT430
@ CARD_NVIDIA_GEFORCE_GTX750TI
@ CARD_NVIDIA_GEFORCE_8300GS
@ CARD_NVIDIA_GEFORCE_RTX4090
@ CARD_NVIDIA_GEFORCE_GTX465
@ CARD_NVIDIA_GEFORCE_RTX4070TI
@ CARD_NVIDIA_GEFORCE_GT240
@ CARD_NVIDIA_TITANX_PASCAL
@ CARD_AMD_RADEON_HD6550D
@ CARD_NVIDIA_GEFORCE_GT520
@ CARD_NVIDIA_GEFORCE_RTX2080
@ CARD_NVIDIA_GEFORCE_GTX675MX_1
@ CARD_NVIDIA_GEFORCE_GT730M
@ CARD_AMD_RADEON_RX_NAVI_14
@ CARD_NVIDIA_GEFORCE_8800GTS
@ CARD_NVIDIA_GEFORCE_RTX4070TISUPER
@ CARD_NVIDIA_GEFORCE_8400GS
@ CARD_NVIDIA_GEFORCE_RTX3070TI
@ CARD_NVIDIA_GEFORCE_8200
@ CARD_AMD_RADEON_HD6600M
@ CARD_NVIDIA_GEFORCE_RTX3080TI
@ CARD_NVIDIA_GEFORCE_GTX1660TI
@ CARD_NVIDIA_GEFORCE_RTX3070_MOBILE
@ CARD_NVIDIA_GEFORCE_GTX480
@ CARD_NVIDIA_GEFORCE_RTX4070SUPER
@ CARD_NVIDIA_GEFORCE_GT720
@ CARD_NVIDIA_GEFORCE_GTX550
@ CARD_NVIDIA_GEFORCE_9400M
@ CARD_NVIDIA_GEFORCE_GTX960
@ CARD_NVIDIA_GEFORCE_GTX680
@ CARD_NVIDIA_GEFORCE_8600MGT
@ CARD_NVIDIA_GEFORCE_GTX650
@ CARD_NVIDIA_GEFORCE_GT555M
@ CARD_NVIDIA_GEFORCE_GTS350M
@ CARD_NVIDIA_GEFORCE_RTX3080_12GB
@ CARD_AMD_RADEON_HD7660D
@ CARD_NVIDIA_GEFORCE_GTX870M
@ CARD_NVIDIA_GEFORCE_9400GT
@ CARD_NVIDIA_GEFORCE_GTX850M
@ CARD_NVIDIA_GEFORCE_RTX3060
@ CARD_NVIDIA_GEFORCE_7800GT
@ CARD_NVIDIA_GEFORCE_RTX3060TI_GA103
@ CARD_NVIDIA_GEFORCE_GTX670
@ CARD_NVIDIA_GEFORCE_GTX765M
@ CARD_NVIDIA_GEFORCE_RTX4080SUPER
@ CARD_AMD_RADEON_R9_FURY
@ CARD_NVIDIA_GEFORCE_RTX4060TI16G
@ CARD_NVIDIA_GEFORCE_RTX4070
@ CARD_NVIDIA_GEFORCE_RTX3060_LHR
@ CARD_NVIDIA_GEFORCE_210
@ CARD_NVIDIA_GEFORCE_GTX660M
@ CARD_NVIDIA_GEFORCE_GTX460M
@ CARD_NVIDIA_GEFORCE_9800GT
@ CARD_NVIDIA_GEFORCE_6200
@ CARD_NVIDIA_GEFORCE_9300
@ CARD_NVIDIA_GEFORCE_GT525M
@ CARD_NVIDIA_GEFORCE_GTX760TI
@ CARD_NVIDIA_GEFORCE_GTX260
@ CARD_NVIDIA_GEFORCE_GTX980
@ CARD_NVIDIA_GEFORCE_8600GT
@ CARD_NVIDIA_GEFORCE_GTX970M
@ CARD_NVIDIA_GEFORCE_GTX560M
@ CARD_NVIDIA_GEFORCE_GTX1070M
@ CARD_NVIDIA_GEFORCE_315M
@ CARD_NVIDIA_GEFORCE_RTX2070
@ CARD_NVIDIA_GEFORCE_GT630
@ CARD_NVIDIA_GEFORCE_GT220
@ CARD_NVIDIA_GEFORCE_GTX750
@ CARD_NVIDIA_GEFORCE_GTX770M
@ CARD_NVIDIA_GEFORCE_GTXTITANX
@ CARD_NVIDIA_GEFORCE_GTX1660SUPER
@ CARD_AMD_RADEON_RX_NAVI_10
@ CARD_NVIDIA_GEFORCEFX_5800
@ CARD_NVIDIA_GEFORCE_GTX1050
@ CARD_AMD_RADEON_HD8600M
@ CARD_NVIDIA_GEFORCE_RTX4060TI8G
@ CARD_NVIDIA_GEFORCE_GTXTITANB
@ CARD_NVIDIA_GEFORCE4_MX
@ CARD_NVIDIA_GEFORCE_GTX960M
@ CARD_NVIDIA_GEFORCE_GTX1050TI
@ CARD_NVIDIA_GEFORCE_GTX970
@ CARD_NVIDIA_GEFORCE_GT630M
@ CARD_NVIDIA_GEFORCE_GT740M
@ CARD_NVIDIA_GEFORCE_GT540M
@ CARD_NVIDIA_GEFORCE_GTX660
@ CARD_NVIDIA_GEFORCE_RTX4080
@ CARD_NVIDIA_GEFORCE_RTX3070
@ CARD_NVIDIA_GEFORCE2_MX
@ CARD_NVIDIA_GEFORCE_RTX2060
@ CARD_NVIDIA_GEFORCE_GTX470
@ CARD_NVIDIA_GEFORCE_RTX2080TI
@ 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_RTX3070_LHR
@ CARD_NVIDIA_GEFORCE_GTX660TI
@ CARD_NVIDIA_GEFORCE_9500GT
@ CARD_NVIDIA_GEFORCE_GTX670MX
@ CARD_NVIDIA_GEFORCE_GTX860M
@ CARD_NVIDIA_GEFORCE_9200
@ CARD_AMD_RADEON_HD6410D
static struct wined3d_texture * texture_from_resource(struct wined3d_resource *resource)
int WINAPI ChoosePixelFormat(_In_ HDC hdc, _In_ const PIXELFORMATDESCRIPTOR *ppfd)
BOOL WINAPI SetPixelFormat(_In_ HDC, _In_ int, _In_ const PIXELFORMATDESCRIPTOR *)
#define PFD_SUPPORT_OPENGL
int WINAPI DescribePixelFormat(_In_ HDC hdc, _In_ int iPixelFormat, _In_ UINT nBytes, _Out_writes_bytes_opt_(nBytes) LPPIXELFORMATDESCRIPTOR ppfd)
#define PFD_GENERIC_FORMAT
#define PFD_DRAW_TO_WINDOW
#define PFD_GENERIC_ACCELERATED