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

Author: Jesse Natalie <jenat...@microsoft.com>
Date:   Tue Nov  7 14:07:03 2023 -0800

d3d12: GL4.3

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26108>

---

 docs/features.txt                               | 22 +++++++++++-----------
 src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt |  1 -
 src/gallium/drivers/d3d12/d3d12_blit.cpp        |  3 ++-
 src/gallium/drivers/d3d12/d3d12_bufmgr.cpp      |  2 +-
 src/gallium/drivers/d3d12/d3d12_resource.cpp    |  6 +++---
 src/gallium/drivers/d3d12/d3d12_screen.cpp      |  9 ++++++---
 6 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/docs/features.txt b/docs/features.txt
index 7242f827b68..93eb15f183d 100644
--- a/docs/features.txt
+++ b/docs/features.txt
@@ -166,29 +166,29 @@ GL 4.2, GLSL 4.20 -- all DONE: freedreno/a6xx, nvc0, 
r600, radeonsi, llvmpipe, v
   GL_ARB_map_buffer_alignment                           DONE (all drivers)
 
 
-GL 4.3, GLSL 4.30 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, 
virgl, zink, iris, crocus/gen7.5+
+GL 4.3, GLSL 4.30 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, 
virgl, zink, d3d12, iris, crocus/gen7.5+
 
   GL_ARB_arrays_of_arrays                               DONE (all drivers that 
support GLSL 1.30)
   GL_ARB_ES3_compatibility                              DONE (all drivers that 
support GLSL 3.30)
   GL_ARB_clear_buffer_object                            DONE (all drivers)
-  GL_ARB_compute_shader                                 DONE (freedreno/a5xx+, 
softpipe, v3d, panfrost, d3d12, crocus/gen7+, asahi)
+  GL_ARB_compute_shader                                 DONE (freedreno/a5xx+, 
softpipe, v3d, panfrost, crocus/gen7+, asahi)
   GL_ARB_copy_image                                     DONE (freedreno/a6xx, 
nv50, softpipe, v3d, crocus)
   GL_KHR_debug                                          DONE (all drivers)
   GL_ARB_explicit_uniform_location                      DONE (all drivers that 
support GLSL)
-  GL_ARB_fragment_layer_viewport                        DONE (freedreno/a6xx, 
nv50, softpipe, d3d12, crocus/gen6+)
-  GL_ARB_framebuffer_no_attachments                     DONE (freedreno, 
softpipe, v3d, d3d12, asahi, crocus/gen7+)
+  GL_ARB_fragment_layer_viewport                        DONE (freedreno/a6xx, 
nv50, softpipe, crocus/gen6+)
+  GL_ARB_framebuffer_no_attachments                     DONE (freedreno, 
softpipe, v3d, asahi, crocus/gen7+)
   GL_ARB_internalformat_query2                          DONE (all drivers)
   GL_ARB_invalidate_subdata                             DONE (all drivers)
-  GL_ARB_multi_draw_indirect                            DONE (freedreno, 
softpipe, v3d, d3d12, crocus/gen7+, asahi)
+  GL_ARB_multi_draw_indirect                            DONE (freedreno, 
softpipe, v3d, crocus/gen7+, asahi)
   GL_ARB_program_interface_query                        DONE (all drivers)
-  GL_ARB_robust_buffer_access_behavior                  DONE (freedreno, d3d12)
-  GL_ARB_shader_image_size                              DONE (freedreno/a5xx+, 
softpipe, v3d, panfrost, d3d12, crocus/gen7+, asahi)
-  GL_ARB_shader_storage_buffer_object                   DONE (freedreno/a5xx+, 
softpipe, v3d, panfrost, d3d12, crocus/gen7+, asahi)
-  GL_ARB_stencil_texturing                              DONE (freedreno, nv50, 
softpipe, v3d, panfrost, d3d12, asahi)
-  GL_ARB_texture_buffer_range                           DONE (freedreno, nv50, 
softpipe, v3d, d3d12, crocus)
+  GL_ARB_robust_buffer_access_behavior                  DONE (freedreno)
+  GL_ARB_shader_image_size                              DONE (freedreno/a5xx+, 
softpipe, v3d, panfrost, crocus/gen7+, asahi)
+  GL_ARB_shader_storage_buffer_object                   DONE (freedreno/a5xx+, 
softpipe, v3d, panfrost, crocus/gen7+, asahi)
+  GL_ARB_stencil_texturing                              DONE (freedreno, nv50, 
softpipe, v3d, panfrost, asahi)
+  GL_ARB_texture_buffer_range                           DONE (freedreno, nv50, 
softpipe, v3d, crocus)
   GL_ARB_texture_query_levels                           DONE (all drivers that 
support GLSL 1.30)
   GL_ARB_texture_storage_multisample                    DONE (all drivers that 
support GL_ARB_texture_multisample)
-  GL_ARB_texture_view                                   DONE (freedreno, nv50, 
softpipe, v3d, asahi, crocus/gen7+, d3d12)
+  GL_ARB_texture_view                                   DONE (freedreno, nv50, 
softpipe, v3d, asahi, crocus/gen7+)
   GL_ARB_vertex_attrib_binding                          DONE (all drivers)
 
 
diff --git a/src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt 
b/src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt
index 6af39436eaf..05029511140 100644
--- a/src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt
+++ b/src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt
@@ -405,7 +405,6 @@ spec@nv_copy_depth_to_color@nv_copy_depth_to_color 0 
0x223344ff,Fail
 spec@nv_copy_depth_to_color@nv_copy_depth_to_color 0 0x76356278,Fail
 spec@nv_copy_depth_to_color@nv_copy_depth_to_color 1 0x223344ff,Fail
 spec@nv_copy_depth_to_color@nv_copy_depth_to_color 1 0x76356278,Fail
-spec@nv_copy_image@nv_copy_image-formats,Crash
 wgl@wgl-multi-context-single-window,Fail
 
 # remove this after 
