LINUX.ORG.RU

Divinity Original Sin Enhanced Edition @ Mesa r600g

 ,


20

4

Я таки заставил эту игру работать 😊

В процессе была куча сегфолтов и адовые артефакты.

По сути проблемы всего три (конкретно для r600g, в целом для месы – 2):

  1. Контекст OpenGL 4.2. Драйвер r600g рапортует версию 3.3, а движок игры, в свою очередь, работает по принципу segfault driven error handling. Решается просто:
    MESA_GL_VERSION_OVERRIDE=4.2 
    MESA_GLSL_VERSION_OVERRIDE=420
  2. Невалидные шейдеры. Тут сразу:
    • Во-первых, разрабы используют расширение ARB_shading_language_include, которое не поддерживается ничем кроме невидиевской проприетарщины. Но во имя амдшной проприетарщины они запилили в движок fallback режим, в котором это расширение реализуется прямо в движке на коленке, однако включается этот fallback режим (немного) через жопу – они (только) проверяют возвращаемое значение функции glXGetProcAddressARB на nullptr. А glXGetProcAddressARB не обязан возвращать nullptr, кроме адреса надо смотреть еще в список расширений, чего они не делают, а месовская реализация никогда не возвращает nullptr -> segfault driven error handling. Чинится этот баг подстановкой костыля в LD_PRELOAD.
    • Во-вторых, в шейдерах постобработки SMAA/FXAA у них где-то в дебрях кода обложенное ifdef'ами лежит включение очередного расширения, что, блджад, не правильно. После обнаружения этой фигни месовский GLSL компилятор совершенно справедливо прерывает компиляцию, а так как ребята не умеют в обработку ошибок — см. выше. Этот баг обходится с помощью месовского механизма подмены шейдеров в рантайме и костыля-решейпера их кода шейдеров. файла drirc, в который нужно добавить
      <application name='Divinity Original Sin Enhanced Edition' executable='EoCApp'>
          <option name='allow_glsl_extension_directive_midshader' value='true' />
      </application>
  3. Графические артефакты. У них в движке (насколько я понял) есть две принципиально разные ветки кода/рендеринга, которые разделяются по (внимание!) строке в GL_VENDOR: если в этой строке что угодно кроме "ATI Technologies Inc.", то активируется невидиевская ветвь, что на месе приводит к аду, если же доставить в LD_PRELOAD еще один костыль с этой строкой, то рендеринг становится мягким и шелковистым.

TL;DR: Gentoo, дефолтные кеды, ШГ, панелька с автоскрытием.

>>> Просмотр (1600x900, 1682 Kb)

★★★★★

Проверено: JB ()

Ответ на: комментарий от Novell-ch

Блин, может ОП как-то переформулировать? Тут, похоже, половина треда думает, что это костыли конкретно для AMD...

Stil ★★★★★ ()
Ответ на: комментарий от Stil

это у них условный рефлекс на слова «амд» и «радеон»

grem ★★★★★ ()
Ответ на: комментарий от Stil

Да пусть думают, что взять с блаженных. Есть небольшие фичреквесты, например запилить что бы строка вендора бралась еще и из перемененной окружения, запилить еще оверайт Renderer name, короче что бы все основные геты можно было менять в рантайме. и еще я далеко не опегл гуру, меня чуть напрягает что вайн не может в опенгл игры, там рейдж или вульф\дум новый, хотя версии опенгл все подходит, я как-то баловался с сорсами вайна и менял эту функцию(насколько помню), точне attribs значания, https://github.com/wine-mirror/wine/blob/47cf3fe36d4f5a2f83c0d48ee763c256cd60...

и мне удалось избавиться от FATAL ERROR: wglCreateContextAttribsARB failed, но другие проблемы появились дальше(шейдеры отказались компилица), может и в следствии первой. Короче может опытный взгляд сможет помочь?

Novell-ch ★★★★★ ()
Ответ на: комментарий от KillTheCat

не играл в первое издание. Но бои в сабже меня очень порадовали.

Medar ★★★★★ ()
Ответ на: комментарий от Novell-ch

не может в опенгл игры ... дум новый

Я не претендую на истину, но читал что вайн вполне успешно пускал новый дум когда тот был в альфе. В релизной версии дум запаковали защитой денуво в которую вино не может, из за того и не работает. Свидетельством этого является платиновый статут альфы на винодб.

https://bugs.winehq.org/show_bug.cgi?id=40623

Behem0th ★★★★★ ()
Последнее исправление: Behem0th (всего исправлений: 1)
Ответ на: комментарий от Behem0th

все верно, но новые игры от ид не хотят идти в вайне, с девуй или без, даже те которым не нужен опенгл 4, а зная как вайновцы любят точить по нвидию, мож там реально пустяк подправить и все заработает, можно конечно подумать что они не осилили коре профили, но вроде была куча патчей для поддержки коре, с другой стороны мож ид не осилило и вайн тут непричем.

Novell-ch ★★★★★ ()
Ответ на: комментарий от Novell-ch

вайн не может в опенгл игры

в смысле не может? я в warcraft 3 играл (через opengl) и Rage тоже запускал (но в нём глюки были в плане скорости прорисовки окружения, не всегда быстро подгружал)

grem ★★★★★ ()
Ответ на: комментарий от Novell-ch

Есть небольшие фичреквесты, например запилить что бы строка вендора бралась еще и из перемененной окружения, запилить еще оверайт Renderer name

Да не вопрос:

#define _GNU_SOURCE
#include <GL/gl.h>
#include <stdlib.h>
#include <string.h>
#include <dlfcn.h>

char* vendor = NULL;
char* renderer = NULL;
const GLubyte* (*o_glGetString)(GLenum name);
 
void _init(void)
{
    const char* env_vendor = getenv("HMESA_GL_VENDOR_OVERRIDE");
    const char* env_renderer = getenv("HMESA_GL_RENDERER_OVERRIDE");
    if (env_vendor) {
        const size_t vendor_len = strlen(env_vendor) + 1;
        vendor = malloc(vendor_len);
        memcpy(vendor, env_vendor, vendor_len);
    }
    if (env_renderer) {
        const size_t renderer_len = strlen(env_renderer) + 1;
        renderer = malloc(renderer_len);
        memcpy(renderer, env_renderer, renderer_len);
    }
    o_glGetString = dlsym(RTLD_NEXT, "glGetString");
}

const GLubyte* glGetString(GLenum name)
{
    if ((name == GL_VENDOR) && vendor)
        return (const GLubyte*) vendor;
    if ((name == GL_RENDERER) && renderer)
        return (const GLubyte*) renderer;
    return o_glGetString(name);
}
 [ ~/Code/tmp ] $ gcc -Wall -fPIC -DPIC -c mesa_ovverride_vnd_rndr.c 
 [ ~/Code/tmp ] $ ld -shared -o ./mesa_ovverride_vnd_rndr.so ./mesa_ovverride_vnd_rndr.o -ldl -lGL
 [ ~/Code/tmp ] $ HMESA_GL_VENDOR_OVERRIDE="Awesome Vendor" HMESA_GL_RENDERER_OVERRIDE="Awesome Renderer" LD_PRELOAD="./mesa_ovverride_vnd_rndr.so" glxinfo | grep -P 'OpenGL [vr]\w+'
OpenGL vendor string: Awesome Vendor
OpenGL renderer string: Awesome Renderer
OpenGL version string: 3.0 Mesa 12.1.0-devel (git-3e1ad84)
 [ ~/Code/tmp ] $ 

короче что бы все основные геты можно было менять в рантайме.

На самом деле — вендор и рендерер — чуть-ли не единственные исключения, а так меса позволяет переопределить дофига чего

http://www.mesa3d.org/envvars.html

http://www.mesa3d.org/shading.html#envvars

и еще я далеко не опегл гуру

Я тоже :)

меня чуть напрягает что вайн не может в опенгл игры, там рейдж или вульф\дум новый, хотя версии опенгл все подходит, я как-то баловался с сорсами вайна и менял эту функцию(насколько помню), точне attribs значания, https://github.com/wine-mirror/wine/blob/47cf3fe36d4f5a2f83c0d48ee763c256cd60...
и мне удалось избавиться от FATAL ERROR: wglCreateContextAttribsARB failed, но другие проблемы появились дальше(шейдеры отказались компилица), может и в следствии первой. Короче может опытный взгляд сможет помочь?

Я не знаю вайна (и не использую) и стараюсь держаться от винды как можно дальше. Но, судя по доке, эта функция очень похожа на EGL'овскую eglCreateContext, а там атрибуты — это такой сишный массив «имя, значение» (например). Менять вслепую бесполезно, лучше натыкай в эту функцию побольше дебага, что бы каждый элемент attrib уходил в stderr, и смотри с какой комбинацией всё разваливается. Потом надо будет понять «почему» с этой комбинацией всё разваливается, а потом, да, менять.

Stil ★★★★★ ()
Ответ на: комментарий от Novell-ch

но новые игры от ид не хотят идти в вайне, с девуй или без,

Про остальные не в курсе, но выше я писал что последний дум до того как прикрутили денуво он имел платиновый статус.

они не осилили коре профили,

Не оно? https://bugs.winehq.org/show_bug.cgi?id=38648

Behem0th ★★★★★ ()
Ответ на: комментарий от Novell-ch

забыл, что разговор про mesa. с ней не пробовал.

grem ★★★★★ ()
Ответ на: комментарий от Behem0th

то что в том баге обходится спокойно через указание 5 шейдеров в реестре и MESA_GL_VERSION_OVERRIDE=4.3COMPAT, но идшным играм это не помогает

Novell-ch ★★★★★ ()
Ответ на: комментарий от Novell-ch

но идшным играм это не помогает

Не понимаю про какие игры ты говоришь. Про последний дум я писал уже, посмотрел на винодб статус рейджа - платиновый, у вульфенштайна последнего тоже платиновый статус.

Behem0th ★★★★★ ()
Ответ на: комментарий от Behem0th

Скорее всего проблема при использовании mesa, а не проприетарных драйверов, а для последних статус для игр платиновый.

grem ★★★★★ ()
Ответ на: комментарий от Behem0th

на месе не работает, пусть там хоть радиевый статус, блобы в расчет не берем.

Novell-ch ★★★★★ ()
Ответ на: комментарий от Novell-ch

Ну так если Mesa не может в compatibility profile, а какие-то игры его реально требуют, то с этим ничего не сделаешь

Khnazile ★★★★ ()
Ответ на: комментарий от Behem0th

Ну и я о нём, но статус вряд ли основан на открытых драйверах.

grem ★★★★★ ()
Ответ на: комментарий от KillTheCat

Лучше чем в первом издании? Там чары сильно перекачивались и игра становилась все более изи.

Перепрошел на высокой сложности EE - то же самое. Примерно с второй половины игры нет никаких проблем, тем более что уже знаешь как раскачивать персонажей. С другой стороны, при первом прохождении сильно доставила, особенно Бореас.

ptarh ★★★★★ ()
Ответ на: комментарий от Novell-ch

Чет я тупил вчера. Я понял твою мысль, я почему то вырывал твои слова «не хотят идти под вайном» из контекста месы.

