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