https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/843
diff --git a/src/gallium/drivers/d3d12/d3d12_blit.cpp 
b/src/gallium/drivers/d3d12/d3d12_blit.cpp
index 6c0bf15709c..1c6af1e8483 100644
--- a/src/gallium/drivers/d3d12/d3d12_blit.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_blit.cpp
@@ -485,7 +485,8 @@ create_staging_resource(struct d3d12_context *ctx,
    templ.nr_samples = src->base.b.nr_samples;
    templ.nr_storage_samples = src->base.b.nr_storage_samples;
    templ.usage = PIPE_USAGE_STAGING;
-   templ.bind = util_format_is_depth_or_stencil(templ.format) ? 
PIPE_BIND_DEPTH_STENCIL : PIPE_BIND_RENDER_TARGET;
+   templ.bind = util_format_is_depth_or_stencil(templ.format) ? 
PIPE_BIND_DEPTH_STENCIL :
+      util_format_is_compressed(templ.format) ? 0 : PIPE_BIND_RENDER_TARGET;
    templ.target = src->base.b.target;
 
    staging_res = ctx->base.screen->resource_create(ctx->base.screen, &templ);
diff --git a/src/gallium/drivers/d3d12/d3d12_bufmgr.cpp 
b/src/gallium/drivers/d3d12/d3d12_bufmgr.cpp
index cf37598dad3..8f4530e79fd 100644
--- a/src/gallium/drivers/d3d12/d3d12_bufmgr.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_bufmgr.cpp
@@ -100,7 +100,7 @@ d3d12_bo_wrap_res(struct d3d12_screen *screen, 
ID3D12Resource *res, enum d3d12_r
 
    bo->residency_status = residency;
    bo->last_used_timestamp = 0;
-   desc.Flags = D3D12_RESOURCE_FLAG_NONE;
+   desc.Flags &= ~D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS;
    screen->dev->GetCopyableFootprints(&desc, 0, total_subresources, 0, 
nullptr, nullptr, nullptr, &bo->estimated_size);
    if (residency == d3d12_resident) {
       mtx_lock(&screen->submit_mutex);
diff --git a/src/gallium/drivers/d3d12/d3d12_resource.cpp 
b/src/gallium/drivers/d3d12/d3d12_resource.cpp
index 6b4d398aaf9..168decec6f4 100644
--- a/src/gallium/drivers/d3d12/d3d12_resource.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_resource.cpp
@@ -417,7 +417,7 @@ convert_planar_resource(struct d3d12_resource *res)
 #if DEBUG
       struct d3d12_screen *screen = d3d12_screen(res->base.b.screen);
       D3D12_RESOURCE_DESC desc = GetDesc(res->bo->res);
-      desc.Flags = D3D12_RESOURCE_FLAG_NONE;
+      desc.Flags &= ~D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS;
       D3D12_PLACED_SUBRESOURCE_FOOTPRINT placed_footprint = {};
       D3D12_SUBRESOURCE_FOOTPRINT *footprint = &placed_footprint.Footprint;
       unsigned subresource = plane * desc.MipLevels * desc.DepthOrArraySize;
@@ -598,7 +598,7 @@ d3d12_resource_from_handle(struct pipe_screen *pscreen,
    if (templ && handle->format != templ->format) {
       unsigned subresource = handle->plane * incoming_res_desc.MipLevels * 
incoming_res_desc.DepthOrArraySize;
       auto temp_desc = incoming_res_desc;
-      temp_desc.Flags = D3D12_RESOURCE_FLAG_NONE;
+      temp_desc.Flags &= ~D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS;
       screen->dev->GetCopyableFootprints(&temp_desc, subresource, 1, 0, 
&placed_footprint, nullptr, nullptr, nullptr);
    } else {
       footprint->Format = incoming_res_desc.Format;
@@ -1099,7 +1099,7 @@ fill_buffer_location(struct d3d12_context *ctx,
    D3D12_PLACED_SUBRESOURCE_FOOTPRINT footprint;
    uint64_t offset = 0;
    auto descr = GetDesc(d3d12_resource_underlying(res, &offset));
-   descr.Flags = D3D12_RESOURCE_FLAG_NONE;
+   descr.Flags &= ~D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS;
    struct d3d12_screen *screen = d3d12_screen(ctx->base.screen);
    ID3D12Device* dev = screen->dev;
 
diff --git a/src/gallium/drivers/d3d12/d3d12_screen.cpp 
b/src/gallium/drivers/d3d12/d3d12_screen.cpp
index 821c16ea922..31af26c9505 100644
--- a/src/gallium/drivers/d3d12/d3d12_screen.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_screen.cpp
@@ -193,9 +193,9 @@ d3d12_get_param(struct pipe_screen *pscreen, enum pipe_cap 
param)
       return 1;
 
    case PIPE_CAP_GLSL_FEATURE_LEVEL:
-      return 420;
+      return 430;
    case PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY:
-      return 420;
+      return 430;
    case PIPE_CAP_ESSL_FEATURE_LEVEL:
       return 310;
 
@@ -332,6 +332,7 @@ d3d12_get_param(struct pipe_screen *pscreen, enum pipe_cap 
param)
    case PIPE_CAP_TIMELINE_SEMAPHORE_IMPORT:
    case PIPE_CAP_CLIP_HALFZ:
    case PIPE_CAP_VS_LAYER_VIEWPORT:
+   case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
       return 1;
 
    case PIPE_CAP_MAX_VERTEX_STREAMS:
@@ -447,7 +448,9 @@ d3d12_get_shader_param(struct pipe_screen *pscreen,
       return 65536;
 
    case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
-      return 13; /* 15 - 2 for lowered uniforms and state vars*/
+      if (screen->opts.ResourceBindingTier < D3D12_RESOURCE_BINDING_TIER_3)
+         return 13; /* 15 - 2 for lowered uniforms and state vars*/
+      return 15;
 
    case PIPE_SHADER_CAP_MAX_TEMPS:
       return INT_MAX;

Reply via email to