Behem0th ★★★★★ ()
Ответ на: комментарий от Novell-ch

Попробуй, например, пересобрать вайн с этим и посмотри где игра сдохнет.

Stil ★★★★★ ()
Ответ на: комментарий от Stil

попробуй, вчера мучал gpucapsviewer и походу он тож не очень доволен месой, но все опенг3 демки он грузит, а вот 4 не пускает стандартный +wgl вайна показвает

trace:wgl:X11DRV_wglCreateContextAttribsARB (0x10043 (nil) 0x20fe5c4)
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2091 0x4
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2092 0
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x9126 0x2
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x10043 -> (nil)
trace:wgl:X11DRV_wglCreateContextAttribsARB (0x10043 (nil) 0x20fe5e0)
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2091 0x4
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2092 0
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x10043 -> 0x2133f8

насполько я понял 0x9126 0x2 и есть
WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB
а меса наверно сможет только
WGL_CONTEXT_CORE_PROFILE_BIT_ARB

Novell-ch ★★★★★ ()
Ответ на: комментарий от Novell-ch

Он 32х битный, а у меня nomultilib.

насполько я понял 0x9126 0x2 и есть
WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB

Почти

trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2091 0x4

WGL_CONTEXT_MAJOR_VERSION_ARB == 4

trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2092 0

WGL_CONTEXT_MINOR_VERSION_ARB == 0

trace:wgl:X11DRV_wglCreateContextAttribsARB 0x9126 0x2

GLX_CONTEXT_PROFILE_MASK_ARB == GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB

...Какого черта там GLX? o_O

а меса наверно сможет только
WGL_CONTEXT_CORE_PROFILE_BIT_ARB

Это звучит очень странно. Но похоже на правду, попробую собрать какую-нибудь EGL демку...

Stil ★★★★★ ()
Последнее исправление: Stil (всего исправлений: 1)
Ответ на: комментарий от Stil

с патчем

err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x50056): unexpected iPixelFormat(0) vs nFormats(759), returns FALSE
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
 >>> wglCreateContextAttribsARB -- attributes found
     WGL_CONTEXT_MAJOR_VERSION_ARB : 3
Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_TEXTURE_BUFFER_SIZE)
fixme:nvapi:unimplemented_stub function 0xe3640a56 is unimplemented!
fixme:nvapi:unimplemented_stub function 0x5f608315 is unimplemented!
fixme:nvapi:unimplemented_stub function 0xda141340 is unimplemented!
fixme:nvcuda:load_functions Wine cannot find the libcuda library, CUDA support is disabled.
err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x50059): unexpected iPixelFormat(0) vs nFormats(759), returns FALSE
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
 >>> wglCreateContextAttribsARB -- attributes found
     WGL_CONTEXT_MAJOR_VERSION_ARB : 3
Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_GEOMETRY_UNIFORM_COMPONENTS)
fixme:nvapi:unimplemented_stub function 0x42aea16a is unimplemented!
fixme:nvapi:unimplemented_stub function 0xe3640a56 is unimplemented!
fixme:nvapi:unimplemented_stub function 0xe3640a56 is unimplemented!
fixme:nvapi:unimplemented_stub function 0xe3640a56 is unimplemented!
fixme:nvapi:unimplemented_stub function 0xe3640a56 is unimplemented!
 >>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB
 >>> wglCreateContextAttribsARB -- attributes found
     WGL_CONTEXT_MAJOR_VERSION_ARB : 4
Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS)
Mesa: 4 similar GL_INVALID_ENUM errors
Mesa: User error: GL_INVALID_ENUM in CreateShader(GL_TESS_CONTROL_SHADER)
Mesa: User error: GL_INVALID_VALUE in glShaderSourceARB
Mesa: User error: GL_INVALID_VALUE in glCompileShader
Mesa: User error: GL_INVALID_VALUE in glGetShaderiv
Mesa: User error: GL_INVALID_VALUE in glGetShaderiv
fixme:nvapi:unimplemented_stub function 0xe3640a56 is unimplemented!
fixme:module:load_library unsupported flag(s) used (flags: 0x00000800)
fixme:ver:GetCurrentPackageId (0x33fdb4 (nil)): stub
rage докачивается

Novell-ch ★★★★★ ()
Ответ на: комментарий от Novell-ch

>>> wglCreateContextAttribsARB
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)

Слушай, тут проблема не в атрибутах и не в copability. Что-то другое. Надо еще дебаг-принтэфоф натыкать.

Stil ★★★★★ ()
Ответ на: комментарий от Stil

идешная раджа говорит такое

trace:wgl:wglChoosePixelFormat depth mismatch for iPixelFormat=639
trace:wgl:wglChoosePixelFormat returning 92
trace:wgl:set_pixel_format (0x60052,92)
trace:wgl:get_pixel_format Returning fmt_id=0xaf for iPixelFormat=92
trace:wgl:set_win_format created GL drawable 6400087 for win 0x401b6 fbconfig 0xaf visual id 0x305 drawable type 0x7
trace:wgl:glxdrv_wglCreateContext 0x60052 -> 0xcdd40a8
trace:wgl:glxdrv_wglMakeCurrent (0x60052,0xcdd40a8)
trace:wgl:glxdrv_wglMakeCurrent hdc 0x60052 drawable 6400087 fmt 0xcdd7350 ctx 0xf0f581f0 fbconfig 0xaf visual id 0x305 drawable type 0x7
trace:wgl:glxdrv_wglMakeCurrent 0x60052,0xcdd40a8 returning 1
trace:wgl:wglGetProcAddress returning wglGetExtensionsStringARB -> 0x7a8aad90
trace:wgl:X11DRV_wglGetExtensionsStringARB () returning "WGL_ARB_create_context WGL_ARB_create_context_profile WGL_ARB_pixel_format_float WGL_ATI_pixel_format_float WGL_ARB_extensions_string WGL_ARB_make_current_read WGL_ARB_multisample WGL_ARB_pbuffer WGL_ARB_pixel_format WGL_ARB_render_texture WGL_NV_render_texture_rectangle WGL_EXT_extensions_string WGL_EXT_swap_control WGL_EXT_framebuffer_sRGB WGL_EXT_pixel_format_packed_float WGL_WINE_pixel_format_passthrough WGL_WINE_query_renderer"
trace:wgl:wglGetProcAddress returning wglSwapIntervalEXT -> 0x7a8aae20
trace:wgl:wglGetProcAddress returning wglGetPixelFormatAttribivARB -> 0x7a8aa9e0
trace:wgl:wglGetProcAddress returning wglGetPixelFormatAttribfvARB -> 0x7a8aaa70
trace:wgl:wglGetProcAddress returning wglChoosePixelFormatARB -> 0x7a8aa950
trace:wgl:glxdrv_wglMakeCurrent ((nil),(nil))
trace:wgl:glxdrv_wglDeleteContext (0xcdd40a8)
trace:wgl:X11DRV_wglChoosePixelFormatARB (0x80052, 0x4e086d4, (nil), 1, 0x157944c, 0x4e08758): hackish
trace:wgl:ConvertAttribWGLtoGLX pAttr[0] = 2010
trace:wgl:ConvertAttribWGLtoGLX pAttr[1] = WGL_SUPPORT_OPENGL_ARB: 1
trace:wgl:ConvertAttribWGLtoGLX pAttr[2] = 2015
trace:wgl:ConvertAttribWGLtoGLX pAttr[3] = GLX_RED_SIZE: 8
trace:wgl:ConvertAttribWGLtoGLX pAttr[4] = 2017
trace:wgl:ConvertAttribWGLtoGLX pAttr[5] = GLX_GREEN_SIZE: 8
trace:wgl:ConvertAttribWGLtoGLX pAttr[6] = 2019
trace:wgl:ConvertAttribWGLtoGLX pAttr[7] = GLX_BLUE_SIZE: 8
trace:wgl:ConvertAttribWGLtoGLX pAttr[8] = 201b
trace:wgl:ConvertAttribWGLtoGLX pAttr[9] = GLX_ALPHA_SIZE: 8
trace:wgl:ConvertAttribWGLtoGLX pAttr[10] = 2022
trace:wgl:ConvertAttribWGLtoGLX pAttr[11] = GLX_DEPTH_SIZE: 24
trace:wgl:ConvertAttribWGLtoGLX pAttr[12] = 2023
trace:wgl:ConvertAttribWGLtoGLX pAttr[13] = GLX_STENCIL_SIZE: 8
trace:wgl:ConvertAttribWGLtoGLX pAttr[14] = 2011
trace:wgl:ConvertAttribWGLtoGLX pAttr[15] = GLX_DOUBLEBUFFER: 1
trace:wgl:ConvertAttribWGLtoGLX pAttr[?] = GLX_DRAWABLE_TYPE: 0xffffffff
trace:wgl:ConvertAttribWGLtoGLX pAttr[?] = GLX_RENDER_TYPE: 0xffffffff
trace:wgl:X11DRV_wglChoosePixelFormatARB at 1/40 found FBCONFIG_ID 0x7f (29)
trace:wgl:glxdrv_wglDescribePixelFormat (0x80052,29,40,0x1579450)
trace:wgl:get_pixel_format Returning fmt_id=0x7f for iPixelFormat=29
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - size / version : 40 / 1
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - dwFlags : PFD_DOUBLEBUFFER PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL 
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - iPixelType : PFD_TYPE_RGBA
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Color   : 32
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Red     : 8
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Green   : 8
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Blue    : 8
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Alpha   : 8
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Accum   : 0
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Depth   : 24
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Stencil : 8
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Aux     : 0
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - iLayerType : PFD_MAIN_PLANE
trace:wgl:set_pixel_format (0x80052,29)
trace:wgl:get_pixel_format Returning fmt_id=0x7f for iPixelFormat=29
trace:wgl:set_win_format created GL drawable 6400092 for win 0x501b6 fbconfig 0x7f visual id 0x21 drawable type 0x7
trace:wgl:glxdrv_wglCreateContext 0x80052 -> 0xcdd40a8
trace:wgl:glxdrv_wglMakeCurrent (0x80052,0xcdd40a8)
trace:wgl:glxdrv_wglMakeCurrent hdc 0x80052 drawable 6400092 fmt 0xcdd6f60 ctx 0xf0f5bbe0 fbconfig 0x7f visual id 0x21 drawable type 0x7
trace:wgl:glxdrv_wglMakeCurrent 0x80052,0xcdd40a8 returning 1
trace:wgl:wglGetProcAddress returning wglCreateContextAttribsARB -> 0x7a8a8a00
 >>> wglCreateContextAttribsARB
trace:wgl:X11DRV_wglCreateContextAttribsARB (0x80052 (nil) 0x4e08734)
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2091 0x3
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2092 0x2
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2094 0
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x9126 0x2
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x80052 -> (nil)
trace:wgl:glxdrv_wglMakeCurrent ((nil),(nil))
trace:wgl:glxdrv_wglDeleteContext (0xcdd40a8)
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:imm:ImmReleaseContext ((nil), (nil)): stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
Setting breakpad minidump AppID = 9200
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198046307534 [API loaded no]

Novell-ch ★★★★★ ()
Ответ на: комментарий от ptarh

С другой стороны, при первом прохождении сильно доставила, особенно Бореас.

А я зимнюю локу проходил последней, не нашел домик ведьмы.
Причем по началу очень хардкорно, бегают 2 нищеброда которые могут упасть от пары элементалей, а потом столько активности и резистов что даже с контролем не заморачиваешься. Надеюсь в DoS 2 это исправят.

KillTheCat ★★★★★ ()

Спасибо! Оно завелось и работает! Нужна последняя mesa-12.0.1 У меня чтобы тени работали в настройках графики нужно ставить пресет «Ultra»

yaruna ()
Ответ на: комментарий от Stil

ну как-то так

trace:wgl:X11DRV_wglGetExtensionsStringARB () returning "WGL_ARB_create_context WGL_ARB_create_context_profile WGL_ARB_pixel_format_float WGL_ATI_pixel_format_float WGL_ARB_extensions_string WGL_ARB_make_current_read WGL_ARB_multisample WGL_ARB_pbuffer WGL_ARB_pixel_format WGL_ARB_render_texture WGL_NV_render_texture_rectangle WGL_EXT_extensions_string WGL_EXT_swap_control WGL_EXT_framebuffer_sRGB WGL_EXT_pixel_format_packed_float WGL_WINE_pixel_format_passthrough WGL_WINE_query_renderer"
trace:wgl:wglGetProcAddress returning wglSwapIntervalEXT -> 0x7a8aaed0
trace:wgl:wglGetProcAddress returning wglGetPixelFormatAttribivARB -> 0x7a8aaa90
trace:wgl:wglGetProcAddress returning wglGetPixelFormatAttribfvARB -> 0x7a8aab20
trace:wgl:wglGetProcAddress returning wglChoosePixelFormatARB -> 0x7a8aaa00
trace:wgl:glxdrv_wglMakeCurrent ((nil),(nil))
trace:wgl:glxdrv_wglDeleteContext (0xcdd40a8)
trace:wgl:X11DRV_wglChoosePixelFormatARB (0x80052, 0x4e086d4, (nil), 1, 0x157944c, 0x4e08758): hackish
trace:wgl:ConvertAttribWGLtoGLX pAttr[0] = 2010
trace:wgl:ConvertAttribWGLtoGLX pAttr[1] = WGL_SUPPORT_OPENGL_ARB: 1
trace:wgl:ConvertAttribWGLtoGLX pAttr[2] = 2015
trace:wgl:ConvertAttribWGLtoGLX pAttr[3] = GLX_RED_SIZE: 8
trace:wgl:ConvertAttribWGLtoGLX pAttr[4] = 2017
trace:wgl:ConvertAttribWGLtoGLX pAttr[5] = GLX_GREEN_SIZE: 8
trace:wgl:ConvertAttribWGLtoGLX pAttr[6] = 2019
trace:wgl:ConvertAttribWGLtoGLX pAttr[7] = GLX_BLUE_SIZE: 8
trace:wgl:ConvertAttribWGLtoGLX pAttr[8] = 201b
trace:wgl:ConvertAttribWGLtoGLX pAttr[9] = GLX_ALPHA_SIZE: 8
trace:wgl:ConvertAttribWGLtoGLX pAttr[10] = 2022
trace:wgl:ConvertAttribWGLtoGLX pAttr[11] = GLX_DEPTH_SIZE: 24
trace:wgl:ConvertAttribWGLtoGLX pAttr[12] = 2023
trace:wgl:ConvertAttribWGLtoGLX pAttr[13] = GLX_STENCIL_SIZE: 8
trace:wgl:ConvertAttribWGLtoGLX pAttr[14] = 2011
trace:wgl:ConvertAttribWGLtoGLX pAttr[15] = GLX_DOUBLEBUFFER: 1
trace:wgl:ConvertAttribWGLtoGLX pAttr[?] = GLX_DRAWABLE_TYPE: 0xffffffff
trace:wgl:ConvertAttribWGLtoGLX pAttr[?] = GLX_RENDER_TYPE: 0xffffffff
trace:wgl:X11DRV_wglChoosePixelFormatARB at 1/40 found FBCONFIG_ID 0x7f (29)
trace:wgl:glxdrv_wglDescribePixelFormat (0x80052,29,40,0x1579450)
trace:wgl:get_pixel_format Returning fmt_id=0x7f for iPixelFormat=29
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - size / version : 40 / 1
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - dwFlags : PFD_DOUBLEBUFFER PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL 
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - iPixelType : PFD_TYPE_RGBA
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Color   : 32
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Red     : 8
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Green   : 8
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Blue    : 8
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Alpha   : 8
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Accum   : 0
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Depth   : 24
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Stencil : 8
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - Aux     : 0
trace:wgl:dump_PIXELFORMATDESCRIPTOR   - iLayerType : PFD_MAIN_PLANE
trace:wgl:set_pixel_format (0x80052,29)
trace:wgl:get_pixel_format Returning fmt_id=0x7f for iPixelFormat=29
trace:wgl:set_win_format created GL drawable 6000092 for win 0x201e6 fbconfig 0x7f visual id 0x21 drawable type 0x7
trace:wgl:glxdrv_wglCreateContext 0x80052 -> 0xcdd40a8
trace:wgl:glxdrv_wglMakeCurrent (0x80052,0xcdd40a8)
trace:wgl:glxdrv_wglMakeCurrent hdc 0x80052 drawable 6000092 fmt 0xcdd6f80 ctx 0xf0e5bbe0 fbconfig 0x7f visual id 0x21 drawable type 0x7
trace:wgl:glxdrv_wglMakeCurrent 0x80052,0xcdd40a8 returning 1
trace:wgl:wglGetProcAddress returning wglCreateContextAttribsARB -> 0x7a8a8a00
 >>> wglCreateContextAttribsARB
