mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 05:28:05 +02:00
st/nine: Fix present_buffers allocation
If has_present_buffers was false at first, but after a device reset, it turns true (for example if we begin to render to a multisampled back buffer), there was a crash due to present_buffers being uninitialised. This patch fixes it. Reviewed-by: Tiziano Bacocco <tizbac2@gmail.com> Signed-off-by: Axel Davy <axel.davy@ens.fr>
This commit is contained in:
parent
792af626d4
commit
8b901e3011
1 changed files with 9 additions and 6 deletions
|
|
@ -271,12 +271,6 @@ NineSwapChain9_Resize( struct NineSwapChain9 *This,
|
|||
if (!bufs)
|
||||
return E_OUTOFMEMORY;
|
||||
This->buffers = bufs;
|
||||
if (has_present_buffers) {
|
||||
This->present_buffers = REALLOC(This->present_buffers,
|
||||
This->present_buffers == NULL ? 0 : oldBufferCount * sizeof(struct pipe_resource *),
|
||||
newBufferCount * sizeof(struct pipe_resource *));
|
||||
memset(This->present_buffers, 0, newBufferCount * sizeof(struct pipe_resource *));
|
||||
}
|
||||
This->present_handles = REALLOC(This->present_handles,
|
||||
oldBufferCount * sizeof(D3DWindowBuffer *),
|
||||
newBufferCount * sizeof(D3DWindowBuffer *));
|
||||
|
|
@ -286,6 +280,15 @@ NineSwapChain9_Resize( struct NineSwapChain9 *This,
|
|||
}
|
||||
}
|
||||
|
||||
if (has_present_buffers &&
|
||||
(newBufferCount != oldBufferCount || !This->present_buffers)) {
|
||||
This->present_buffers = REALLOC(This->present_buffers,
|
||||
This->present_buffers == NULL ? 0 :
|
||||
oldBufferCount * sizeof(struct pipe_resource *),
|
||||
newBufferCount * sizeof(struct pipe_resource *));
|
||||
memset(This->present_buffers, 0, newBufferCount * sizeof(struct pipe_resource *));
|
||||
}
|
||||
|
||||
for (i = 0; i < newBufferCount; ++i) {
|
||||
tmplt.bind = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_TRANSFER_READ |
|
||||
PIPE_BIND_TRANSFER_WRITE | PIPE_BIND_RENDER_TARGET;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue