Is AMD Pro WX 3100 for me?

Hey all,

I currently have RX480 for my Linux host and Vega 64 for my gaming VM. And it all works fine enough.

But I want to replace my RX480 with a single slot and low power and quiet GPU that will do what I need easily.

So, my current requirements are handled by RX480 just fine:

  • 3840x1600 screen via DP 1.4 @144Hz.
  • Snappy desktop experience (I’m running swaywm) and at the same time I’m content with 20 FPS in games, heh.
  • No gaming (got a Windows Vega VM for that)
  • Youtube/Netflix for video
  • General devops-y/developer usage - tons of browser tabs, an IDE, compiling here and there – nothing really GFX intensive
  • Bit of photo editing via OpenCL (nice to have but not a requirement)

What the RX480 doesn’t have and I want is the form factor:

  • Single slot
  • PCIe slot powered
  • Blower style cooling

So I’m wondering if WX 3100 would do the job that I need it to and has good enough Linux compatibility? Or should I be looking for something else?

Any advice highly welcomed!

Thanks!

Looking at images of the card, I noticed it’s only PCIe X8. As it’s based on the AMD RX540 GPU it should have Linux support so chances are it’ll fit your use case. By the looks of it it’s not overly expensive, so worth a try. Keep the RX480 at least for a while, in case it doesn’t work out.

I am running WX 3100 with dual 4k@60 displays on Arch. And I can check some things. (Ryzen 3700x - so no secondary APU)

clinfo on mesa-opencl (amdgpu driver):

Number of platforms                               1
  Platform Name                                   Clover
  Platform Vendor                                 Mesa
  Platform Version                                OpenCL 1.1 Mesa 21.2.3
  Platform Profile                                FULL_PROFILE
  Platform Extensions                             cl_khr_icd
  Platform Extensions function suffix             MESA

  Platform Name                                   Clover
Number of devices                                 1
  Device Name                                     AMD Radeon Pro WX3100 (POLARIS12, DRM 3.41.0, 5.13.13-arch1-1, LLVM 12.0.1)
  Device Vendor                                   AMD
  Device Vendor ID                                0x1002
  Device Version                                  OpenCL 1.1 Mesa 21.2.3
  Device Numeric Version                          0x401000 (1.1.0)
  Driver Version                                  21.2.3
  Device OpenCL C Version                         OpenCL C 1.1 
  Device Type                                     GPU
  Device Profile                                  FULL_PROFILE
  Device Available                                Yes
  Compiler Available                              Yes
  Max compute units                               8
  Max clock frequency                             1219MHz
  Max work item dimensions                        3
  Max work item sizes                             256x256x256
  Max work group size                             256
  Preferred work group size multiple (kernel)     64
  Preferred / native vector sizes                 
    char                                                16 / 16      
    short                                                8 / 8       
    int                                                  4 / 4       
    long                                                 2 / 2       
    half                                                 0 / 0        (n/a)
    float                                                4 / 4       
    double                                               2 / 2        (cl_khr_fp64)
  Half-precision Floating-point support           (n/a)
  Single-precision Floating-point support         (core)
    Denormals                                     No
    Infinity and NANs                             Yes
    Round to nearest                              Yes
    Round to zero                                 No
    Round to infinity                             No
    IEEE754-2008 fused multiply-add               No
    Support is emulated in software               No
    Correctly-rounded divide and sqrt operations  No
  Double-precision Floating-point support         (cl_khr_fp64)
    Denormals                                     Yes
    Infinity and NANs                             Yes
    Round to nearest                              Yes
    Round to zero                                 Yes
    Round to infinity                             Yes
    IEEE754-2008 fused multiply-add               Yes
    Support is emulated in software               No
  Address bits                                    64, Little-Endian
  Global memory size                              4294967296 (4GiB)
  Error Correction support                        No
  Max memory allocation                           3435973836 (3.2GiB)
  Unified memory for Host and Device              No
  Minimum alignment for any data type             128 bytes
  Alignment of base address                       32768 bits (4096 bytes)
  Global Memory cache type                        None
  Image support                                   No
  Local memory type                               Local
  Local memory size                               32768 (32KiB)
  Max number of constant args                     16
  Max constant buffer size                        67108864 (64MiB)
  Max size of kernel argument                     1024
  Queue properties                                
    Out-of-order execution                        No
    Profiling                                     Yes
  Profiling timer resolution                      0ns
  Execution capabilities                          
    Run OpenCL kernels                            Yes
    Run native kernels                            No
    ILs with version                              (n/a)
  Built-in kernels with version                   (n/a)
  Device Extensions                               cl_khr_byte_addressable_store cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_fp64 cl_khr_extended_versioning
  Device Extensions with Version                  cl_khr_byte_addressable_store                                    0x400000 (1.0.0)
                                                  cl_khr_global_int32_base_atomics                                 0x400000 (1.0.0)
                                                  cl_khr_global_int32_extended_atomics                             0x400000 (1.0.0)
                                                  cl_khr_local_int32_base_atomics                                  0x400000 (1.0.0)
                                                  cl_khr_local_int32_extended_atomics                              0x400000 (1.0.0)
                                                  cl_khr_int64_base_atomics                                        0x400000 (1.0.0)
                                                  cl_khr_int64_extended_atomics                                    0x400000 (1.0.0)
                                                  cl_khr_fp64                                                      0x400000 (1.0.0)
                                                  cl_khr_extended_versioning                                       0x400000 (1.0.0)

