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