Mesa (main): d3d12: Replace pipe cap literals with D3D12 defines when available

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Dec 30 18:51:46 UTC 2021


Module: Mesa
Branch: main
Commit: 5b32915055c2def05a000990424fb5649a85e1a3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5b32915055c2def05a000990424fb5649a85e1a3

Author: Jesse Natalie <jenatali at microsoft.com>
Date:   Wed Dec  8 06:48:39 2021 -0800

d3d12: Replace pipe cap literals with D3D12 defines when available

Also remove references to feature levels < 11.0, D3D12 doesn't support those

Reviewed-by: Sil Vilerino <sivileri at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14161>

---

 src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt |  5 ++-
 src/gallium/drivers/d3d12/d3d12_screen.cpp      | 46 +++++++------------------
 2 files changed, 14 insertions(+), 37 deletions(-)

diff --git a/src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt b/src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt
index 33981a8691f..14275f71d00 100644
--- a/src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt
+++ b/src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt
@@ -4187,7 +4187,6 @@ spec/ext_texture_array/copyteximage 2d_array samples=32: skip
 spec/ext_texture_array/copyteximage 2d_array samples=4: skip
 spec/ext_texture_array/copyteximage 2d_array samples=6: skip
 spec/ext_texture_array/copyteximage 2d_array samples=8: skip
-spec/ext_texture_array/maxlayers: fail
 spec/ext_texture_compression_bptc/bptc-api_gles2: skip
 spec/ext_texture_compression_latc/fbo-generatemipmap-formats: skip
 spec/ext_texture_compression_latc/fbo-generatemipmap-formats-signed: skip
@@ -4711,8 +4710,8 @@ wgl/wgl-sanity: skip
 summary:
        name:  results
        ----  --------
-       pass:    14313
-       fail:      481
+       pass:    14314
+       fail:      480
       crash:       68
        skip:     4141
     timeout:        0
diff --git a/src/gallium/drivers/d3d12/d3d12_screen.cpp b/src/gallium/drivers/d3d12/d3d12_screen.cpp
index 24da072914a..c4dee5177f9 100644
--- a/src/gallium/drivers/d3d12/d3d12_screen.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_screen.cpp
@@ -133,37 +133,19 @@ d3d12_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
       return 1;
 
    case PIPE_CAP_MAX_RENDER_TARGETS:
-      if (screen->max_feature_level >= D3D_FEATURE_LEVEL_10_0)
-         return 8;
-      else if (screen->max_feature_level == D3D_FEATURE_LEVEL_9_3)
-         return 4;
-      return 1;
+      return D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT;
 
    case PIPE_CAP_TEXTURE_SWIZZLE:
       return 1;
 
    case PIPE_CAP_MAX_TEXTURE_2D_SIZE:
-      if (screen->max_feature_level >= D3D_FEATURE_LEVEL_11_0)
-         return 16384;
-      else if (screen->max_feature_level >= D3D_FEATURE_LEVEL_10_0)
-         return 8192;
-      else if (screen->max_feature_level >= D3D_FEATURE_LEVEL_9_3)
-         return 4096;
-      return 2048;
+      return D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION;
 
    case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
-      if (screen->max_feature_level >= D3D_FEATURE_LEVEL_10_0)
-         return 11;
-      return 9;
+      return 11; // D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION == 2^10
 
    case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
-      if (screen->max_feature_level >= D3D_FEATURE_LEVEL_11_0)
-         return 14;
-      else if (screen->max_feature_level >= D3D_FEATURE_LEVEL_10_0)
-         return 13;
-      else if (screen->max_feature_level == D3D_FEATURE_LEVEL_9_3)
-         return 12;
-      return 9;
+      return D3D12_REQ_MIP_LEVELS;
 
    case PIPE_CAP_PRIMITIVE_RESTART:
    case PIPE_CAP_INDEP_BLEND_ENABLE:
@@ -182,11 +164,7 @@ d3d12_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
       return 1;
 
    case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS:
-      if (screen->max_feature_level >= D3D_FEATURE_LEVEL_11_0)
-         return 1 << 14;
-      else if (screen->max_feature_level >= D3D_FEATURE_LEVEL_10_0)
-         return 1 << 13;
-      return 0;
+      return D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION;
 
    case PIPE_CAP_DEPTH_CLIP_DISABLE:
       return 1;
@@ -228,7 +206,7 @@ d3d12_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
       return PIPE_ENDIAN_NATIVE; /* unsure */
 
    case PIPE_CAP_MAX_VIEWPORTS:
-      return 1; /* probably wrong */
+      return D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT;
 
    case PIPE_CAP_MIXED_FRAMEBUFFER_SIZES:
       return 1;
@@ -265,7 +243,7 @@ d3d12_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
       return D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT;
 
    case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
-      return 256;
+      return D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT;
 
    case PIPE_CAP_PCI_GROUP:
    case PIPE_CAP_PCI_BUS:
@@ -301,20 +279,20 @@ d3d12_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
       return 1;
 
    case PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS:
-      return 4;
+      return D3D12_SO_BUFFER_SLOT_COUNT;
 
    case PIPE_CAP_MAX_STREAM_OUTPUT_SEPARATE_COMPONENTS:
    case PIPE_CAP_MAX_STREAM_OUTPUT_INTERLEAVED_COMPONENTS:
-      return 16 * 4;
+      return D3D12_SO_OUTPUT_COMPONENT_COUNT;
 
    /* Geometry shader output. */
    case PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES:
-      return 256;
+      return D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES;
    case PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS:
-      return 256 * 4;
+      return D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT;
 
    case PIPE_CAP_MAX_VARYINGS:
-      return 32;
+      return D3D12_PS_INPUT_REGISTER_COUNT;
 
    case PIPE_CAP_NIR_COMPACT_ARRAYS:
       return 1;



More information about the mesa-commit mailing list