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

Author: Jesse Natalie <[email protected]>
Date:   Sat Oct 29 07:53:45 2022 -0700

d3d12: Advertise PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT

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

---

 docs/features.txt                               |  2 +-
 src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt | 17 +++--------------
 src/gallium/drivers/d3d12/d3d12_resource.cpp    |  7 ++++++-
 src/gallium/drivers/d3d12/d3d12_screen.cpp      |  1 +
 4 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/docs/features.txt b/docs/features.txt
index 8e644d379bb..a85da4c6524 100644
--- a/docs/features.txt
+++ b/docs/features.txt
@@ -195,7 +195,7 @@ GL 4.3, GLSL 4.30 -- all DONE: freedreno/a6xx, i965/gen8+, 
nvc0, r600, radeonsi,
 GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, r600, radeonsi, llvmpipe, zink
 
   GL_MAX_VERTEX_ATTRIB_STRIDE                           DONE (all drivers)
-  GL_ARB_buffer_storage                                 DONE (freedreno, i965, 
nv50, v3d, vc4, lima, panfrost, asahi)
+  GL_ARB_buffer_storage                                 DONE (freedreno, i965, 
nv50, v3d, vc4, lima, panfrost, asahi, d3d12)
   GL_ARB_clear_texture                                  DONE (i965, nv50, 
softpipe, virgl)
   GL_ARB_enhanced_layouts                               DONE (freedreno/a3xx+, 
i965, nv50, softpipe, virgl)
   - compile-time constant expressions                   DONE
diff --git a/src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt 
b/src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt
index 628ca865d3c..acb903d8235 100644
--- a/src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt
+++ b/src/gallium/drivers/d3d12/ci/d3d12-quick_gl.txt
@@ -285,14 +285,6 @@ 
spec/arb_blend_func_extended/arb_blend_func_extended-fbo-extended-blend-pattern_
 spec/arb_blend_func_extended/arb_blend_func_extended-fbo-extended-blend_gles3: 
skip
 spec/arb_blend_func_extended/arb_blend_func_extended-getfragdataindex_gles3: 
skip
 spec/arb_blend_func_extended/arb_blend_func_extended-output-location_gles3: 
skip
-spec/arb_buffer_storage/bufferstorage-persistent draw: skip
-spec/arb_buffer_storage/bufferstorage-persistent draw client-storage: skip
-spec/arb_buffer_storage/bufferstorage-persistent draw coherent: skip
-spec/arb_buffer_storage/bufferstorage-persistent draw coherent client-storage: 
skip
-spec/arb_buffer_storage/bufferstorage-persistent read: skip
-spec/arb_buffer_storage/bufferstorage-persistent read client-storage: skip
-spec/arb_buffer_storage/bufferstorage-persistent read coherent: skip
-spec/arb_buffer_storage/bufferstorage-persistent read coherent client-storage: 
skip
 spec/arb_buffer_storage/bufferstorage-persistent_gles3 draw: skip
 spec/arb_buffer_storage/bufferstorage-persistent_gles3 draw client-storage: 
skip
 spec/arb_buffer_storage/bufferstorage-persistent_gles3 draw coherent: skip
@@ -1505,7 +1497,6 @@ spec/arb_sparse_buffer/buffer-data: skip
 spec/arb_sparse_buffer/commit: skip
 spec/arb_sparse_buffer/minmax: skip
 spec/arb_stencil_texturing/draw: fail
-spec/arb_sync/clientwaitsync-timeout: skip
 spec/arb_texture_barrier/arb_texture_barrier-blending-in-shader 32 1 1 128 1: 
skip
 spec/arb_texture_barrier/arb_texture_barrier-blending-in-shader 32 1 1 128 2: 
skip
 spec/arb_texture_barrier/arb_texture_barrier-blending-in-shader 32 1 1 128 3: 
skip
@@ -1650,7 +1641,6 @@ 
spec/arb_texture_barrier/arb_texture_barrier-blending-in-shader 512 42 8 8 3: sk
 spec/arb_texture_barrier/arb_texture_barrier-blending-in-shader 512 42 8 8 4: 
skip
 spec/arb_texture_barrier/arb_texture_barrier-blending-in-shader 512 42 8 8 7: 
skip
 spec/arb_texture_barrier/arb_texture_barrier-blending-in-shader 512 42 8 8 8: 
skip
-spec/arb_texture_buffer_object/bufferstorage: skip
 spec/arb_texture_buffer_object/negative-unsupported: skip
 spec/arb_texture_buffer_range/ranges-2: fail
 spec/arb_texture_buffer_range/ranges-2 compat: fail
@@ -2515,7 +2505,6 @@ spec/arb_transform_feedback2/change objects while paused 
(gles3): skip
 spec/arb_transform_feedback_instanced/draw-auto instanced: fail
 
spec/arb_transform_feedback_overflow_query/arb_transform_feedback_overflow_query-basic:
 skip
 
spec/arb_transform_feedback_overflow_query/arb_transform_feedback_overflow_query-errors:
 skip
-spec/arb_uniform_buffer_object/bufferstorage: skip
 spec/arb_vertex_attrib_64bit/arb_vertex_attrib_64bit-overlapping-locations 
api: crash
 spec/arb_vertex_attrib_64bit/arb_vertex_attrib_64bit-overlapping-locations 
shader: crash
 spec/arb_vertex_program/arb_vertex_program-matrix-property-bindings: fail
@@ -3519,10 +3508,10 @@ wgl/wgl-sanity: skip
 summary:
        name:  results
        ----  --------
-       pass:    17865
+       pass:    17881
        fail:     2043
       crash:       11
-       skip:     1445
+       skip:     1434
     timeout:        0
        warn:       10
  incomplete:        0
@@ -3531,4 +3520,4 @@ summary:
     changes:        0
       fixes:        0
 regressions:        0
-      total:    21383
+      total:    21388
diff --git a/src/gallium/drivers/d3d12/d3d12_resource.cpp 
b/src/gallium/drivers/d3d12/d3d12_resource.cpp
index 0dde1f57825..957d14c0b2a 100644
--- a/src/gallium/drivers/d3d12/d3d12_resource.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_resource.cpp
@@ -146,7 +146,12 @@ init_buffer(struct d3d12_screen *screen,
     * element state */
    assert(templ->format == d3d12_emulated_vtx_format(templ->format));
 
-   switch (templ->usage) {
+   if ((templ->flags & PIPE_RESOURCE_FLAG_MAP_PERSISTENT) &&
+       res->base.b.usage == PIPE_USAGE_DEFAULT)
+   {
+      res->base.b.usage = PIPE_USAGE_STAGING;
+   }
+   switch (res->base.b.usage) {
    case PIPE_USAGE_DEFAULT:
    case PIPE_USAGE_IMMUTABLE:
       bufmgr = screen->cache_bufmgr;
diff --git a/src/gallium/drivers/d3d12/d3d12_screen.cpp 
b/src/gallium/drivers/d3d12/d3d12_screen.cpp
index 5446d5b5d2a..0e9d0453ae0 100644
--- a/src/gallium/drivers/d3d12/d3d12_screen.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_screen.cpp
@@ -265,6 +265,7 @@ d3d12_get_param(struct pipe_screen *pscreen, enum pipe_cap 
param)
       return screen->opts.PSSpecifiedStencilRefSupported;
 
    case PIPE_CAP_SEAMLESS_CUBE_MAP:
+   case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
    case PIPE_CAP_TEXTURE_QUERY_LOD:
    case PIPE_CAP_VS_INSTANCEID:
    case PIPE_CAP_TGSI_TEX_TXF_LZ:

Reply via email to