NULL platform behavior
  clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...)  Clover
  clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...)   Success [MESA]
  clCreateContext(NULL, ...) [default]            Success [MESA]
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_DEFAULT)  Success (1)
    Platform Name                                 Clover
    Device Name                                   AMD Radeon Pro WX3100 (POLARIS12, DRM 3.41.0, 5.13.13-arch1-1, LLVM 12.0.1)
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU)  Success (1)
    Platform Name                                 Clover
    Device Name                                   AMD Radeon Pro WX3100 (POLARIS12, DRM 3.41.0, 5.13.13-arch1-1, LLVM 12.0.1)
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL)  Success (1)
    Platform Name                                 Clover
    Device Name                                   AMD Radeon Pro WX3100 (POLARIS12, DRM 3.41.0, 5.13.13-arch1-1, LLVM 12.0.1)

ICD loader properties
  ICD loader Name                                 OpenCL ICD Loader
  ICD loader Vendor                               OCL Icd free software
  ICD loader Version                              2.3.1
  ICD loader Profile                              OpenCL 3.0

Can’t really tell much on the browser front since linux browsers’ GPU video acceleration is spotty - I can’t be sure if I the WX3100 doesn’t support some specific form or it’s just browser support. (I see high cpu usage when playing for example 4k youtube which could indicate software decoding)

But I can verify what is supported on api/player level:

vainfo:

vainfo: VA-API version: 1.12 (libva 2.12.0)
vainfo: Driver version: Mesa Gallium driver 21.2.1 for AMD Radeon Pro WX3100 (POLARIS12, DRM 3.41.0, 5.13.13-arch1-1, LLVM 12.0.1)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileNone                   :	VAEntrypointVideoProc

vdpauinfo:

display: :0.0   screen: 0
API version: 1
Information string: G3DVL VDPAU Driver Shared Library version 1.0

Video surface:

name   width height types
-------------------------------------------
420    16384 16384  NV12 YV12 
422    16384 16384  UYVY YUYV 
444    16384 16384  Y8U8V8A8 V8U8Y8A8 
420_16 16384 16384  
422_16 16384 16384  
444_16 16384 16384  

Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
MPEG1                          --- not supported ---
MPEG2_SIMPLE                    3 65536  4096  4096
MPEG2_MAIN                      3 65536  4096  4096
H264_BASELINE                  52 65536  4096  4096
H264_MAIN                      52 65536  4096  4096
H264_HIGH                      52 65536  4096  4096
VC1_SIMPLE                      1 65536  4096  4096
VC1_MAIN                        2 65536  4096  4096
VC1_ADVANCED                    4 65536  4096  4096
MPEG4_PART2_SP                  3 65536  4096  4096
MPEG4_PART2_ASP                 5 65536  4096  4096
DIVX4_QMOBILE                  --- not supported ---
DIVX4_MOBILE                   --- not supported ---
DIVX4_HOME_THEATER             --- not supported ---
DIVX4_HD_1080P                 --- not supported ---
DIVX5_QMOBILE                  --- not supported ---
DIVX5_MOBILE                   --- not supported ---
DIVX5_HOME_THEATER             --- not supported ---
DIVX5_HD_1080P                 --- not supported ---
H264_CONSTRAINED_BASELINE       0 65536  4096  4096
H264_EXTENDED                  --- not supported ---
H264_PROGRESSIVE_HIGH          --- not supported ---
H264_CONSTRAINED_HIGH          --- not supported ---
H264_HIGH_444_PREDICTIVE       --- not supported ---
VP9_PROFILE_0                  --- not supported ---
VP9_PROFILE_1                  --- not supported ---
VP9_PROFILE_2                  --- not supported ---
VP9_PROFILE_3                  --- not supported ---
HEVC_MAIN                      186 65536  4096  4096
HEVC_MAIN_10                   186 65536  4096  4096
HEVC_MAIN_STILL                --- not supported ---
HEVC_MAIN_12                   --- not supported ---
HEVC_MAIN_444                  --- not supported ---
HEVC_MAIN_444_10               --- not supported ---
HEVC_MAIN_444_12               --- not supported ---

