Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Maxwell GM107/GM108 support #227

Closed
wants to merge 5 commits into from
Closed

Conversation

pchome
Copy link
Contributor

@pchome pchome commented Nov 16, 2024

IDK what GM000 for but lets use it for now.

Test reports:

-    Architecture ID:            0x000000e0 (Kepler)
+    Architecture ID:            0x00000110 (Maxwell)
 ...
-    Compute capable:            -
+    Compute capable:            Yes (Compute GPU topology flags: 0x0b)
Filters: [d3d],[d3d11],[d3d12],[drs],[sysinfo],[sysinfo-topo],[sysinfo-nvml],[sysinfo-hdr],[util],[system]
...
All tests passed (54839 assertions in 18 test cases)

@jp7677
Copy link
Owner

jp7677 commented Nov 16, 2024

Thanks. What is your motivation for this PR, does this changes something in a real life scenario?

@pchome
Copy link
Contributor Author

pchome commented Nov 16, 2024

Reports 'Compute capable' for PhysX.

FluidMark_0001.log

FluidMark 1.5.2 startup...
Checking NVIDIA PhysX hardware...
NVIDIA PhysX engine version 2.8.4 successfully started.
NVIDIA PhysX engine - found 1 PhysX GPU(s).
...
NVIDIA PhysX engine init - gpuHeapSize=512MB
NVIDIA PhysX engine - # of PPUs detected: 0
NVIDIA PhysX: PhysX hardware not detected (NX_HW_VERSION_NONE).
NVIDIA PhysX engine version 2.8.4 successfully started.
NVIDIA PhysX shutdown ok.
...

I usually play Borderlands w/ Full HW PhysX enabled, adds a lot of details and fun.

@jp7677
Copy link
Owner

jp7677 commented Nov 16, 2024

Please be a bit more verbose, I don't want to read between the lines.

So you have a Maxwell GM107/108 card and this change allows you to enable PhysX and it also works? Above log lines are from FluidMark without this patch, but with this patch the log changes and the benchmark works on GM107/108?

@pchome
Copy link
Contributor Author

pchome commented Nov 16, 2024

So you have a Maxwell GM107/108 card and this change allows you to enable PhysX and it also works?

Yes.
750Ti, GM107
GM108 - are something 800M (mobile(?))

Above log lines are from FluidMark without this patch, but with this patch the log changes and the benchmark works on GM107/108?

With this patch.
NVIDIA PhysX engine - found 1 PhysX GPU(s). - indication of success.
and
NVIDIA PhysX: PhysX hardware not detected (NX_HW_VERSION_NONE). - seems just reporting that it's not PPU (dedicated PhysX processor(?))

Without this patch (or nvcuda.dll) log lines are a bit different:
NVIDIA PhysX engine - found 0 PhysX GPU(s). - 'Compute capable' not found
no NVIDIA PhysX engine init line and no other PhysX related lines an the end.

Also there is a checkmark to enable GPU PhysX in FluidMark, which available with patch and disabled w/o.

Copy link
Owner

@jp7677 jp7677 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the clarification. I would love to see a few more additions, but looks good in general.

We need to extend/adjust the tests to cover the new cases:
https://github.com/jp7677/dxvk-nvapi/blob/master/tests/nvapi_sysinfo.cpp#L751 and https://github.com/jp7677/dxvk-nvapi/blob/master/tests/nvapi_sysinfo.cpp#L309 and https://github.com/jp7677/dxvk-nvapi/blob/master/tests/nvapi_d3d12.cpp#L243

It would also be nice to make a distinction between Maxwell (Gen1) and Maxwell (Gen2) here https://github.com/jp7677/dxvk-nvapi/blob/master/tests/nvapi_system.cpp#L46 since we know that difference now.

@@ -236,6 +236,7 @@ extern "C" {
pGraphicsCaps->minorSMVersion = 0;
break;
case NV_GPU_ARCHITECTURE_GM200:
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Accoording to https://en.wikipedia.org/wiki/Maxwell_(microarchitecture) we should correct this and report sm52 for Maxwell Gen2 and sm50 for Maxwell Gen2.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See info about Series_* too.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@@ -268,6 +268,10 @@ namespace dxvk {
|| (HasNvkDriver() && IsVkDeviceExtensionSupported(VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME)))
return NV_GPU_ARCHITECTURE_GM200;

// VK_EXT_shader_image_atomic_int64 is supported on Maxwell 1 (GM10x) and newer
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the soure ;) so no double check.
As double check I filtered all devices by this thing on vulkan.gpuinfo.org with additional finter for NV -- only gen1 maxwells and some weird setups was lowest.

@@ -184,6 +184,7 @@ namespace dxvk::env {
if (overrideStr == #arch) \
override = NV_GPU_ARCHITECTURE_##arch;
CHECK_ARCH(GK100)
CHECK_ARCH(GM000)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jp7677
Copy link
Owner

jp7677 commented Nov 19, 2024

Hi @pchome I took the liberty to add the remaining bits here #228
I've added your name as co-author since nearly all of the work came from this PR.

@jp7677
Copy link
Owner

jp7677 commented Nov 19, 2024

Merged manually with #228

@jp7677 jp7677 closed this Nov 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants