mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
intel: fix null dereference processing HiZ buffer
Or technically, a near-null dereference. https://bugs.freedesktop.org/show_bug.cgi?id=46303 https://bugs.freedesktop.org/show_bug.cgi?id=46739 NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
This commit is contained in:
parent
0c406afab0
commit
8d9decb75f
1 changed files with 6 additions and 0 deletions
|
|
@ -1211,6 +1211,10 @@ intel_process_dri2_buffer_with_separate_stencil(struct intel_context *intel,
|
||||||
if (!rb)
|
if (!rb)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* Check if we failed to allocate the depth miptree earlier. */
|
||||||
|
if (buffer->attachment == __DRI_BUFFER_HIZ && rb->mt == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
/* If the renderbuffer's and DRIbuffer's regions match, then continue. */
|
/* If the renderbuffer's and DRIbuffer's regions match, then continue. */
|
||||||
if ((buffer->attachment != __DRI_BUFFER_HIZ &&
|
if ((buffer->attachment != __DRI_BUFFER_HIZ &&
|
||||||
rb->mt &&
|
rb->mt &&
|
||||||
|
|
@ -1252,6 +1256,7 @@ intel_process_dri2_buffer_with_separate_stencil(struct intel_context *intel,
|
||||||
* due to failure to allocate new storage.
|
* due to failure to allocate new storage.
|
||||||
*/
|
*/
|
||||||
if (buffer->attachment == __DRI_BUFFER_HIZ) {
|
if (buffer->attachment == __DRI_BUFFER_HIZ) {
|
||||||
|
assert(rb->mt);
|
||||||
intel_miptree_release(&rb->mt->hiz_mt);
|
intel_miptree_release(&rb->mt->hiz_mt);
|
||||||
} else {
|
} else {
|
||||||
intel_miptree_release(&rb->mt);
|
intel_miptree_release(&rb->mt);
|
||||||
|
|
@ -1277,6 +1282,7 @@ intel_process_dri2_buffer_with_separate_stencil(struct intel_context *intel,
|
||||||
|
|
||||||
/* Associate buffer with new storage. */
|
/* Associate buffer with new storage. */
|
||||||
if (buffer->attachment == __DRI_BUFFER_HIZ) {
|
if (buffer->attachment == __DRI_BUFFER_HIZ) {
|
||||||
|
assert(rb->mt);
|
||||||
rb->mt->hiz_mt = mt;
|
rb->mt->hiz_mt = mt;
|
||||||
} else {
|
} else {
|
||||||
rb->mt = mt;
|
rb->mt = mt;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue