d3d10umd: update to latest pipe_surface changes

does it work? nobody knows!

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35236>
This commit is contained in:
Mike Blumenkrantz 2025-05-30 13:02:39 -04:00 committed by Marge Bot
parent 561fed955b
commit 5607797743
3 changed files with 23 additions and 21 deletions

View file

@ -45,6 +45,7 @@
#include "Debug.h"
#include "util/u_sampler.h"
#include "util/u_framebuffer.h"
static void APIENTRY DestroyDevice(D3D10DDI_HDEVICE hDevice);
@ -340,10 +341,7 @@ DestroyDevice(D3D10DDI_HDEVICE hDevice) // IN
DeleteEmptyShader(pDevice, PIPE_SHADER_FRAGMENT, pDevice->empty_fs);
DeleteEmptyShader(pDevice, PIPE_SHADER_VERTEX, pDevice->empty_vs);
pipe_surface_reference(&pDevice->fb.zsbuf, NULL);
for (i = 0; i < PIPE_MAX_COLOR_BUFS; ++i) {
pipe_surface_reference(&pDevice->fb.cbufs[i], NULL);
}
util_unreference_framebuffer_state(&pDevice->fb);
for (i = 0; i < PIPE_MAX_ATTRIBS; ++i) {
if (!pDevice->vertex_buffers[i].is_user_buffer) {

View file

@ -90,6 +90,7 @@ CreateRenderTargetView(
struct pipe_surface desc;
memset(&desc, 0, sizeof desc);
pipe_resource_reference(&desc.texture, resource);
desc.format = FormatTranslate(pCreateRenderTargetView->Format, false);
switch (pCreateRenderTargetView->ResourceDimension) {
@ -130,8 +131,7 @@ CreateRenderTargetView(
return;
}
pRTView->surface = pipe->create_surface(pipe, resource, &desc);
assert(pRTView->surface);
pRTView->surface = desc;
}
@ -155,7 +155,7 @@ DestroyRenderTargetView(D3D10DDI_HDEVICE hDevice, // IN
RenderTargetView *pRTView = CastRenderTargetView(hRenderTargetView);
pipe_surface_reference(&pRTView->surface, NULL);
pipe_resource_reference(&pRTView->surface.texture, NULL);
}
@ -290,6 +290,7 @@ CreateDepthStencilView(
struct pipe_surface desc;
memset(&desc, 0, sizeof desc);
pipe_resource_reference(&desc.texture, resource);
desc.format = FormatTranslate(pCreateDepthStencilView->Format, true);
switch (pCreateDepthStencilView->ResourceDimension) {
@ -319,8 +320,7 @@ CreateDepthStencilView(
return;
}
pDSView->surface = pipe->create_surface(pipe, resource, &desc);
assert(pDSView->surface);
pDSView->surface = desc;
}
@ -344,7 +344,7 @@ DestroyDepthStencilView(D3D10DDI_HDEVICE hDevice, // IN
DepthStencilView *pDSView = CastDepthStencilView(hDepthStencilView);
pipe_surface_reference(&pDSView->surface, NULL);
pipe_resource_reference(&pDSView->surface.texture, NULL);
}
@ -753,19 +753,24 @@ SetRenderTargets(D3D10DDI_HDEVICE hDevice, // IN
pDevice->fb.nr_cbufs = 0;
for (unsigned i = 0; i < RTargets; ++i) {
pipe_surface_reference(&pDevice->fb.cbufs[i],
CastPipeRenderTargetView(phRenderTargetView[i]));
if (pDevice->fb.cbufs[i]) {
struct pipe_surface *psurf = CastPipeRenderTargetView(phRenderTargetView[i]);
pipe_resource_reference(&pDevice->fb.cbufs[i].texture,
psurf && psurf->texture ? psurf->texture : NULL);
if (psurf && psurf->texture) {
pDevice->fb.nr_cbufs = i + 1;
pDevice->fb.cbufs[i] = *psurf;
}
}
for (unsigned i = RTargets; i < PIPE_MAX_COLOR_BUFS; ++i) {
pipe_surface_reference(&pDevice->fb.cbufs[i], NULL);
pipe_resource_reference(&pDevice->fb.cbufs[i].texture, NULL);
}
pipe_surface_reference(&pDevice->fb.zsbuf,
CastPipeDepthStencilView(hDepthStencilView));
struct pipe_surface *zsbuf = CastPipeDepthStencilView(hDepthStencilView);
pipe_resource_reference(&pDevice->fb.zsbuf.texture, zsbuf && zsbuf->texture ? zsbuf->texture : NULL);
if(zsbuf && zsbuf->texture) {
pDevice->fb.zsbuf = *zsbuf;
}
/*
* Calculate the width/height fields for this framebuffer. D3D10

View file

@ -207,7 +207,7 @@ CastPipeBuffer(D3D10DDI_HRESOURCE hResource)
struct RenderTargetView
{
struct pipe_surface *surface;
struct pipe_surface surface;
D3D10DDI_HRTRENDERTARGETVIEW hRTRenderTargetView;
};
@ -223,13 +223,13 @@ static inline struct pipe_surface *
CastPipeRenderTargetView(D3D10DDI_HRENDERTARGETVIEW hRenderTargetView)
{
RenderTargetView *pRenderTargetView = CastRenderTargetView(hRenderTargetView);
return pRenderTargetView ? pRenderTargetView->surface : NULL;
return pRenderTargetView ? &pRenderTargetView->surface : NULL;
}
struct DepthStencilView
{
struct pipe_surface *surface;
struct pipe_surface surface;
D3D10DDI_HRTDEPTHSTENCILVIEW hRTDepthStencilView;
};
@ -245,7 +245,7 @@ static inline struct pipe_surface *
CastPipeDepthStencilView(D3D10DDI_HDEPTHSTENCILVIEW hDepthStencilView)
{
DepthStencilView *pDepthStencilView = CastDepthStencilView(hDepthStencilView);
return pDepthStencilView ? pDepthStencilView->surface : NULL;
return pDepthStencilView ? &pDepthStencilView->surface : NULL;
}
@ -408,4 +408,3 @@ CastPipeQuery(D3D10DDI_HQUERY hQuery)
Query *pQuery = CastQuery(hQuery);
return pQuery ? pQuery->handle : NULL;
}