mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-15 22:08:17 +02:00
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:
parent
561fed955b
commit
5607797743
3 changed files with 23 additions and 21 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue