Opened 5 years ago
Closed 5 years ago
#11078 closed defect (fixed)
Blade Runner: OpenGL graphics mode produces white screen
Reported by: | raziel- | Owned by: | peterkohaut |
---|---|---|---|
Priority: | normal | Component: | Engine: Bladerunner |
Version: | Keywords: | ||
Cc: | ccawley2011 | Game: | Blade Runner |
Description
ScummVM 2.1.0git (Aug 13 2019 10:45:13)
Features compiled in: TAINTED Vorbis FLAC MP3 RGB zLib MPEG2 Theora AAC A/52 FreeType2 JPEG PNG cloud (servers, local)
e86ee33999f33ad66bb7c018b4d4b7604b48badb
Regression.
With above commit the OpenGL graphics mode stopped working and only produces a complete white screen/window during the whole game (intro video and gameplay).
Reverting this, makes OpenGL graphics mode work perfectly again on AmigaOS4.
Blade Runner (Windows/English)
AmigaOS4 - SDL - BE - PPC
gcc (adtools build 8.3.0) 8.3.0
Change History (32)
comment:1 by , 5 years ago
comment:3 by , 5 years ago
@peterkohaut
Is there a way I can debug/show the pixel format before it is sent and used?
We suspect a faulty input into the pixel format which causes the white.
comment:4 by , 5 years ago
Faulty input will show in other ports as well, no? For example, there were few rendering artifacts & issues with android port and when opengl was enabled on windows with wrong alpha was used (game has alpha switched 0<->1)
comment:5 by , 5 years ago
It will, yes, IF all platforms work on the same SDL version.
Since amigaos4's SDL is still being developed/ported there might be a slim chance that it causes such issues (on amigaos4).
comment:6 by , 5 years ago
maybe i just don't understand what are you asking, graphics is initialized here: https://github.com/scummvm/scummvm/blob/master/engines/bladerunner/bladerunner.cpp#L328 but conversion from internal game format to one used it done in multiple places
comment:7 by , 5 years ago
First of all, I'm not trying to diss your code or workaround.
If I gave that impression in one of my earlier posts I do apologise.
I'm merely trying to rule out a bug in my platforms SDL/OpenGL implementation, because the last eight issues I had with sdl apps (ScummVM and ResidualVM being amongst them) were actually down to bugs or missing features in my platforms SDL/OpenGL implementation.
But for that I'd need to get a reproducable result to send to the devs.
That's why I'm trying to understand the PixelFormat numbers and where they come from.
Maybe, since it seems that AmigaOS4 is the only target that still don't work, there is a PixelFormat that is simply not supported (yet) or produces said white screen.
If I'm able to pinpoint the PixelFormat that produces that white screen I might be able to give a reproducable case and finally help fix a potential bug.
Sorry to be such a pain.
comment:8 by , 5 years ago
If it helps, ScummVM pixel formats are mapped to OpenGL pixel formats here: https://github.com/scummvm/scummvm/blob/master/backends/graphics/opengl/opengl-graphics.cpp#L1109
The values returned there are the ones used by glTexImage2D, as documented here: https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glTexImage2D.xml
comment:9 by , 5 years ago
No worries:) I saw nothing like that... I'm just confused as I don't know exactly know what are you asking and I dont know that much about opengl backend in scummvm.
I know the bigger change I made that might broke your output is that pixel format change, if you have chance to try the older one.
comment:11 by , 5 years ago
I'll test once I get home.
I got more (unplanned) days to work, so it will delay testing until after Saturday.
Sorry
comment:12 by , 5 years ago
Using
return Graphics::PixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0);
I get an error window (from ScummVM) telling me
Could not initialise color format.
If i click that window away the game plays in the background, but this time with a black screen
comment:13 by , 5 years ago
I get a lot of GLErrors, not sure if it helps though
User picked target 'bladerunner-final-win' (gameid 'bladerunner-final')... Looking for a plugin supporting this gameid... Blade Runner Starting 'Blade Runner with restored content' WARNING: GL ERROR: GL_INVALID_OPERATION on glTexImage2D(0x0DE1, 0, _glIntFormat, _width, _height, 0, _glFormat, _glType, __null) (backends/graphics/opengl/texture.cpp:141)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! Subtitles version info: v3 (09:35:49 22/07/2019) EFIGS by: English by ScummVM Team, French by Kwama57 Subtitles font 'SUBTLS_E.FON' was loaded successfully. SliceAnimations::openFrames: HDFRAMES.DAT resource not found. Falling back to using CDFRAMESx.DAT files instead... WARNING: numQueuedStreams: 0! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: numQueuedStreams: 0! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: numQueuedStreams: 0! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: numQueuedStreams: 0! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: numQueuedStreams: 0! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: numQueuedStreams: 0! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! Blade Runner From the dark recesses of David Leary's imagination comes a game unlike any other. Blade Runner immerses you in the underbelly of future Los Angeles. Right from the start, the story pulls you in with graphic descriptions of a grandmother doing the shimmy in her underwear, child molestation, brutal cold-blooded slaying of innocent animals, vomiting on desks, staring at a woman's ass, the list goes on. And when the game starts, the real fun begins - shoot down-on-their-luck homeless people and toss them into a dumpster. Watch with sadistic glee as a dog gets blown into chunky, bloody, bits by an explosive, and even murder a shy little girl who loves you. If you think David Leary is sick, and you like sick, this is THE game for you. JW: Don't forget the wasting of helpless mutated cripples in the underground. It's such a beautiful thing! DL: Go ahead. Just keep beating that snarling pit bull...ignore the foam around his jaws. There's room on the top shelf of my fridge for at least one more head... - Psychotic Dave WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)! MG: Is David Leary a self-respecting human or is he powered by rechargeable batteries? WARNING: GL ERROR: GL_INVALID_OPERATION on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.getBasePtr(0, area.top)) (backends/graphics/opengl/texture.cpp:169)!
comment:14 by , 5 years ago
@peterkohaut
With the help of the SDL devs i added some debug output and it seems we have cornered the problem
User picked target 'bladerunner-final-win' (gameid 'bladerunner-final')... Looking for a plugin supporting this gameid... Blade Runner Starting 'Blade Runner with restored content' glintFormat 6408, glFormat 6408, glType 5121, width 32, height 32 glintFormat 6408, glFormat 6408, glType 32820, width 1024, height 512
The problem might be the type
32820 (0x8034): #define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
There is no "unpacker" in our MiniGL for this type, see
http://www.hyperion-entertainment.com/svn/MiniGL/branches/updates-kc/src/unpack.c
for supported unpackers.
Since i don't know if this type will get supported anytime soon, and since it worked before, would there be a workaround in ScummVM possible for the time being?
comment:15 by , 5 years ago
Cc: | added |
---|---|
Owner: | set to |
Resolution: | → fixed |
Status: | new → pending |
This should hopefully be fixed by https://github.com/scummvm/scummvm/pull/1825
comment:16 by , 5 years ago
Unfortunately not :-(
I get the same unsupported PixelFormat
User picked target 'bladerunner-final-win' (gameid 'bladerunner-final')... Looking for a plugin supporting this gameid... Blade Runner Starting 'Blade Runner with restored content' glintFormat 6408, glFormat 6408, glType 5121, width 32, height 32 glintFormat 6408, glFormat 6408, glType 32820, width 1024, height 512
which is still producing a white screen.
btw: The debug line i added is
debug("glintFormat %d, glFormat %d, glType %d, width %d, height %d", _glIntFormat, _glFormat, _glType, _width, _height);
https://github.com/scummvm/scummvm/blob/master/backends/graphics/opengl/texture.cpp#L140
comment:17 by , 5 years ago
@ccawley2011
Nevermind my previous post.
I had a slow moment and was fooled by the fact there was another bladerunner change recently,
which made me believe it would be sufficent to pull the latest sources.
I built your tree from the PR now, tested and confirmed working.
This is the output:
User picked target 'bladerunner-final-win' (gameid 'bladerunner-final')... Looking for a plugin supporting this gameid... Blade Runner Starting 'Blade Runner with restored content' Using pixel format: RGB565@2
Thank you very much
comment:18 by , 5 years ago
please, can you try it with https://github.com/scummvm/scummvm/commit/a7399c5111cc7ebeea284498a1ee5ac7542bb96d ?
that one extends the engine to use the best pixel format on platform (32 bit formats are now supported)
comment:20 by , 5 years ago
Component: | Graphics → Engine: Bladerunner |
---|
comment:21 by , 5 years ago
Summary: | WME: Blade Runner - OpenGL graphics mode produces white screen → Blade Runner: OpenGL graphics mode produces white screen |
---|
comment:22 by , 5 years ago
@peterkohaut
Confirmed fixed with https://github.com/scummvm/scummvm/commit/a7399c5111cc7ebeea284498a1ee5ac7542bb96d
User picked target 'bladerunner-final-win' (gameid 'bladerunner-final')... Looking for a plugin supporting this gameid... Blade Runner Starting 'Blade Runner with restored content' Using pixel format: RGBA8888@4
But this one is slow, the intro is reduced to a (fast) dia-show, skippy animation and pauses when a new animated object is drawn (i.e. the different cursors in the first scene).
The earlier fix in https://github.com/scummvm/scummvm/pull/1825 was perfect (in regards to game speed)
comment:23 by , 5 years ago
Later I've noticed that I introduced some regression in performance with it. I tried to mitigate it with https://github.com/scummvm/scummvm/commit/4355c42044493249cfc2562e190e66f7226a4829
can you try with that one and compile with compiler optimizations enabled?
The 1825 was not good enough for ps3 port as it doesn't like 16bit formats.
comment:24 by , 5 years ago
@peterkohaut
Confirmed fixed with 4355c.
Without optimizations the speech in videos is out-of-sync and i get slowdowns, mostly just before scene changes.
With optimizations enabled everything seems fine (at least in videos), have to test more, but that would not be part of this issue report :-)
Thank you very much
comment:25 by , 5 years ago
@peterkohaut
with the commit https://github.com/scummvm/scummvm/commit/a7399c5111cc7ebeea284498a1ee5ac7542bb96d it is broken for older Android (4.2.2) with the AndroidSDL port.
09-11 14:07:10.171 25530-25548/? E/libSDL: ERROR: Setting the swap interval is not supported
09-11 14:07:10.171 25530-25548/? E/libSDL: ERROR: Getting the swap interval is not supported
09-11 14:07:10.171 25530-25548/? E/libSDL: ERROR: GL_GetAttribute not supported
09-11 14:07:16.287 25530-25548/? A/libc: Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 25548 (GLThread)
09-11 14:07:17.334 445-496/? E/InputDispatcher: channel '420d2c08 org.scummvm.scummvm/org.scummvm.scummvm.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
comment:26 by , 5 years ago
@mim2011
What about the followup 4355c?
That is the commit that is/will be used finally.
comment:27 by , 5 years ago
@raziel
I build it again today with the last code stand and I see no change. When I try to launch Blade Runner it exits Scummvm:
09-13 12:28:35.911 9508-9508/? E/dalvikvm: Could not find class 'com.google.common.flogger.backend.google.GooglePlatform', referenced from method via.c 09-13 12:28:36.750 9508-9527/? E/dalvikvm: Could not find class 'android.app.AppOpsManager', referenced from method px.a 09-13 12:28:37.087 9508-9508/? E/dalvikvm: Could not find class 'android.view.animation.PathInterpolator', referenced from method qw.a 09-13 12:28:37.207 9484-9523/? A/libc: Fatal signal 11 (SIGSEGV) at 0x5494b000 (code=1), thread 9523 (com.asus.reader) 09-13 12:28:38.562 9537-9537/? E/cutils: to chown(/mnt/shell/emulated/0, 0, 0) 09-13 12:28:38.562 9537-9537/? E/cutils: to chown(/mnt/shell/emulated/obb, 0, 0) 09-13 12:28:38.563 9537-9537/? E/cutils: to chown(/storage/emulated/0/Android, 0, 0) 09-13 12:28:38.563 9537-9537/? E/cutils: to chown(/storage/emulated/0/Android/obb, 0, 0) 09-13 12:28:39.150 9254-9315/? A/libc: Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 9315 (GLThread) 09-13 12:28:41.414 445-496/? E/InputDispatcher: channel '4145ae30 org.scummvm.scummvm/org.scummvm.scummvm.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 09-13 12:28:41.784 9537-9537/? E/dalvikvm: Could not find class 'android.content.pm.ShortcutManager', referenced from method com.google.android.apps.gsa.binaries.devore.app.c.hy 09-13 12:28:42.167 9558-9558/? E/cutils: to chown(/mnt/shell/emulated/0, 0, 0)
I think that it is about a commit an the same day like a7399c5111cc7ebeea284498a1ee5ac7542bb96d, I tried to revert it and it is still broken. But the code from 29.08 it is ok.
comment:28 by , 5 years ago
@mim2011
I meant the branch with said fixes 4355c (see above for thr link).
I'm not sure that the fix has made it into the main tree, yet.
comment:29 by , 5 years ago
@raziel
I see no branch for these fixes, but the commit 4355c is in master and it brings no solution. I tried also on a Android 5.1 and it is the same, when starting Blade Runner it exits the app.
comment:30 by , 5 years ago
@mim2011
Ah, ok, I'm not on my setup and cant really check that very well.
I don't know if this (closed) item is still monitored by the devs, so you may want to address your issue here aswell: https://forums.scummvm.org/viewtopic.php?f=1&t=14900&p=87655#p87655
comment:31 by , 5 years ago
@mim2011 I am afraid I can't reproduce your issue.
I have tried on an Android 4.4.4 phone and an Android 5.1 with a fresh local build of the Android SDL port. Both were able to launch Blade Runner without issues -- intro cutscenes, gameplay, subtitles, the works.
This is with the default graphic settings, btw.
comment:32 by , 5 years ago
Owner: | changed from | to
---|---|
Status: | pending → closed |
I am marking this ticket as resolved.
@mim2011 if your issue persists, and since it seems to be an entirely different one, please open a new ticket for it.
In that commit output format was changed from 15bit rgb555 to 16bit argb1555, because android port supports only that, that might be the issue.
Please, as i dont have access to amiga with opengl can you try to change line https://github.com/scummvm/scummvm/commit/e86ee33999f33ad66bb7c018b4d4b7604b48badb#diff-f199a055d38e2201e8a040ed1e912a2eR317 from
return Graphics::PixelFormat(2, 5, 5, 5, 1, 11, 6, 1, 0);
toreturn Graphics::PixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0);