Bug 8027 - World of Warcraft behaves incorrectly in OpenGL mode
Summary: World of Warcraft behaves incorrectly in OpenGL mode
Status: RESOLVED DUPLICATE of bug 8060
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/r200 (show other bugs)
Version: git
Hardware: x86 (IA32) Linux (All)
: high normal
Assignee: Default DRI bug account
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-08-27 06:07 UTC by Chris Rankin
Modified: 2009-08-24 12:24 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
Warcraft login screen; OpenGL mode (184.73 KB, image/png)
2006-08-27 06:13 UTC, Chris Rankin
Details
Warcraft login screen; Direct3D mode (457.33 KB, image/png)
2006-08-27 06:15 UTC, Chris Rankin
Details
Warcraft login screen; OpenGL mode ignoring vertex weight attribute (466.93 KB, image/png)
2006-09-06 14:58 UTC, Chris Rankin
Details

Description Chris Rankin 2006-08-27 06:07:05 UTC
I am running the World of Warcraft 1.11.0 client using Wine 0.9.20, XOrg 7.1,
Mesa 6.5.1 and with a Radeon 9200 (rv280) video card. WoW can use either
Direct3D or OpenGL. However, while the Direct3D login screen is drawn correctly,
the OpenGL version is not.

I have attached screenshots of each. This is what glxinfo says about my
configuration:

$ glxinfo -l
name of display: :0.0
libGL warning: 3D driver claims to not support visual 0x4b
Mesa: CPU vendor: GenuineIntel
Mesa: CPU name:                   Intel(R) Xeon(TM) CPU 2.66GHz
Mesa: MMX cpu detected.
Mesa: SSE cpu detected.
Mesa: Not testing OS support for SSE, leaving enabled.
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
    GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating,
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_OML_swap_method,
    GLX_SGI_make_current_read, GLX_SGIS_multisample, GLX_SGIX_hyperpipe,
    GLX_SGIX_swap_barrier, GLX_SGIX_fbconfig, GLX_MESA_copy_sub_buffer
client glx vendor string: SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,
    GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control,
    GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_OML_sync_control,
    GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap
GLX version: 1.2
GLX extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,
    GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control,
    GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_SGI_video_sync,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig
OpenGL vendor string: Tungsten Graphics, Inc.
OpenGL renderer string: Mesa DRI R200 20060602 AGP 4x x86/MMX/SSE2 TCL
OpenGL version string: 1.3 Mesa 6.5.1
OpenGL extensions:
    GL_ARB_imaging, GL_ARB_multisample, GL_ARB_multitexture,
    GL_ARB_texture_border_clamp, GL_ARB_texture_compression,
    GL_ARB_texture_cube_map, GL_ARB_texture_env_add,
    GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
    GL_ARB_texture_env_dot3, GL_ARB_texture_mirrored_repeat,
    GL_ARB_texture_rectangle, GL_ARB_transpose_matrix,
    GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_window_pos,
    GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
    GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
    GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_clip_volume_hint,
    GL_EXT_compiled_vertex_array, GL_EXT_convolution, GL_EXT_copy_texture,
    GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_histogram,
    GL_EXT_packed_pixels, GL_EXT_polygon_offset, GL_EXT_rescale_normal,
    GL_EXT_secondary_color, GL_EXT_separate_specular_color,
    GL_EXT_stencil_wrap, GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_edge_clamp,
    GL_EXT_texture_env_add, GL_EXT_texture_env_combine,
    GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic,
    GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp,
    GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_vertex_array,
    GL_APPLE_packed_pixels, GL_ATI_blend_equation_separate,
    GL_ATI_texture_env_combine3, GL_ATI_texture_mirror_once,
    GL_ATI_fragment_shader, GL_IBM_rasterpos_clip,
    GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,
    GL_MESA_pack_invert, GL_MESA_ycbcr_texture, GL_MESA_window_pos,
    GL_NV_blend_square, GL_NV_light_max_exponent, GL_NV_texture_rectangle,
    GL_NV_texgen_reflection, GL_NV_vertex_program, GL_OES_read_format,
    GL_SGI_color_matrix, GL_SGI_color_table, GL_SGIS_generate_mipmap,
    GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp,
    GL_SGIS_texture_lod
