d3d10umd: De-bufferize OutputMerger

Remove all references to union pipe_surface_desc. This also removes
support for buffer RenderTargetView, requires further investigation.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13577
Fixes: 05f8b59c90 ("gallium: delete union pipe_surface_desc")

Signed-off-by: Max Ramanouski <max8rr8@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36769>
(cherry picked from commit 53b5c759c0)
This commit is contained in:
Max R 2025-06-02 08:58:50 +03:00 committed by Eric Engestrom
parent 55eda75262
commit ed3832671e
2 changed files with 32 additions and 35 deletions

View file

@ -1484,7 +1484,7 @@
"description": "d3d10umd: De-bufferize OutputMerger",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "05f8b59c90e9407cec499fbd4bc10b7801a44f5c",
"notes": null

View file

@ -83,7 +83,6 @@ CreateRenderTargetView(
{
LOG_ENTRYPOINT();
struct pipe_context *pipe = CastPipeContext(hDevice);
struct pipe_resource *resource = CastPipeResource(pCreateRenderTargetView->hDrvResource);
RenderTargetView *pRTView = CastRenderTargetView(hRenderTargetView);
@ -95,36 +94,35 @@ CreateRenderTargetView(
switch (pCreateRenderTargetView->ResourceDimension) {
case D3D10DDIRESOURCE_BUFFER:
desc.u.buf.first_element = pCreateRenderTargetView->Buffer.FirstElement;
desc.u.buf.last_element = pCreateRenderTargetView->Buffer.NumElements - 1 +
desc.u.buf.first_element;
break;
LOG_UNSUPPORTED("Render target view into buffer!");
SetError(hDevice, E_NOTIMPL);
return;
case D3D10DDIRESOURCE_TEXTURE1D:
ASSERT(pCreateRenderTargetView->Tex1D.ArraySize != (UINT)-1);
desc.u.tex.level = pCreateRenderTargetView->Tex1D.MipSlice;
desc.u.tex.first_layer = pCreateRenderTargetView->Tex1D.FirstArraySlice;
desc.u.tex.last_layer = pCreateRenderTargetView->Tex1D.ArraySize - 1 +
desc.u.tex.first_layer;
desc.level = pCreateRenderTargetView->Tex1D.MipSlice;
desc.first_layer = pCreateRenderTargetView->Tex1D.FirstArraySlice;
desc.last_layer = pCreateRenderTargetView->Tex1D.ArraySize - 1 +
desc.first_layer;
break;
case D3D10DDIRESOURCE_TEXTURE2D:
ASSERT(pCreateRenderTargetView->Tex2D.ArraySize != (UINT)-1);
desc.u.tex.level = pCreateRenderTargetView->Tex2D.MipSlice;
desc.u.tex.first_layer = pCreateRenderTargetView->Tex2D.FirstArraySlice;
desc.u.tex.last_layer = pCreateRenderTargetView->Tex2D.ArraySize - 1 +
desc.u.tex.first_layer;
desc.level = pCreateRenderTargetView->Tex2D.MipSlice;
desc.first_layer = pCreateRenderTargetView->Tex2D.FirstArraySlice;
desc.last_layer = pCreateRenderTargetView->Tex2D.ArraySize - 1 +
desc.first_layer;
break;
case D3D10DDIRESOURCE_TEXTURE3D:
desc.u.tex.level = pCreateRenderTargetView->Tex3D.MipSlice;
desc.u.tex.first_layer = pCreateRenderTargetView->Tex3D.FirstW;
desc.u.tex.last_layer = pCreateRenderTargetView->Tex3D.WSize - 1 +
desc.u.tex.first_layer;
desc.level = pCreateRenderTargetView->Tex3D.MipSlice;
desc.first_layer = pCreateRenderTargetView->Tex3D.FirstW;
desc.last_layer = pCreateRenderTargetView->Tex3D.WSize - 1 +
desc.first_layer;
break;
case D3D10DDIRESOURCE_TEXTURECUBE:
ASSERT(pCreateRenderTargetView->TexCube.ArraySize != (UINT)-1);
desc.u.tex.level = pCreateRenderTargetView->TexCube.MipSlice;
desc.u.tex.first_layer = pCreateRenderTargetView->TexCube.FirstArraySlice;
desc.u.tex.last_layer = pCreateRenderTargetView->TexCube.ArraySize - 1 +
desc.u.tex.first_layer;;
desc.level = pCreateRenderTargetView->TexCube.MipSlice;
desc.first_layer = pCreateRenderTargetView->TexCube.FirstArraySlice;
desc.last_layer = pCreateRenderTargetView->TexCube.ArraySize - 1 +
desc.first_layer;
break;
default:
ASSERT(0);
@ -283,7 +281,6 @@ CreateDepthStencilView(
{
LOG_ENTRYPOINT();
struct pipe_context *pipe = CastPipeContext(hDevice);
struct pipe_resource *resource = CastPipeResource(pCreateDepthStencilView->hDrvResource);
DepthStencilView *pDSView = CastDepthStencilView(hDepthStencilView);
@ -296,24 +293,24 @@ CreateDepthStencilView(
switch (pCreateDepthStencilView->ResourceDimension) {
case D3D10DDIRESOURCE_TEXTURE1D:
ASSERT(pCreateDepthStencilView->Tex1D.ArraySize != (UINT)-1);
desc.u.tex.level = pCreateDepthStencilView->Tex1D.MipSlice;
desc.u.tex.first_layer = pCreateDepthStencilView->Tex1D.FirstArraySlice;
desc.u.tex.last_layer = pCreateDepthStencilView->Tex1D.ArraySize - 1 +
desc.u.tex.first_layer;
desc.level = pCreateDepthStencilView->Tex1D.MipSlice;
desc.first_layer = pCreateDepthStencilView->Tex1D.FirstArraySlice;
desc.last_layer = pCreateDepthStencilView->Tex1D.ArraySize - 1 +
desc.first_layer;
break;
case D3D10DDIRESOURCE_TEXTURE2D:
ASSERT(pCreateDepthStencilView->Tex2D.ArraySize != (UINT)-1);
desc.u.tex.level = pCreateDepthStencilView->Tex2D.MipSlice;
desc.u.tex.first_layer = pCreateDepthStencilView->Tex2D.FirstArraySlice;
desc.u.tex.last_layer = pCreateDepthStencilView->Tex2D.ArraySize - 1 +
desc.u.tex.first_layer;
desc.level = pCreateDepthStencilView->Tex2D.MipSlice;
desc.first_layer = pCreateDepthStencilView->Tex2D.FirstArraySlice;
desc.last_layer = pCreateDepthStencilView->Tex2D.ArraySize - 1 +
desc.first_layer;
break;
case D3D10DDIRESOURCE_TEXTURECUBE:
ASSERT(pCreateDepthStencilView->TexCube.ArraySize != (UINT)-1);
desc.u.tex.level = pCreateDepthStencilView->TexCube.MipSlice;
desc.u.tex.first_layer = pCreateDepthStencilView->TexCube.FirstArraySlice;
desc.u.tex.last_layer = pCreateDepthStencilView->TexCube.ArraySize - 1 +
desc.u.tex.first_layer;
desc.level = pCreateDepthStencilView->TexCube.MipSlice;
desc.first_layer = pCreateDepthStencilView->TexCube.FirstArraySlice;
desc.last_layer = pCreateDepthStencilView->TexCube.ArraySize - 1 +
desc.first_layer;
break;
default:
ASSERT(0);