crocus: check for depth+stencil before creating resource

This avoid leaking memory if we return early.

Fixes: 5f7df5df0d ("crocus: disable depth and d+s formats with memory objects")
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30305>
This commit is contained in:
Dylan Baker
2024-07-22 13:46:56 -07:00
committed by Marge Bot
parent 34145725ce
commit 4ef0cbaf05

View File

@@ -840,6 +840,10 @@ crocus_resource_from_memobj(struct pipe_screen *pscreen,
struct pipe_memory_object *pmemobj,
uint64_t offset)
{
/* Disable Depth, and combined Depth+Stencil for now. */
if (util_format_has_depth(util_format_description(templ->format)))
return NULL;
struct crocus_screen *screen = (struct crocus_screen *)pscreen;
struct crocus_memory_object *memobj = (struct crocus_memory_object *)pmemobj;
struct crocus_resource *res = crocus_alloc_resource(pscreen, templ);
@@ -847,10 +851,6 @@ crocus_resource_from_memobj(struct pipe_screen *pscreen,
if (!res)
return NULL;
/* Disable Depth, and combined Depth+Stencil for now. */
if (util_format_has_depth(util_format_description(templ->format)))
return NULL;
if (templ->flags & PIPE_RESOURCE_FLAG_TEXTURING_MORE_LIKELY) {
UNUSED const bool isl_surf_created_successfully =
crocus_resource_configure_main(screen, res, templ, DRM_FORMAT_MOD_INVALID, 0);