Output surface:

name              width height nat types
----------------------------------------------------
B8G8R8A8         16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 P010 P016 A8I8 I8A8 
R8G8B8A8         16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 P010 P016 A8I8 I8A8 
R10G10B10A2      16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 P010 P016 A8I8 I8A8 
B10G10R10A2      16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 P010 P016 A8I8 I8A8 

Bitmap surface:

name              width height
------------------------------
B8G8R8A8         16384 16384
R8G8B8A8         16384 16384
R10G10B10A2      16384 16384
B10G10R10A2      16384 16384
A8               16384 16384

Video mixer:

feature name                    sup
------------------------------------
DEINTERLACE_TEMPORAL             y
DEINTERLACE_TEMPORAL_SPATIAL     -
INVERSE_TELECINE                 -
NOISE_REDUCTION                  y
SHARPNESS                        y
LUMA_KEY                         y
HIGH QUALITY SCALING - L1        y
HIGH QUALITY SCALING - L2        -
HIGH QUALITY SCALING - L3        -
HIGH QUALITY SCALING - L4        -
HIGH QUALITY SCALING - L5        -
HIGH QUALITY SCALING - L6        -
HIGH QUALITY SCALING - L7        -
HIGH QUALITY SCALING - L8        -
HIGH QUALITY SCALING - L9        -

parameter name                  sup      min      max
-----------------------------------------------------
VIDEO_SURFACE_WIDTH              y        48     4096
VIDEO_SURFACE_HEIGHT             y        48     4096
CHROMA_TYPE                      y  
LAYERS                           y         0        4

attribute name                  sup      min      max
-----------------------------------------------------
BACKGROUND_COLOR                 y  
CSC_MATRIX                       y  
NOISE_REDUCTION_LEVEL            y      0.00     1.00
SHARPNESS_LEVEL                  y     -1.00     1.00
LUMA_KEY_MIN_LUMA                y  
LUMA_KEY_MAX_LUMA                y

The hardest thing I threw at it is jellyfish-400-mbps-4k-uhd-hevc-10bit.mkv 400 Mbps 10bit 3840x2160 HEVC
(from https://jell.yfish.us/)

And I got a smooth playback with MPV declaring vaapi hardware decoding.

I run lots of tabs/browser windows and I found no issues on performance side but I am sometimes seeing jubmled frame-buffer on a browser popup window. It’s just within that popup window and interacting with it fixes it immedietely (hover/move/click/etc.)

1 Like

You might also want to check out the WX 3200. I was told that the WX cards (specifically 3100, actually) was finicky on Linux from a few people on the r/VFIO discord a while back so I was initially skeptical, but it has totally been fine for me with the regular amdgpu driver. It’s currently what I’m using under Arch (and I believe it’s been over a year now, maybe 2) to drive one 1080p and one 1440p display. I even use it for less graphics intensive games with Steam Play as well. (Minecraft works fine, too.)

Recently, I moved to using my Linux desktop as a VM and thus have also started to passthrough that GPU as well, and it seems to have reset fine on regular VM shutdowns/starts when I went to change some VM settings (but it’s not very common that I turn the Linux VM off anyway). There was one time when I was first starting to experiment with passing it through where I force stopped the VM and couldn’t reuse the GPU until restarting the host, though, but I don’t remember the specific steps that led to that situation.

Thank you all for the info, much appreciated and informative. Looks like 3100 would do the job just great for everything I need. Also checked Firefox, and yeah, looks like I’m CPU decoding video anyways. GPU prices being what they are, I’ve also found a 2100, which is supposed to be a 3100 with half the RAM. Looking at the radeontop I’m apparently well below 1GB usage for my desktop.

In theory, the 2100 should be just fine enough also, and considerably cheaper. Think I’m gonna give it a shot and get the 3100 if it doesn’t work out.

Ebay prices right now:

  • WX 3200 at ~$300
  • WX 3100 at ~$200
  • WX 2100 at ~$80

Oh dang, the WX 3200 is at 300 now? I actually paid 90 (lightly used) for mine off of Ebay… GPU prices are wild, huh.

Yup, the prices are crazy, went with 2100 for ~ $80, and hopefully it works out. Otherwise I’m probably gonna shelf this idea till the prices normalize a bit.

Welp, what can I say. The WX 2100 works just fine, can’t complain. Now if I only paid attention to the fact that it comes without a full length bracket… Oh well. There’s a fix for that too. :slight_smile:

1 Like

This topic was automatically closed 273 days after the last reply. New replies are no longer allowed.