trace:wgl:X11DRV_wglCreateContextAttribsARB (0x80052 (nil) 0x4e08734)
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2091 0x3
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2092 0x2
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2094 0
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x9126 0x2
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x80052 -> (nil)
 >>> wglCreateContextAttribsARB -- fail @ "(drv_ctx = funcs->ext.p_wglCreateContextAttribsARB(hdc, share_ptr ? share_ptr->u.context->drv_ctx : NULL, attribs ))"
trace:wgl:glxdrv_wglMakeCurrent ((nil),(nil))
trace:wgl:glxdrv_wglDeleteContext (0xcdd40a8)
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:imm:ImmReleaseContext ((nil), (nil)): stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:advapi:EventUnregister deadbeef: stub
Setting breakpad minidump AppID = 9200
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198046307534 [API loaded no]

Novell-ch ★★★★★ ()
Ответ на: комментарий от Stil
wine ./Rage.exe 
fixme:winediag:start_process Wine Staging 1.9.13 is a testing version containing experimental patches.
fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub
fixme:process:SetProcessDEPPolicy (1): stub
fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub
fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub
fixme:heap:RtlSetHeapInformation 0x110000 0 0x2c3e9d4 4 stub
Setting breakpad minidump AppID = 9200
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198015193237 [API loaded no]
ATTENTION: default value of option allow_glsl_extension_directive_midshader overridden by environment.
ATTENTION: default value of option glsl_zero_init overridden by environment.
ATTENTION: option value of option allow_glsl_extension_directive_midshader ignored.
ATTENTION: default value of option vblank_mode overridden by environment.
 >>> create_glxcontext(0x7d0370b0, 0x7544cd0, (nil))
 >>> create_glxcontext -- context->vis
 >>> create_glxcontext -- returning 0xf1402268 >>> create_glxcontext(0x7d0370b0, 0x75445f0, (nil))
 >>> create_glxcontext -- context->vis
 >>> create_glxcontext -- returning 0xf14040b8 >>> wglCreateContextAttribsARB
 >>> X11DRV_wglCreateContextAttribsARB
 >>> create_glxcontext(0x7d0370b0, 0x75442d0, (nil))
 >>> create_glxcontext -- context->gl3_context w/i attrs
 >>> create_glxcontext -- returning (nil) >>> X11DRV_wglCreateContextAttribsARB -- fail. And we need to go deeper.
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
 >>> wglCreateContextAttribsARB -- fail @ "(drv_ctx = funcs->ext.p_wglCreateContextAttribsARB(hdc, share_ptr ? share_ptr->u.context->drv_ctx : NULL, attribs ))"

Novell-ch ★★★★★ ()
Ответ на: комментарий от Stil

ну походу приходим к тому с чего начали, невозможность создать

X11DRV_wglCreateContextAttribsARB 0x9126 0x2

trace:wgl:get_pixel_format Returning fmt_id=0x7f for iPixelFormat=29
trace:wgl:set_win_format created GL drawable 1a0008e for win 0x20064 fbconfig 0x7f visual id 0x21 drawable type 0x7
 >>> create_glxcontext(0x7e0910b0, 0x75445f0, (nil))
     create_glxcontext -- context->vis
     create_glxcontext -- returning 0xf1404050
trace:wgl:glxdrv_wglCreateContext 0x7004d -> 0x75445f0
trace:wgl:glxdrv_wglMakeCurrent (0x7004d,0x75445f0)
trace:wgl:glxdrv_wglMakeCurrent hdc 0x7004d drawable 1a0008e fmt 0x7547bc0 ctx 0xf1404050 fbconfig 0x7f visual id 0x21 drawable type 0x7
trace:wgl:glxdrv_wglMakeCurrent 0x7004d,0x75445f0 returning 1
trace:wgl:wglGetProcAddress returning wglCreateContextAttribsARB -> 0x7a8a8a00
 >>> wglCreateContextAttribsARB(0x7004d, (nil), 0x2c38734)
trace:wgl:X11DRV_wglCreateContextAttribsARB (0x7004d (nil) 0x2c38734)
 >>> X11DRV_wglCreateContextAttribsARB
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2091 0x3
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2092 0x2
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x2094 0
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x9126 0x2
 >>> create_glxcontext(0x7e0910b0, 0x75442d0, (nil))
     create_glxcontext -- context->gl3_context w/i attrs
 >>> GLXErrorHandler -- GLXBadFBConfig     create_glxcontext -- returning (nil)
err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
trace:wgl:X11DRV_wglCreateContextAttribsARB 0x7004d -> (nil)
 >>> wglCreateContextAttribsARB -- fail @ "(drv_ctx = funcs->ext.p_wglCreateContextAttribsARB(hdc, share_ptr ? share_ptr->u.context->drv_ctx : NULL, attribs ))"
trace:wgl:glxdrv_wglMakeCurrent ((nil),(nil))
trace:wgl:glxdrv_wglDeleteContext (0x75445f0)

Novell-ch ★★★★★ ()
Ответ на: комментарий от Novell-ch

Да, но теперь понятно, что ошибка приходит из месы.

https://www.opengl.org/registry/specs/ARB/glx_create_context.txt

* If <config> does not support compatible OpenGL contexts providing the requested API major and minor version, forward-compatible flag, and debug context flag, GLXBadFBConfig is generated.

Ставлю на это. Попозже соберу компиляберную демку, если на чистом GLX проявится, то можно будет идти во всякие #dri-devel или bugs.freedesktop, если нет — смотреть как устанавливает fbconfig wine.

Stil ★★★★★ ()
Ответ на: комментарий от Novell-ch

Ну наверное потому что у тебя амд, а не штеуд?)

mazdai ★★ ()
Ответ на: комментарий от Novell-ch

Коротко — всё грустно

В процессе дебага я дошел до glXCreateContextAttribsARB#104 и получил ошибку от xcb. Спускаться ниже — в иксы — будет совсем грустно, да и смысла нет.

Можно попробовать вырубить этот атрибут на уровне вайна, но это будет UB — случиться может что угодно от «взлёта» игры или сегфолта на старте, до картин Дали вместо графона.

Stil ★★★★★ ()
Ответ на: комментарий от Novell-ch

Вот патч, который уберёт profile mask из списка атрибутов. Ещё можно попробовать запускать с MESA_GL_VERSION_OVERRIDE=3.2COMPAT.

diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c
index 932b217..0b218bc 100644                                                                                                                                
--- a/dlls/opengl32/wgl.c                                                                                                                                    
+++ b/dlls/opengl32/wgl.c                                                                                                                                    
@@ -261,6 +261,31 @@ BOOL WINAPI wglMakeCurrent(HDC hdc, HGLRC hglrc)                                                                                        
     return ret;                                                                                                                                             
 }                                                                                                                                                           
 
