https://bugs.winehq.org/show_bug.cgi?id=45486
--- Comment #9 from Henri Verbeet hverbeet@gmail.com ---
From the log:
0071:trace:d3d9:d3d9_CreateDevice iface 0x2ed5670, adapter 0, device_type 0x1, focus_window 0x10262, flags 0x20, parameters 0x6bc454, device 0x2e053d8.
...
0071:trace:d3d9:d3d9_device_CreateVertexBuffer iface 0x2f590e0, size 393216, usage 0x208, fvf 0, pool 0x2, buffer 0x35c1288, shared_handle (nil).
...
0071:trace:d3d:buffer_init Not creating a BO because the buffer is not GPU accessible.
...
008a:trace:d3d:wined3d_buffer_load buffer 0x41eeea0. 008a:trace:d3d:wined3d_buffer_get_memory buffer 0x41eeea0, data 0x407fb88, locations WINED3D_LOCATION_SYSMEM. 008a:trace:d3d:context_update_stream_info Load array 0 {0:0x41fdae0}.
...
008a:trace:d3d:context_load_numbered_arrays Loading array 0 [VBO=0].
...
008a:err:d3d:wined3d_debug_callback 0x2f87e48: "GL_INVALID_OPERATION in glVertexAttribPointer(non-VBO array)".
The application draws from a D3DPOOL_SYSTEMMEM vertex buffer. Those aren't normally accessible by the GPU, but the device was created with D3DCREATE_SOFTWARE_VERTEXPROCESSING, so this is supposed to work. Drawing from system memory buffers happens to work in compatibility contexts because a VBO is not required there; In core contexts it fails.