airsdk / Adobe-Runtime-Support

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

Windows build shows white screen on some of Win10 machines #2652

Open GeneralVimes opened 1 year ago

GeneralVimes commented 1 year ago

I've updated my game https://airapport.itch.io/engineer-millionaire using AIR 50.2.2.5 and on my laptop and several laptops and PCs where I tested it everything worked fine.

But I received at least 3 messages form the players that they get just white screen when they tried to play the game on Win10. One of the players tried an older build, which was built using AIR 33.1.1.929, and it work fine.

What additional information can I obtain from the players to find out, what has started causing plain white screen instead of the game on some of the machines with Win10?

ajwfrost commented 1 year ago

Hi

My guess would be there's something going wrong in the video drivers that means the Stage3D set-up is failing. Is it possible to ask them to capture some logging of the first few seconds of the app using Adobe Scout? In particular if the person could do that with the new one and with the old one, we can then see the difference in the system information. https://helpx.adobe.com/uk/scout/kb/download-adobe-scout-cc.html

Or it may be worth trying with these folk to add a new line into the application descriptor file:

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

This would force it to the older Direct3D 9 drivers which may work around the problem. See https://airsdk.dev/docs/building/application-descriptor-files/elements/windows#maxd3d

thanks

rdefalco commented 1 year ago

Hello, we often face this issue on Intel graphic cards of some older machines. As our are business apps, we can instruct our customers to put some .txt files in known locations (for us) that on app startup force RenderMode to "software" and Profile to "baselineConstrained". This fixes the issue on that specific machine.

The line where these two parameters are used in our apps is like this:

_starling = new Starling( null, this.stage, null, null, renderMode, profile);

I didn't investigate on what of these two workarounds (or if both) allows our app to start. Also you should figure how to make this fix automatic, but we didn't need to figure how.

EDIT: also, this issue was there for us on older AIR versions, too, so can't be sure it's the same as you reported

GeneralVimes commented 1 year ago

Thank you! I stay in touch with the player to find this out. For now I've got that

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

did not work. I'll keep the thread updated as I get more info.

bobaoapae commented 1 year ago

Hello i'm having the same error in some machines using starling.

in my case <windows><maxD3D>9</maxD3D></windows>

fix the problem

bobaoapae commented 1 year ago

@ajwfrost do we can expect some fix about this in directx 11 ? using directx 9 fix the problem but with performance degradation in machines that can handle directx 11 without problems.

bobaoapae commented 10 months ago

@ajwfrost can this get some fix?

ajwfrost commented 10 months ago

Hi @bobaoapae - sadly we've never managed to reproduce this on any of the machines we have access to. If you have a particular machine where you can reproduce it yourself, then (a) could you please provide full details of the CPU and GPU, and (b) we can perhaps then start to look at debug builds that we can send you, in case we're not able to get hold of the necessary equipment for reproducing it..

thanks

bobaoapae commented 10 months ago

Hi @bobaoapae - sadly we've never managed to reproduce this on any of the machines we have access to. If you have a particular machine where you can reproduce it yourself, then (a) could you please provide full details of the CPU and GPU, and (b) we can perhaps then start to look at debug builds that we can send you, in case we're not able to get hold of the necessary equipment for reproducing it..

thanks

The problem i'm having it's this one:

https://github.com/airsdk/Adobe-Runtime-Support/issues/35

The same error, it's very old and never get fixed.

Only happens in old machines with intel HD graphics.

ajwfrost commented 10 months ago

I'd not seen that other message, that does seem to have a little more information about the cause of the problem. We've got machines with Intel UHD Graphics but they don't seem to be affected, I'll check with our IT folk to see if we may have any older machines with Intel HD Graphics -> any details such as graphics card specs etc may help. But knowing that this is a 3613 error from within an assembleagal / program upload might help.

Has anyone on this thread got a machine themselves that can reproduce the issue? There's a possibility we'd just have to try to identify the GPU details and then have it automatically switch over to software rendering to avoid these problems..

raresn commented 10 months ago

We have this problem with several of our clients. Intel graphics cards always gives us trouble. A workaround for us was to add a parameter to the exe and catch in the app, then swith the render mode: if(Agenda.accelerationType == "software") { this._starling = new Starling(MainSprite, this.stage, null, null, Context3DRenderMode.SOFTWARE); } else { this._starling = new Starling(MainSprite, this.stage); }

bobaoapae commented 10 months ago