OpenGL limits:
    GL_MAX_ATTRIB_STACK_DEPTH = 16
    GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = 16
    GL_MAX_CLIP_PLANES = 6
    GL_MAX_COLOR_MATRIX_STACK_DEPTH = 4
    GL_MAX_ELEMENTS_VERTICES = 3000
    GL_MAX_ELEMENTS_INDICES = 3000
    GL_MAX_EVAL_ORDER = 30
    GL_MAX_LIGHTS = 8
    GL_MAX_LIST_NESTING = 64
    GL_MAX_MODELVIEW_STACK_DEPTH = 32
    GL_MAX_NAME_STACK_DEPTH = 64
    GL_MAX_PIXEL_MAP_TABLE = 256
    GL_MAX_PROJECTION_STACK_DEPTH = 32
    GL_MAX_TEXTURE_STACK_DEPTH = 10
    GL_MAX_TEXTURE_SIZE = 2048
    GL_MAX_3D_TEXTURE_SIZE = 256
    GL_MAX_VIEWPORT_DIMS = 4096, 4096
    GL_ALIASED_LINE_WIDTH_RANGE = 1, 10
    GL_SMOOTH_LINE_WIDTH_RANGE = 1, 10
    GL_ALIASED_POINT_SIZE_RANGE = 1, 2047
    GL_SMOOTH_POINT_SIZE_RANGE = 1, 1
    GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = 1024
    GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB = 3
    GL_MAX_TEXTURE_UNITS_ARB = 6
    GL_MAX_TEXTURE_LOD_BIAS_EXT = 11
    GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 16
    GL_MAX_CONVOLUTION_WIDTH/HEIGHT = 9, 9
    GL_VERTEX_PROGRAM_ARB:
        GL_MAX_PROGRAM_INSTRUCTIONS_ARB = 128
        GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 128
        GL_MAX_PROGRAM_TEMPORARIES_ARB = 12
        GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = 12
        GL_MAX_PROGRAM_PARAMETERS_ARB = 128
        GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB = 192
        GL_MAX_PROGRAM_ATTRIBS_ARB = 16
        GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB = 12
        GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB = 1
        GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 1
        GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB = 128
        GL_MAX_PROGRAM_ENV_PARAMETERS_ARB = 128
        GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = 128
        GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = 128
        GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB = 128
        GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 128
        GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 128
        GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 128

   visual  x  bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav
 id dep cl sp sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------
0x23 24 tc  0 32  0 r  y  .  8  8  8  8  0 24  0  0  0  0  0  0 0 None
0x24 24 tc  0 32  0 r  y  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x25 24 tc  0 32  0 r  y  .  8  8  8  8  0 24  0 16 16 16 16  0 0 Slow
0x26 24 tc  0 32  0 r  y  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x27 24 tc  0 32  0 r  .  .  8  8  8  8  0 24  0  0  0  0  0  0 0 None
0x28 24 tc  0 32  0 r  .  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x29 24 tc  0 32  0 r  .  .  8  8  8  8  0 24  0 16 16 16 16  0 0 Slow
0x2a 24 tc  0 32  0 r  .  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x2b 24 dc  0 32  0 r  y  .  8  8  8  8  0 24  0  0  0  0  0  0 0 None
0x2c 24 dc  0 32  0 r  y  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x2d 24 dc  0 32  0 r  y  .  8  8  8  8  0 24  0 16 16 16 16  0 0 Slow
0x2e 24 dc  0 32  0 r  y  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x2f 24 dc  0 32  0 r  .  .  8  8  8  8  0 24  0  0  0  0  0  0 0 None
0x30 24 dc  0 32  0 r  .  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x31 24 dc  0 32  0 r  .  .  8  8  8  8  0 24  0 16 16 16 16  0 0 Slow
0x32 24 dc  0 32  0 r  .  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x4b 32 tc  0 32  0 r  .  .  8  8  8  8  0  0  0  0  0  0  0  0 0 Ncon
Comment 1 Chris Rankin 2006-08-27 06:13:49 UTC
Created attachment 6721 [details]
Warcraft login screen; OpenGL mode

