Mesa (main): d3d12: Pass explicit context to pre/post draw surface blits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Nov 9 01:32:00 UTC 2021


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

Author: Jesse Natalie <jenatali at microsoft.com>
Date:   Thu Nov  4 10:15:56 2021 -0700

d3d12: Pass explicit context to pre/post draw surface blits

Reviewed By: Bill Kristiansen <billkris at microsoft.com>

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

---

 src/gallium/drivers/d3d12/d3d12_draw.cpp    |  4 ++--
 src/gallium/drivers/d3d12/d3d12_surface.cpp | 14 ++++++++------
 src/gallium/drivers/d3d12/d3d12_surface.h   |  6 ++++--
 3 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/gallium/drivers/d3d12/d3d12_draw.cpp b/src/gallium/drivers/d3d12/d3d12_draw.cpp
index c48c57c5c64..a76e73d4660 100644
--- a/src/gallium/drivers/d3d12/d3d12_draw.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_draw.cpp
@@ -479,7 +479,7 @@ d3d12_draw_vbo(struct pipe_context *pctx,
    for (int i = 0; i < ctx->fb.nr_cbufs; ++i) {
       if (ctx->fb.cbufs[i]) {
          struct d3d12_surface *surface = d3d12_surface(ctx->fb.cbufs[i]);
-         conversion_modes[i] = d3d12_surface_update_pre_draw(surface, d3d12_rtv_format(ctx, i));
+         conversion_modes[i] = d3d12_surface_update_pre_draw(pctx, surface, d3d12_rtv_format(ctx, i));
          if (conversion_modes[i] != D3D12_SURFACE_CONVERSION_NONE)
             ctx->cmdlist_dirty |= D3D12_DIRTY_FRAMEBUFFER;
       }
@@ -759,7 +759,7 @@ d3d12_draw_vbo(struct pipe_context *pctx,
    for (int i = 0; i < ctx->fb.nr_cbufs; ++i) {
       if (ctx->fb.cbufs[i]) {
          struct d3d12_surface *surface = d3d12_surface(ctx->fb.cbufs[i]);
-         d3d12_surface_update_post_draw(surface, conversion_modes[i]);
+         d3d12_surface_update_post_draw(pctx, surface, conversion_modes[i]);
       }
    }
 }
diff --git a/src/gallium/drivers/d3d12/d3d12_surface.cpp b/src/gallium/drivers/d3d12/d3d12_surface.cpp
index ab74e5a342b..64ee32af766 100644
--- a/src/gallium/drivers/d3d12/d3d12_surface.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_surface.cpp
@@ -280,7 +280,7 @@ d3d12_surface_destroy(struct pipe_context *pctx,
 }
 
 static void
-blit_surface(struct d3d12_surface *surface, bool pre)
+blit_surface(struct pipe_context *pctx, struct d3d12_surface *surface, bool pre)
 {
    struct pipe_blit_info info = {};
 
@@ -297,11 +297,12 @@ blit_surface(struct d3d12_surface *surface, bool pre)
    info.src.box.depth = info.dst.box.depth = 0;
    info.mask = PIPE_MASK_RGBA;
 
-   d3d12_blit(surface->base.context, &info);
+   d3d12_blit(pctx, &info);
 }
 
 enum d3d12_surface_conversion_mode
-d3d12_surface_update_pre_draw(struct d3d12_surface *surface,
+d3d12_surface_update_pre_draw(struct pipe_context *pctx,
+                              struct d3d12_surface *surface,
                               DXGI_FORMAT format)
 {
    struct d3d12_screen *screen = d3d12_screen(surface->base.context->screen);
@@ -337,7 +338,7 @@ d3d12_surface_update_pre_draw(struct d3d12_surface *surface,
          surface->rgba_texture = screen->base.resource_create(&screen->base, &templ);
       }
 
-      blit_surface(surface, true);
+      blit_surface(pctx, surface, true);
       res = d3d12_resource(surface->rgba_texture);
    }
 
@@ -350,11 +351,12 @@ d3d12_surface_update_pre_draw(struct d3d12_surface *surface,
 }
 
 void
-d3d12_surface_update_post_draw(struct d3d12_surface *surface,
+d3d12_surface_update_post_draw(struct pipe_context *pctx,
+                               struct d3d12_surface *surface,
                                enum d3d12_surface_conversion_mode mode)
 {
    if (mode == D3D12_SURFACE_CONVERSION_BGRA_UINT)
-      blit_surface(surface, false);
+      blit_surface(pctx, surface, false);
 }
 
 D3D12_CPU_DESCRIPTOR_HANDLE
diff --git a/src/gallium/drivers/d3d12/d3d12_surface.h b/src/gallium/drivers/d3d12/d3d12_surface.h
index b0409849ec7..f958d32e96b 100644
--- a/src/gallium/drivers/d3d12/d3d12_surface.h
+++ b/src/gallium/drivers/d3d12/d3d12_surface.h
@@ -52,11 +52,13 @@ d3d12_surface(struct pipe_surface *psurf)
 }
 
 enum d3d12_surface_conversion_mode
-d3d12_surface_update_pre_draw(struct d3d12_surface *surface,
+d3d12_surface_update_pre_draw(struct pipe_context *pctx,
+                              struct d3d12_surface *surface,
                               DXGI_FORMAT format);
 
 void
-d3d12_surface_update_post_draw(struct d3d12_surface *surface,
+d3d12_surface_update_post_draw(struct pipe_context *pctx,
+                               struct d3d12_surface *surface,
                                enum d3d12_surface_conversion_mode mode);
 
 D3D12_CPU_DESCRIPTOR_HANDLE



More information about the mesa-commit mailing list