I'd not seen that other message, that does seem to have a little more information about the cause of the problem. We've got machines with Intel UHD Graphics but they don't seem to be affected, I'll check with our IT folk to see if we may have any older machines with Intel HD Graphics -> any details such as graphics card specs etc may help. But knowing that this is a 3613 error from within an assembleagal / program upload might help.

Has anyone on this thread got a machine themselves that can reproduce the issue? There's a possibility we'd just have to try to identify the GPU details and then have it automatically switch over to software rendering to avoid these problems..

I have a machine where i can reproduce that problem. SO: Windows 10 CPU: Intel(R) Core(TM) i3 CPU M 370 @ 2.40GHz 2.40 GHz https://www.intel.com.br/content/www/br/pt/products/sku/49020/intel-core-i3370m-processor-3m-cache-2-40-ghz/specifications.html

Data from Adobe Scout CC: Forcing Direct9 GPU: Intel(R) HD Graphics. GPU Driver: igdumdx32.dll GPU Interface: DirectX 9.0 GPU Driver Version Low: 658260 GPU Driver Version High: 524303 GPU Vendor ID: 32902 GPU Device ID: 70

But software rendering fallback will make things worses, the application just need to fallback to directx9, as the problem only occurs in directx11 on these machines.

bobaoapae commented 10 months ago

I have other machine, with have a: Intel(R) Core(TM) i3-10100F, in this machine i get a full black screen, adobe scout don't connect, the application (the code)works just don't render nothing. Forcing D9 also fix the problem.

in both case i have access to debugger the problem.

ajwfrost commented 10 months ago

Thanks @bobaoapae - are you able to confirm whether or not you see any exceptions being thrown (per the mention of AS3/Stage3D error 3613 being thrown in the above-referenced issue)? And/or, do you see this also when using normal displaylist stuff if you have direct/gpu render modes set up?

If you're using Starling, please enable the error checking/debug flag.

thanks

bobaoapae commented 10 months ago

In the machine with the i3 CPU M 370 i get the error 3613, only when using 3d (starling), normal display objects don't have problem.

in the other machine with i3-10100F i don't get any error, the screen just stay black.

In both case forcing D9 fix all issues.

In starling in my application the error come from this agal program:

private function getProgram(tinted:Boolean):Program3D
    {
        var target:Starling = Starling.current;
        var programName:String = QUAD_PROGRAM_NAME;

        if (mTexture)
            programName = getImageProgramName(tinted, mTexture.mipMapping,
                    mTexture.repeat, mTexture.format, mSmoothing);

        var program:Program3D = target.getProgram(programName);

        if (!program)
        {
            // this is the input data we'll pass to the shaders:
            //
            // va0 -> position
            // va1 -> color
            // va2 -> texCoords
            // vc0 -> alpha
            // vc1 -> mvpMatrix
            // fs0 -> texture

            var vertexShader:String;
            var fragmentShader:String;

            if (!mTexture) // Quad-Shaders
            {
                vertexShader =
                        "m44 op, va0, vc1 \n" + // 4x4 matrix transform to output clipspace
                        "mul v0, va1, vc0 \n";  // multiply alpha (vc0) with color (va1)

                fragmentShader =
                        "mov oc, v0       \n";  // output color
            }
            else // Image-Shaders
            {
                vertexShader = tinted ?
                        "m44 op, va0, vc1 \n" + // 4x4 matrix transform to output clipspace
                        "mul v0, va1, vc0 \n" + // multiply alpha (vc0) with color (va1)
                        "mov v1, va2      \n"   // pass texture coordinates to fragment program
                        :
                        "m44 op, va0, vc1 \n" + // 4x4 matrix transform to output clipspace
                        "mov v1, va2      \n";  // pass texture coordinates to fragment program

                fragmentShader = tinted ?
                        "tex ft1,  v1, fs0 <???> \n" + // sample texture 0
                        "mul  oc, ft1,  v0       \n"   // multiply color with texel color
                        :
                        "tex  oc,  v1, fs0 <???> \n";  // sample texture 0

                fragmentShader = fragmentShader.replace("<???>",
                        RenderSupport.getTextureLookupFlags(
                                mTexture.format, mTexture.mipMapping, mTexture.repeat, smoothing));
            }

            program = target.registerProgramFromSource(programName,
                    vertexShader, fragmentShader);
        }

        return program;
    }

The program it's this: [trace] Error assembling shader program: m44 op, va0, vc1 [trace] mul v0, va1, vc0 [trace] mov v1, va2 [trace] tex ft1, v1, fs0 <2d,clamp,linear,mipnone> [trace] mul oc, ft1, v0

ajwfrost commented 10 months ago