+static
+const int* remove_profile_mask(const int *attribs)
+{
+    int* ret = NULL;
+    int i = 0;
+    int j = 0;
+    int attr_num = 0;
+    int profile_mask = 0;
+    for (i = 0; attribs[i] != NULL; i += 2) {
+        if (attribs[i] == WGL_CONTEXT_PROFILE_MASK_ARB)
+            profile_mask = 1;
+        ++attr_num;
+    }
+    if (profile_mask == 0) return attribs;
+    ret = calloc(attr_num*2 - 1, sizeof(int));
+    for (i = 0; attribs[i] != NULL; i += 2) {
+        if (attribs[i] != WGL_CONTEXT_PROFILE_MASK_ARB) {
+            ret[j] = attribs[i];
+            ret[j+1] = attribs[i+1];
+            j += 2;
+        }
+    }
+    return ret;
+}
+
 /***********************************************************************
  *             wglCreateContextAttribsARB
  *
@@ -274,6 +299,8 @@ HGLRC WINAPI wglCreateContextAttribsARB( HDC hdc, HGLRC share, const int *attrib
     struct opengl_context *context;
     struct opengl_funcs *funcs = get_dc_funcs( hdc );
 
+    attribs = remove_profile_mask(attribs);
+
     if (!funcs || !funcs->ext.p_wglCreateContextAttribsARB) return 0;
     if (share && !(share_ptr = get_handle_ptr( share, HANDLE_CONTEXT ))) return 0;
     if ((drv_ctx = funcs->ext.p_wglCreateContextAttribsARB( hdc,
Stil ★★★★★ ()
Ответ на: комментарий от Stil

спасибо потестю, а компат я с вайном всегда использую, без него не будет dx11, да и количество ругани на опенгл игры падает.

Novell-ch ★★★★★ ()
Ответ на: комментарий от Stil

да, теперь пошло дальше, то про что я говорил раньше

warn:wgl:wglGetProcAddress Extension GL_INTEL_map_texture required for glSyncTextureINTEL not supported

ну и сама игра ругается что не может шейдер скомпилить

0.0 seconds to read 13304k table header
Resources skipped by layer tests: 0
Load 481 resources using 492 of 74696 total resource files, 0 streamed
While compiling vertex program binkyuv from binkyuv
-----------------
  1: #version 150
  2: 
  3: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
  4: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
  5: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
  6: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
  7: 
  8: float dot4 ( vec4 a, vec4 b ) { return dot( a, b ); }
  9: float dot4 ( vec2 a, vec4 b ) { return dot( vec4( a, 0, 1 ), b ); }
 10: uniform vec4 _va_ [4];
 11: 
 12: in vec4 in_Position;
 13: in vec2 in_TexCoord;
 14: 
 15: out vec4 gl_Position;
 16: out vec4 vofi_TexCoord0;
 17: 
 18: void main() {
 19:    gl_Position.x = dot4( in_Position, _va_[0 ] );
 20:    gl_Position.y = dot4( in_Position, _va_[1 ] );
 21:    gl_Position.z = dot4( in_Position, _va_[2 ] );
 22:    gl_Position.w = dot4( in_Position, _va_[3 ] );
 23:    vofi_TexCoord0 = vec4( in_TexCoord.x, in_TexCoord.y, 0, 0 );
 24: }
-----------------
0:15(10): error: `gl_Position' redeclared

Rage.exe @ 0x0068f0bc(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x006a96b4(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x006a983c(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x00586e67(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x00586eab(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x0053e6fe(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x0062c621(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x00481aa4(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x00481c81(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x0048716e(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x00487be8(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x0043a720(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x005ec01f(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
Rage.exe @ 0x006aa4b9(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
ntdll.dll @ 0x7bc88350(  ) +  bytes () : call_thread_func_wrapper(  )
ntdll.dll @ 0x7bc8b64d(  ) +  bytes () : call_thread_func(  )
ntdll.dll @ 0x7bc8832e(  ) +  bytes () : RtlRaiseException(  )
ntdll.dll @ 0x7bc93348(  ) +  bytes () : ** UNKNOWN **( ** FUNC_PARAM_ERROR ** )
** MODULE_NAME_ERROR ** @ 0xf757bf12(  ) +  bytes () : start_thread(  )
ERROR: Failed to compile render prog binkyuv from binkyuv

Novell-ch ★★★★★ ()
Ответ на: комментарий от Novell-ch

Extension GL_INTEL_map_texture required for glSyncTextureINTEL not supported

Ну тут вариантов не особо много :)

0:15(10): error: `gl_Position' redeclared

Раз.

И два:

 [ ~/Code/RAGE ] $ ~/Code/mesa/src/compiler/glsl_compiler --version 150 ./binkyuv.vert 
Info log for ./binkyuv.vert:
0:15(10): error: `gl_Position' redeclared

 [ ~/Code/RAGE ] $ ~/Code/mesa/src/compiler/glsl_compiler --version 150 ./binkyuv_f.vert 
 [ ~/Code/RAGE ] $ diff ./binkyuv.vert ./binkyuv_f.vert 
15c15
< out vec4 gl_Position;
---
> //out vec4 gl_Position;
 [ ~/Code/RAGE ] $ 
Сдампи шейдеры.

Stil ★★★★★ ()
Ответ на: комментарий от Stil

да я уже сделал, запускал, дампил шейдер, исправлял его, и так 100500 раз пока все шейдеры не исправились, в итоге, все работает, конечно не так как хотелось бы, может GL_INTEL_map_texture дает о себе знать, но сама суть что возможно запусить меня радует.

https://youtu.be/H54RtitTR9Q

Novell-ch ★★★★★ ()
Ответ на: комментарий от Novell-ch

Ну, я предупреждал про картины Дали :D

может GL_INTEL_map_texture дает о себе знать

Да, очень похоже на то. Погрызу этот кактус в свободное время.

// Я думаю, с таким невероятным качеством графона пилить костыль в LD_PRELOAD рановато (тем более, что я хз взлетит-ли он с вайновским индиректом), но если хочешь — могу запилить.

И, да, поздравляю)

Stil ★★★★★ ()
Ответ на: комментарий от Novell-ch

может GL_INTEL_map_texture дает о себе знать

See gl_intel_map_texture for example - this is essentially the same functionality as the new DirectX InstantAccess extension and was implemented in OpenGL first for Rage to allow faster texture updates for megatexturing in 2011 and formally released as an extension in 2012.

Так что отсутствие этого расширения вполне может является причиной таких глюков.

Behem0th ★★★★★ ()
Последнее исправление: Behem0th (всего исправлений: 2)
Ответ на: комментарий от Behem0th

да, меса спамит в консоль

Mesa: User error: GL_INVALID_OPERATION in unsupported function called (unsupported extension or deprecated function?)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_OPERATION in unsupported function called (unsupported extension or deprecated function?)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_OPERATION in unsupported function called (unsupported extension or deprecated function?)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_OPERATION in unsupported function called (unsupported extension or deprecated function?)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_OPERATION in unsupported function called (unsupported extension or deprecated function?)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_OPERATION in unsupported function called (unsupported extension or deprecated function?)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_OPERATION in unsupported function called (unsupported extension or deprecated function?)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)
Mesa: User error: GL_INVALID_ENUM in glTexParameter(pname=GL_TEXTURE_MEMORY_LAYOUT_INTEL)

только вот врятли его кто-то реулизует в месе.

Novell-ch ★★★★★ ()
Ответ на: комментарий от Stil

В памяти осталось инфа и том когда выходила игрушка Rage, были разговоры про технологию мегатекстура. Она вроде и раньше была в Квейк Варс но во времена Rage про нее особо много говорили. И были разговоры что для OpenGL специально было придумано расширение ускоряющее работы с ней.

Хотя я не программист и не разбираюсь в OpenGL так что мог все напутать.

Я особо не проверял ссылку нашел в гугле, там статья и по теме один абзац. http://techreport.com/news/24600/intel-gets-serious-about-graphics-for-gaming

Behem0th ★★★★★ ()
Ответ на: комментарий от Novell-ch

Но неужели все вендоры реализовали ради одной игры расширение в своих драйверах? Так что может быть это расширение не обязательное и просто включается в движке когда в вине запускается?

А где еще такое расширение требуется? Если бы оно было очень распостраненным то я думаю появился бы ARB вариант, А если эта игра единственная кому расширение нужно , то может ну его нафиг? Не такая уж она и хорошая чтоб так стараться:-) Первоначальная твоя идея же была починить вино для OpenGL игры а не конкретно для Rage'а.

Behem0th ★★★★★ ()
Ответ на: комментарий от Behem0th

Бинго! Мне только что пришла та же мысль :)

Насколько я понял по гуглу, это расширение создано для иниеграшек и поддерживается _только_ виндовыми дрова штеуда. Осталось достать вендор/рендерер от виндовых АМД и затестить.

Stil ★★★★★ ()
Ответ на: комментарий от Novell-ch

Ну как-то так

Ну дык, это. Возьми костыль отсюда и выполни

HMESA_GL_VENDOR_OVERRIDE="ATI Technologies Inc." HMESA_GL_RENDERER_OVERRIDE="AMD Radeon R9 200 Series" LD_PRELOAD="./mesa_ovverride_vnd_rndr.so" <прочий_обвес> wine RAGE.exe

Только учти, что костыль надо собрать 32х битным (-m32 к gcc и -melf_i386 к ld).

и да GL_INTEL_map_texture недоступно в винде, нафига тогда в вайне его пытается юзать

Это не вайн, это игра. Видимо они, как и доны из ОП, выбирают codepath по вендору OpenGL. В DOS EE fallback режим был для невидии, здесь - для интела. Ну, похоже на то, по крайней мере.

Stil ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.