Notice the artifacts around the mouse cursor and the lines connecting the mouse
cursor to the (flashing) keyboard cursor in the Account Name box, and how both
are connected to the "Remember account name" text field.

Also, the fire on the right of the screen is drawn incorrectly as well.

And most obviously of all, the background picture is missing :-).
Comment 2 Chris Rankin 2006-08-27 06:15:41 UTC
Created attachment 6722 [details]
Warcraft login screen; Direct3D mode

This is what the screen is supposed to look like.
Comment 3 Chris Rankin 2006-08-27 06:16:58 UTC
Could this be a Wine bug? Maybe. But people seem to play Wine quite happily in
OpenGL mode using proprietary graphics drivers.
Comment 4 Ramon Klass 2006-08-27 09:04:11 UTC
The problem is actually a wine bug and has been fixed on wine's git tree for 
now. Users who want to run WoW with 0.9.20 need to apply this patch

http://appdb.winehq.org/commentview.php?iAppId=1922&iVersionId=5606&iThreadId=14505
Comment 5 Chris Rankin 2006-08-27 11:01:46 UTC
Actually, I have already tried applying this patch to Wine. It did not make any
difference.
Comment 6 Chris Rankin 2006-09-06 14:58:30 UTC
Created attachment 6852 [details]
Warcraft login screen; OpenGL mode ignoring vertex weight attribute

Apparently, Warcraft runs ARB vertex programs that use the vertex weight
attribute. However, Mesa does not support GL_ARB_vertex_weight, which means
that it cannot (legally) run these vertex programs.

Mesa has now been changed to ignore the vertex weight attribute, allowing the
vertex programs to compile. (Apparently, Warcraft doesn't actually use the
vertex weight, so compiling is enough.) This attachment shows Warcraft's login
screen now running correctly under OpenGL.

Unfortunately, Mesa does not yet support generic vertex attributes, which means
that Warcraft has to run the vertex programs in software at the moment. This is
why the animations on the login screen do not run smoothly.
Comment 7 Chris Rankin 2006-09-06 14:59:39 UTC

*** This bug has been marked as a duplicate of 8060 ***
Comment 8 Roland Scheidegger 2006-09-06 15:24:44 UTC
(In reply to comment #6)
> Unfortunately, Mesa does not yet support generic vertex attributes, which means
> that Warcraft has to run the vertex programs in software at the moment. This is
> why the animations on the login screen do not run smoothly.
No, Mesa itself supports generic vertex attribs just fine, only the r200 driver
does not.

(In reply to comment #7)
> *** This bug has been marked as a duplicate of 8060 ***
Not really a duplicate, the other bug really was about bogus r200 initialization
(despite being caused by the broken shader).
Comment 9 Chris Rankin 2006-09-06 15:34:42 UTC
(In reply to comment #6)
> No, Mesa itself supports generic vertex attribs just fine, only the r200
> driver does not.

Well that's good news then ;-). So does this mean that (e.g) i965 owners are now
able to run Warcraft with full hardware acceleration?

(In reply to comment #7)
> > *** This bug has been marked as a duplicate of 8060 ***
> Not really a duplicate, the other bug really was about bogus r200
> initialization (despite being caused by the broken shader).

I would have preferred to mark this bug as "related" to #8060, but I thought
that "duplicate" was close enough. Resolving #8060 has certainly had a
remarkable effect on the OpenGL Warcraft login screen. Certainly enough to close
this issue.
Comment 10 Adam Jackson 2009-08-24 12:24:14 UTC
Mass version move, cvs -> git


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.