Hi @bobaoapae - would you be able to try extracting the DLL from the below zip, into your SDK's runtimes folder (runtimes\air\win\Adobe AIR\Versions\1.0\) and then run your test via ADL, with Adobe Scout running already.. Then if you can select all frames and go to the Trace Log panel in Scout, please copy/paste the debug output..

Adobe AIR.zip

thanks

ajwfrost commented 10 months ago

Hi @bobaoapae (or others) - wondering if you're able to get use the Scout log for this white screen issue using that test runtime? thanks

bobaoapae commented 10 months ago

sorry for the delay, the machine with problem it's from a customer, i need to remote connect when they allow.

logs-directx-crash.txt

ajwfrost commented 10 months ago

Ah okay, thanks .. so that shows a reason code (and these details also show this issue is all over the internet... it's fairly common..) So this is DXGI_ERROR_DEVICE_REMOVED (0x887A0005) which can happen for a range of reasons apparently, see https://learn.microsoft.com/en-us/windows/uwp/gaming/handling-device-lost-scenarios#investigating-the-cause-of-device-removed-errors We can add additional code to check for which of the reasons it might be..

It might also be useful if we could see a log from the same application on a machine where it does work!?

We'll also look to see if we can use these details to trigger an earlier test as to whether or not D3D11 will work and hence if we could automatically fall back to D3D9.

thanks

bobaoapae commented 10 months ago

Logs from my machine

logs-directx-no-crash.txt

Would be nice if d11 could be fixed instead of just fallback to d9

bobaoapae commented 10 months ago

Hi, other client with problem using D11, just black screen without any error, using the dll file don't trace any log to scout.

AMD Ryzen 5 5600X 6-Core Processor

ajwfrost commented 10 months ago

Hi - thanks for all this (and yes, getting it actually fixed would be a nice result!). We have an update runtime now with some more traces - particularly to try to capture that above issue when it's just starting up to a black screen without any Stage3D logs - and with a slightly different mechanism for Stage3D. If you're able to ask these folks for logs with this one, it would be great. many thanks https://transfer.harman.com/message/KJUrjlgP170Z7y0P54Cat4

bobaoapae commented 9 months ago

D11 also appresent worst performance. D11 should have best results or at least equal

Forcing use of D9: image Using D11 image

ajwfrost commented 9 months ago

Hi @bobaoapae - just wondering whether you were able to download that earlier updated version of the runtime, and whether anyone has managed to use this to reproduce the problem yet?

thanks

KupoGames commented 7 months ago

Hi, I'm having a similar problem, but I don't know if it's the same one. I'm not using Starling or Stage3D, just normal Flash display list. I have one user (on windows 10) who cannot see any graphics when they start my app, but they can still interact with the content of the app. The app only shows the Stage background color and nothing else (I know this because I set it to red).

The problem happens to them in AIR 50.2.3.5 and AIR 33, but NOT in AIR 21. I will try the fallback to DX9 trick and let you know if it helps...

KupoGames commented 7 months ago

The problem happens to them in AIR 50.2.3.5 and AIR 33, but NOT in AIR 21. I will try the fallback to DX9 trick and let you know if it helps...

I tried the fallback to DX9 trick and the user says it works now. I'm glad I found this thread! The user says his graphics card is a AMD Radeon RX 6600 and he just purchased the PC recently.

bobaoapae commented 6 months ago

Hi @bobaoapae - just wondering whether you were able to download that earlier updated version of the runtime, and whether anyone has managed to use this to reproduce the problem yet?

thanks

hey, sorry for the delay, i don't have much users to test this issue, i found a new one that i can remot connect to test, can we start testing again?

bobaoapae commented 2 days ago

@ajwfrost Will harman be able to fix the problems with D11 ? This it's a very old issue

ajwfrost commented 2 days ago

Without being able to reproduce these issues, it's a very tricky one to try to sort out.. If anyone has a machine where this can be reliably reproduced it would be good to check this further!

Just to summarise this: there appear to be issues with the DirectX11 implementation that can cause problems even with applications that don't use Stage3D, but most of the above issues are actually Stage3D-specific..

One thing I'm wondering ... it would be relatively straightforward to get a Windows build to use OpenGL ES for display and Stage3D, similar to how it works on Android/iPhone. In which case we could always use ANGLE, replicating how Chrome handles the WebGL content. Let me see if someone can look into this...

bobaoapae commented 2 days ago

I have one machine I can test, but on this one just the stage3d don't work, I already have seen users the normal stage don't work also but I don't have a machine to test this.

If opengl could be used I think till be a lot more useful