mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
llvmpipe: asst. clean-ups in lp_flush.[ch]
Signed-off-by: Brian Paul <brianp@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19289>
This commit is contained in:
parent
fe9296de34
commit
8874c728e5
2 changed files with 32 additions and 21 deletions
|
|
@ -1,8 +1,8 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
*
|
||||
* Copyright 2007 VMware, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
|
|
@ -10,11 +10,11 @@
|
|||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
/* Author:
|
||||
|
|
@ -42,16 +42,18 @@
|
|||
#include "lp_screen.h"
|
||||
#include "lp_rast.h"
|
||||
|
||||
|
||||
/**
|
||||
* \param fence if non-null, returns pointer to a fence which can be waited on
|
||||
*/
|
||||
void
|
||||
llvmpipe_flush( struct pipe_context *pipe,
|
||||
struct pipe_fence_handle **fence,
|
||||
const char *reason)
|
||||
llvmpipe_flush(struct pipe_context *pipe,
|
||||
struct pipe_fence_handle **fence,
|
||||
const char *reason)
|
||||
{
|
||||
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
|
||||
struct llvmpipe_screen *screen = llvmpipe_screen(pipe->screen);
|
||||
|
||||
draw_flush(llvmpipe->draw);
|
||||
|
||||
/* ask the setup module to flush */
|
||||
|
|
@ -60,6 +62,7 @@ llvmpipe_flush( struct pipe_context *pipe,
|
|||
mtx_lock(&screen->rast_mutex);
|
||||
lp_rast_fence(screen->rast, (struct lp_fence **)fence);
|
||||
mtx_unlock(&screen->rast_mutex);
|
||||
|
||||
if (fence && (!*fence))
|
||||
*fence = (struct pipe_fence_handle *)lp_fence_create(0);
|
||||
|
||||
|
|
@ -83,9 +86,10 @@ llvmpipe_flush( struct pipe_context *pipe,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
llvmpipe_finish( struct pipe_context *pipe,
|
||||
const char *reason )
|
||||
llvmpipe_finish(struct pipe_context *pipe,
|
||||
const char *reason)
|
||||
{
|
||||
struct pipe_fence_handle *fence = NULL;
|
||||
llvmpipe_flush(pipe, &fence, reason);
|
||||
|
|
@ -96,6 +100,7 @@ llvmpipe_finish( struct pipe_context *pipe,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Flush context if necessary.
|
||||
*
|
||||
|
|
@ -115,16 +120,22 @@ llvmpipe_flush_resource(struct pipe_context *pipe,
|
|||
{
|
||||
unsigned referenced = 0;
|
||||
struct llvmpipe_screen *lp_screen = llvmpipe_screen(pipe->screen);
|
||||
|
||||
mtx_lock(&lp_screen->ctx_mutex);
|
||||
list_for_each_entry(struct llvmpipe_context, ctx, &lp_screen->ctx_list, list)
|
||||
referenced |= llvmpipe_is_resource_referenced((struct pipe_context *)ctx, resource, level);
|
||||
list_for_each_entry(struct llvmpipe_context, ctx, &lp_screen->ctx_list, list) {
|
||||
referenced |=
|
||||
llvmpipe_is_resource_referenced((struct pipe_context *)ctx,
|
||||
resource, level);
|
||||
}
|
||||
mtx_unlock(&lp_screen->ctx_mutex);
|
||||
|
||||
if ((referenced & LP_REFERENCED_FOR_WRITE) ||
|
||||
((referenced & LP_REFERENCED_FOR_READ) && !read_only)) {
|
||||
|
||||
if (cpu_access)
|
||||
if (do_not_block)
|
||||
return FALSE;
|
||||
if (do_not_block)
|
||||
return FALSE;
|
||||
|
||||
/*
|
||||
* Flush and wait.
|
||||
* Finish so VS can use FS results.
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
*
|
||||
* Copyright 2007 VMware, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
|
|
@ -10,11 +10,11 @@
|
|||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef LP_FLUSH_H
|
||||
|
|
@ -40,8 +40,8 @@ llvmpipe_flush(struct pipe_context *pipe,
|
|||
const char *reason);
|
||||
|
||||
void
|
||||
llvmpipe_finish( struct pipe_context *pipe,
|
||||
const char *reason );
|
||||
llvmpipe_finish(struct pipe_context *pipe,
|
||||
const char *reason);
|
||||
|
||||
boolean
|
||||
llvmpipe_flush_resource(struct pipe_context *pipe,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue