noop: implement resource_get_handle

X+DRI3 locks up if the returned handle is invalid.
This commit is contained in:
Marek Olšák 2016-08-28 18:50:19 +02:00
parent 1c71bccdaa
commit b012a13af5
1 changed files with 14 additions and 2 deletions

View File

@ -134,13 +134,25 @@ static struct pipe_resource *noop_resource_from_handle(struct pipe_screen *scree
return noop_resource;
}
static boolean noop_resource_get_handle(struct pipe_screen *screen,
static boolean noop_resource_get_handle(struct pipe_screen *pscreen,
struct pipe_context *ctx,
struct pipe_resource *resource,
struct winsys_handle *handle,
unsigned usage)
{
return FALSE;
struct noop_pipe_screen *noop_screen = (struct noop_pipe_screen*)pscreen;
struct pipe_screen *screen = noop_screen->oscreen;
struct pipe_resource *tex;
bool result;
/* resource_get_handle musn't fail. Just create something and return it. */
tex = screen->resource_create(screen, resource);
if (!tex)
return false;
result = screen->resource_get_handle(screen, NULL, tex, handle, usage);
pipe_resource_reference(&tex, NULL);
return result;
}
static void noop_resource_destroy(struct pipe_screen *screen,