airsdk / Adobe-Runtime-Support

Report, track and discuss issues in Adobe AIR. Monitored by Adobe - and HARMAN - and maintained by the AIR community.
203 stars 11 forks source link

The application only shows the background color on AMD Radeon Drivers Adrenalin 22.6.1 #1963

Open jeremyheo-nsuslab opened 2 years ago

jeremyheo-nsuslab commented 2 years ago

Problem Description

The application only shows the background color on AMD Radeon Adrenalin 22.6.1 It works properly with old Adrenalin version. (22.5.1, 22.4.2, ...)

Steps to Reproduce

  1. The Application built with xml description ...

    <application xmlns="http://ns.adobe.com/air/application/33.1">
    <initialWindow>
        <renderMode>direct</renderMode>
        <depthAndStencil>true</depthAndStencil>
        <systemChrome>none</systemChrome>
        <maximizable>false</maximizable>
        <resizable>false</resizable>
        <transparent>false</transparent>
         ....
    </initialWindow>
    </application>
  2. it runs on...

    • OS : Window 10 64 bit
    • Graphic Adapter : AMD RX 6500 XT
    • Graphic Driver : Adrenalin version 22.6.1
  3. it only shows the background color

    Snipaste_2022-06-09_18-13-41

Known Workarounds

I found some working properly case.

ajwfrost commented 2 years ago

Hi So while we'll continue to try to work out what part of Direct3D 11 is causing the problem, a workaround here would be to limit your app to Direct3D 9. There's a new capability added into the app descriptor file, see below:

    <windows>
        <maxD3D>9</maxD3D>
    </windows>

If you put 9 there, we will use Direct3D 9 rather than the default of Direct3D 11. If you put anything lower, it will restrict it to software rendering/emulation.

LeeTomahawk commented 2 years ago

@ajwfrost I have a similar problem with a game made in adobe air, when I start it I only see a black background with an indicator and music, all after installing new 22.6.2 adrenaline drivers. I don't know where to put this "windows maxD3D" tag

ajwfrost commented 2 years ago

@LeeTomahawk the tag should go into your application descriptor file e.g.

<?xml version="1.0" encoding="utf-8" ?> 
<application xmlns="http://ns.adobe.com/air/application/33.1">

    <id>...</id> 
    <versionNumber>1.0</versionNumber> 
    <filename>...</filename> 
    <windows>
        <maxD3D>9</maxD3D>
    </windows>
...
</application>

It would need to have that namespace value ending in 33.1 to pick up the validity of this though..

thanks

ajwfrost commented 2 years ago

Hi all

Can I get some more details on the graphics drivers here please: can you try:

1) Hit Windows-X key and select “Device Manager” 2) Expand “Display Adapters” .. hopefully you have one saying “AMD Radeon” or similar 3) Double-click on this and choose “Driver” to then see information about the driver version

Ideally if you can screenshot that "Driver" information and dump it here, we can look at a better workaround... but we're also trying to get hold of a suitable machine for fixing the underlying issue.

thanks

LeeTomahawk commented 2 years ago

Hi all

Can I get some more details on the graphics drivers here please: can you try:

  1. Hit Windows-X key and select “Device Manager”
  2. Expand “Display Adapters” .. hopefully you have one saying “AMD Radeon” or similar
  3. Double-click on this and choose “Driver” to then see information about the driver version

Ideally if you can screenshot that "Driver" information and dump it here, we can look at a better workaround... but we're also trying to get hold of a suitable machine for fixing the underlying issue.

thanks

image

ajwfrost commented 2 years ago

Thanks - a little bit higher than that would be good too, so we know the name used for the adapter! and given the driver version there is 31.0, vs the 22.6 value mentioned earlier, can you confirm where the 22.6.x came from? Maybe if you click on "Driver Details" one of the files in there would have this version code on it?

thanks

LeeTomahawk commented 2 years ago

image Only one file with version 22.x.x

jeremyheo-nsuslab commented 2 years ago

Hello all. I think that the driver version is 31.x.x and Adrenalin Release Version is 22.8.1 ( https://gpuopen.com/version-table/ )

@ajwfrost I wonder if there are any performance-related side-effects when I limit my app to Direct3D 9. and i want to how to limit it on run-time without xml descriptor.

ajwfrost commented 2 years ago

Okay thanks... so it's possible we could add a condition to check the driver details and version and then automatically limit things. Although this may be a bit of effort and given the actual bug - which is in a fairly straightforward bit of code - I'm thinking we should actually focus on a fix for this instead.

In terms of performance, there may be a slight slow-down if using the older D3D version but I wouldn't imagine it would be particularly large. From the looks of the code, the support for v11 was more to fit in with some IE/Edge changes for the Flash Player rather than it being originally intended for AIR.

It's not possible to change the setting at run-time though as this is all used in some of the initial bootstrap code which happens prior to your user code execution i.e. when we create the window for displaying the content, before your main constructor is then called.

Our IT team haven't been able to find an appropriate machine for us to test with here so I may need to send you another debug build so that we can try to get to the bottom of this one....

thanks

jeremyheo-nsuslab commented 2 years ago

But I found out some problem with dx9. (ex. the Context3D could be lost with lock screen.) And I don't think it makes sense to use dx9 for all users for some users. So I can't apply to limit d3d to my application.

aW4KeNiNG commented 1 year ago

What is the status?

I have a few clients with the same problem. I know the directx9 is a temporal workaround, but it shouldn't see the solution. The Context3D is lost when the computer is suspended + the performance hit they could get.

LeeTomahawk commented 1 year ago

@aW4KeNiNG Drivers 22.11.1, fix this problem (i have rx 6600xt)

RossD20Studios commented 1 year ago

Hey @ajwfrost - I noticed this issue is still open, though I see a comment from @LeeTomahawk that this issue is resolved with latest AMD drivers. Just wanted to check in as its been a few months and I'd love to remove the temporary workaround of downgrading to DirectX9 as I'm concerned this has performance tradeoffs for other users.

ajwfrost commented 1 year ago

Hi @RossD20Studios - we had looked to see if we could workaround ourselves to fall back to DX9 if we had detected these particular driver versions, but there didn't seem to be a straightforward way to find out which version numbers they were... so, currently this is still just dependent then upon whatever version the end users will have.

So I think it may be that switching back to Direct3D 11 may cause some issues for people if they've got older drivers, but hopefully it's something that they could be directed to update?

thanks

aW4KeNiNG commented 1 year ago

Hi.

These months have been working fine, but now I have a new user with the same issue and the latest graphics card drivers using the AMD rx 6650xt model.

image

Can anyone confirm if this is happening again?

RossD20Studios commented 4 months ago

Hi @aW4KeNiNG - Yes, I can confirm that this issue is definitely still occurring. After your report on the driver fix, I decided to remove the work-around solution in favor of performance on the newer Direct X for my other players.

However, I've recently been getting reports from several players that this issue has resurfaced, leaving me back to reverting the work-around-fix so they can at least run the game. Unfortunately, it's very difficult to get graphics card/driver information from players, they just want their game to work.

Some players have at least noted a workaround solution might be running the game in windowed mode, suggesting that there is some difference to how the drivers respond in fullscreen mode.

@ajwfrost - Do you have any additional updates on the status of this issue? Again, I'm concerned about the work-around solution because this means the entire playerbase has to use the older DirectX code to resolve the few outliers with specific AMD+driver combinations that can't play the game.

If we can't detect the driver, would there be a way to detect the problem and surface a message to the user that allows them to switch to the alt-DirectX version? As of this moment, the work-around has to be applied at compile time.