libretro / beetle-psx-libretro

Standalone port/fork of Mednafen PSX to the Libretro API.
GNU General Public License v2.0
308 stars 131 forks source link

[OpenGL] [AMD] Beetle HW Black Screen, with Sound. FMVs Work #322

Closed msmilkshake closed 6 years ago

msmilkshake commented 6 years ago

AS the title says, in my system, with OpenGL, the game doesn't render anything but black. Sound works great and FMVs are played and displayed.

I'll attach a log below. OpenGLissue.log

hug0b commented 6 years ago

This seems to happen to me too after updating Beetle PSX HW. Before that it ran fine with Open GL.

System : Windows 10 x64, Radeon RX 480, drivers 18.2.1

RetroArch 1.7.2 (Git ab00d587d8)

Audio and pre-rendered video works but the bios and everything else is a black screen.

Log : https://pastebin.com/MzE7Kj19

It seems to work fine with Vulkan (except the quick menu is invisible for some reason from what I tested) No issue with software renderer as well.

Beetle PSX HW.cfg is empty

Content of retroarch-core-options.cfg :

beetle_psx_hw_renderer = "hardware" beetle_psx_hw_renderer_software_fb = "enabled" beetle_psx_hw_adaptive_smoothing = "enabled" beetle_psx_hw_internal_resolution = "1x(native)" beetle_psx_hw_filter = "nearest" beetle_psx_hw_depth = "dithered 16bpp (native)" beetle_psx_hw_wireframe = "disabled" beetle_psx_hw_display_vram = "disabled" beetle_psx_hw_pgxp_mode = "disabled" beetle_psx_hw_pgxp_vertex = "disabled" beetle_psx_hw_pgxp_texture = "disabled" beetle_psx_hw_widescreen_hack = "disabled" beetle_psx_hw_frame_duping = "disabled" beetle_psx_hw_cpu_freq_scale = "100% (native)" beetle_psx_hw_gte_overclock = "disabled" beetle_psx_hw_gpu_overclock = "1x(native)" beetle_psx_hw_skip_bios = "disabled" beetle_psx_hw_dither_mode = "1x(native)" beetle_psx_hw_display_internal_fps = "disabled" beetle_psx_hw_initial_scanline = "0" beetle_psx_hw_last_scanline = "239" beetle_psx_hw_initial_scanline_pal = "0" beetle_psx_hw_last_scanline_pal = "287" beetle_psx_hw_crop_overscan = "enabled" beetle_psx_hw_image_crop = "disabled" beetle_psx_hw_image_offset = "disabled" beetle_psx_hw_analog_calibration = "disabled" beetle_psx_hw_analog_toggle = "disabled" beetle_psx_hw_enable_multitap_port1 = "disabled" beetle_psx_hw_enable_multitap_port2 = "disabled" beetle_psx_hw_gun_cursor = "Cross" beetle_psx_hw_mouse_sensitivity = "100%" beetle_psx_hw_cd_access_method = "sync" beetle_psx_hw_use_mednafen_memcard0_method = "libretro" beetle_psx_hw_enable_memcard1 = "enabled" beetle_psx_hw_shared_memory_cards = "disabled" beetle_psx_hw_cd_fastload = "2x (native)"

EDIT: Can confirm if behaves the same on a clean RetroArch install of the latest nightly.

rz5 commented 6 years ago

I can confirm the bug when I'm using my discrete AMD GPU on my laptop, AMD M330

inactive123 commented 6 years ago

What we need here is people with the hardware that reproduces the issue to start fixing it. I am not one of you guys, I run an nvidia GPU where there are no issues.

msmilkshake commented 6 years ago

I replaced my AMD card with an Nvidia card so I cannot reproduce the issue anymore.

ElectricKeet commented 6 years ago

Here's one for you:

I've got an external Radeon RX 460, and I'm seeing precisely this behaviour in hardware rendering mode; game, sound, and input run fine, but no video except during FMV.

If I load a state saved while in software mode, I get to see a single frame before it goes black.

Additionally, if I turn on the core's "Display full VRAM" option, I get to see all the VRAM everything as normal... except for the actual video frame.

iCatButler commented 6 years ago

This issue was introduced by commit b662d04894787b7d89d6aa46b430ddc647dc2b2d, which changed the requested OpenGL version from 3.1 to 3.3.

Changing the value back to 3.1 results in a working build on AMD/Windows systems, but probably reintroduces issue #315, that the commit was intended to fix.

I'm not sure what the implications of this are as there are no obvious error messages. It could be that AMD's OpenGL Windows drivers aren't supporting 3.3 correctly, or even that the original value was somehow resulting in an error and a valid default context being returned.

Solfbeen commented 6 years ago

I also have this issue, I've got a R7 360 with CRT Emudriver 2.0 - beta 13 I have sound, FMVs ( with garbage on the borders ), some fixed screens display too. Everything else is black. 3D scenes apear in a glimpse if I switch the internal resolution in the core options.

Stefano-82 commented 6 years ago

Is there any work around to this issue at the moment? i have no choice but to use my R9 270X or run the game software which will cause lots of heavy slow downs.

rz5 commented 6 years ago

@Stefano-82 - There is also the Vulkan renderer that you can use. If you really want to use the GL renderer, there is a workaround.

Clone this repo, in the Makefile.common file on line 20, delete the word "-DCORE", save and compile.

For posteriority, this bug seems to be related to using a rendering context with a "core" profile on AMD. I've tried running beetle-psx through CodeXL and RenderDoc but none of them point out anything obvious. @bparker06 has suggested comparing API traces of a regular build vs a non-core profile build and check for missing differing API calls, but I have not gotten around to doing that.

It might be an obscure AMD windows driver bug. Or it might be that we're using a GL function that has been deprecated in the core profile spec and AMD is strict but Nvidia/Intel are flexible.

Stefano-82 commented 6 years ago

@rz5 @bparker06 Ok, le'ts try this again with vulkan, this is the specifications i got : i5 4440 and R9 270x with windows 10.

The first attempt with vulkan was a failure, i started the game and it wouldn't load, so i tried with open GL and then D3D(only option that worked).

Few moments ago i update my gpu drivers to the latest and tried again....same result, i get a white screen for a few seconds and then it just closes without giving an output or anything.

I'm attaching the debug with the game Grandia, which i'm using as Test. Please give me some hints to work on, i'd prefer using vulkan rather GL which is the last option.

thanks in advance

debugRA after GPU update.txt

iCatButler commented 6 years ago

The system I've used to test this is an X5670 with an R9 270x (4G) running Windows 10 64bit. It always worked properly with Vulkan but was not showing geometry when loading into Beetle using OpenGL.

I just downloaded and installed the latest graphics drivers from AMD, grabbed the latest stable build of Retroarch from http://buildbot.libretro.com/stable/1.7.3/windows/x86_64/ and downloaded the latest Beetle HW core using the updater.

Now both OpenGL and Vulkan renderers work on this system (loading Tomb Raider). All settings are default so I'm starting this in a Window rather than fullscreen, although changing core options like scaling, PGXP and texture filtering all work.

Stefano-82 commented 6 years ago

I have done the same with retroarch,core and drivers, but the bios load and the game won't start, retroarch just closes after a white screen.

iCatButler commented 6 years ago

@Stefano-82 the original AMD/OpenGL issue would allow the game to load and display FMV's and play audio but not display any rendered graphics. If it's crashing on loading either of the hardware renderers that sounds like a different issue altogether.

Stefano-82 commented 6 years ago

@iCatButler nope with open GL i have the game running but showing the issues you just said, the problem we are referring to atm is with vulkan

Stefano-82 commented 6 years ago

@iCatButler i made once again a clear install of retroarch x64 1.7.3 installing beetle hw core and upgrading it. My drivers version of vulkan has been updated yesterday to the most recent, it actually says 2.0.20 with API version 1.1.70.

The settings of the beetle core are to the defaults with no shaders or whatever, i just dunno what to do considering you have my same gpu only with more Video Ram

rz5 commented 6 years ago

On my end, I can confirm that updating the AMD GPU driver fixed this bug. image

@Solfbeen @777sha @ElectricKeet - could you verify on your ends? Make sure you update your 'AMD Radeon Settings' to the latest version if you can (18.8.1).

@Stefano-82 I've tested the Vulkan renderer and it works too - upscaling, adaptive smoothing, toggling fullscreen, PGXP - however this thread is about the OpenGL renderer. If you can't get the Vulkan stuff working, I suggest you confirm your settings with other AMD users on e.g. the RA Discord server. If you stumble upon something reproducible, consider opening a new github issue about it.

Stefano-82 commented 6 years ago

my amd driver are 18.5.1 i will upload tonight to the nighlty

Stefano-82 commented 6 years ago

@iCatButler i have installed the latest 18.8.1 and nothing has changed, bios starts with vulkan then the sound stops right before loading the playstation logo and the emulator closes by itself.

amd drivers

rz5 commented 6 years ago

@Stefano-82 - What about the OpenGL renderer? Does it work now?

iCatButler commented 6 years ago

@Stefano-82 regarding the Vulkan renderer, I've noticed that my log file shows the renderer apparently starting multiple times with different swap chain configurations, presumably failing each time until it finds one compatible with the card/drivers.

Your log doesn't show this behaviour (or an error) so it may just be crashing on the first attempt somewhere in the Vulkan driver or runtime instead of returning the appropriate error to RetroArch. If you haven't tried doing so it might be worth completely uninstalling your AMD drivers (and possibly Vulkan runtime) and performing a clean install.

As rz5 mentioned, it would be useful for the purposes of this issue to know if the OpenGL renderer is now working correctly.

Stefano-82 commented 6 years ago

@rz5 GL is working but horrible glitches and absolutelyunplayable, i have already done a clean install of the drivers AMD, i always do.

Stefano-82 commented 6 years ago

Ok i guess magic do happen in this situations, without doing anything i tried after 2 hours restarting retroarch, only thing i've done is play a game which might use vulkan and might have triggered something.

I have slow loading and retroarch suggested to select under options"async" mode for cd reading instead of sync, and it goes much smoother, finally it seems i reaxched the end of my tunnel 💃

Stefano-82 commented 6 years ago

To make a summary of the things i've done to make this work :

1)Delete retroarch folder 2)Update to the "optional"(nightly) AMD drivers, as of today Version 18.8.1 with a CLEAN INSTALL. 3)Udate Visual C++ Runtime https://support.microsoft.com/it-it/help/2977003/the-latest-supported-visual-c-downloads 4)Restart 5)Reinstall Retroarch 6)Download Lang shaders 7)used PGXP(all settings ON), x2 gpu resolution, 4xbrz, CD access method async (any of this settings higher or different made my system VERY SLOW, so they are good if you have something similar to my system, either way try to play around with settings.

system with i5 4440,8gb ram,AMD R9 270X running windows 10 64,

Stefano-82 commented 6 years ago

After computer restart i have the same problem as before, this is a nightmare, i can't understand where this is coming from i have no evidence at all.

Stefano-82 commented 6 years ago

I switched to using the nightly with the same settings, and it's now working again, there must be something in the stable version preventing me from using this core with vulkan correctly, i made 2 restarts just to be sure and it's working good.

rz5 commented 6 years ago

Since this seems fixed on at least 3 different systems with AMD GPUs, I'll close this now. And the other people I pinged for feedback can be referred back to this thread in case they still have the bug.

Solfbeen commented 5 years ago

For people who can't update their drivers like me (I use Crt Emudriver). I've found a workaround incidentally when I injected Reshade in RA. No need to use a specific shader. The picture displays normally with OpenGL driver now. I can't explain why.