llvmpipe: introduce compute shader context
The compute shader will need it's own context like the frag shader has, this just introduces the framework struct and allocates/frees for it in the right places. Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
parent
83597ad3f2
commit
add0b151f5
|
@ -53,6 +53,8 @@ C_SOURCES := \
|
|||
lp_state_blend.c \
|
||||
lp_state_clip.c \
|
||||
lp_state_derived.c \
|
||||
lp_state_cs.c \
|
||||
lp_state_cs.h \
|
||||
lp_state_fs.c \
|
||||
lp_state_fs.h \
|
||||
lp_state_gs.c \
|
||||
|
|
|
@ -59,6 +59,9 @@ static void llvmpipe_destroy( struct pipe_context *pipe )
|
|||
|
||||
lp_print_counters();
|
||||
|
||||
if (llvmpipe->csctx) {
|
||||
lp_csctx_destroy(llvmpipe->csctx);
|
||||
}
|
||||
if (llvmpipe->blitter) {
|
||||
util_blitter_destroy(llvmpipe->blitter);
|
||||
}
|
||||
|
@ -199,6 +202,9 @@ llvmpipe_create_context(struct pipe_screen *screen, void *priv,
|
|||
if (!llvmpipe->setup)
|
||||
goto fail;
|
||||
|
||||
llvmpipe->csctx = lp_csctx_create( &llvmpipe->pipe );
|
||||
if (!llvmpipe->csctx)
|
||||
goto fail;
|
||||
llvmpipe->pipe.stream_uploader = u_upload_create_default(&llvmpipe->pipe);
|
||||
if (!llvmpipe->pipe.stream_uploader)
|
||||
goto fail;
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include "lp_jit.h"
|
||||
#include "lp_setup.h"
|
||||
#include "lp_state_fs.h"
|
||||
#include "lp_state_cs.h"
|
||||
#include "lp_state_setup.h"
|
||||
|
||||
|
||||
|
@ -149,6 +150,8 @@ struct llvmpipe_context {
|
|||
struct lp_setup_variant_list_item setup_variants_list;
|
||||
unsigned nr_setup_variants;
|
||||
|
||||
struct lp_cs_context *csctx;
|
||||
|
||||
/** Conditional query object and mode */
|
||||
struct pipe_query *render_cond_query;
|
||||
enum pipe_render_cond_flag render_cond_mode;
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2019 Red Hat.
|
||||
* 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 without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* 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 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 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.
|
||||
*
|
||||
**************************************************************************/
|
||||
#include "util/u_memory.h"
|
||||
|
||||
#include "lp_state_cs.h"
|
||||
|
||||
void
|
||||
lp_csctx_destroy(struct lp_cs_context *csctx)
|
||||
{
|
||||
FREE(csctx);
|
||||
}
|
||||
|
||||
struct lp_cs_context *lp_csctx_create(struct pipe_context *pipe)
|
||||
{
|
||||
struct lp_cs_context *csctx;
|
||||
|
||||
csctx = CALLOC_STRUCT(lp_cs_context);
|
||||
if (!csctx)
|
||||
return NULL;
|
||||
|
||||
csctx->pipe = pipe;
|
||||
return csctx;
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2019 Red Hat.
|
||||
* 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 without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* 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 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 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_STATE_CS_H
|
||||
#define LP_STATE_CS_H
|
||||
|
||||
#include "os/os_thread.h"
|
||||
#include "util/u_thread.h"
|
||||
#include "pipe/p_state.h"
|
||||
|
||||
struct lp_cs_context {
|
||||
struct pipe_context *pipe;
|
||||
};
|
||||
|
||||
struct lp_cs_context *lp_csctx_create(struct pipe_context *pipe);
|
||||
void lp_csctx_destroy(struct lp_cs_context *csctx);
|
||||
|
||||
#endif
|
|
@ -73,6 +73,8 @@ files_llvmpipe = files(
|
|||
'lp_state_blend.c',
|
||||
'lp_state_clip.c',
|
||||
'lp_state_derived.c',
|
||||
'lp_state_cs.c',
|
||||
'lp_state_cs.h',
|
||||
'lp_state_fs.c',
|
||||
'lp_state_fs.h',
|
||||
'lp_state_gs.c',
|
||||
|
|
Loading…
Reference in New Issue