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_blend.c \
|
||||||
lp_state_clip.c \
|
lp_state_clip.c \
|
||||||
lp_state_derived.c \
|
lp_state_derived.c \
|
||||||
|
lp_state_cs.c \
|
||||||
|
lp_state_cs.h \
|
||||||
lp_state_fs.c \
|
lp_state_fs.c \
|
||||||
lp_state_fs.h \
|
lp_state_fs.h \
|
||||||
lp_state_gs.c \
|
lp_state_gs.c \
|
||||||
|
|
|
@ -59,6 +59,9 @@ static void llvmpipe_destroy( struct pipe_context *pipe )
|
||||||
|
|
||||||
lp_print_counters();
|
lp_print_counters();
|
||||||
|
|
||||||
|
if (llvmpipe->csctx) {
|
||||||
|
lp_csctx_destroy(llvmpipe->csctx);
|
||||||
|
}
|
||||||
if (llvmpipe->blitter) {
|
if (llvmpipe->blitter) {
|
||||||
util_blitter_destroy(llvmpipe->blitter);
|
util_blitter_destroy(llvmpipe->blitter);
|
||||||
}
|
}
|
||||||
|
@ -199,6 +202,9 @@ llvmpipe_create_context(struct pipe_screen *screen, void *priv,
|
||||||
if (!llvmpipe->setup)
|
if (!llvmpipe->setup)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
llvmpipe->csctx = lp_csctx_create( &llvmpipe->pipe );
|
||||||
|
if (!llvmpipe->csctx)
|
||||||
|
goto fail;
|
||||||
llvmpipe->pipe.stream_uploader = u_upload_create_default(&llvmpipe->pipe);
|
llvmpipe->pipe.stream_uploader = u_upload_create_default(&llvmpipe->pipe);
|
||||||
if (!llvmpipe->pipe.stream_uploader)
|
if (!llvmpipe->pipe.stream_uploader)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#include "lp_jit.h"
|
#include "lp_jit.h"
|
||||||
#include "lp_setup.h"
|
#include "lp_setup.h"
|
||||||
#include "lp_state_fs.h"
|
#include "lp_state_fs.h"
|
||||||
|
#include "lp_state_cs.h"
|
||||||
#include "lp_state_setup.h"
|
#include "lp_state_setup.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -149,6 +150,8 @@ struct llvmpipe_context {
|
||||||
struct lp_setup_variant_list_item setup_variants_list;
|
struct lp_setup_variant_list_item setup_variants_list;
|
||||||
unsigned nr_setup_variants;
|
unsigned nr_setup_variants;
|
||||||
|
|
||||||
|
struct lp_cs_context *csctx;
|
||||||
|
|
||||||
/** Conditional query object and mode */
|
/** Conditional query object and mode */
|
||||||
struct pipe_query *render_cond_query;
|
struct pipe_query *render_cond_query;
|
||||||
enum pipe_render_cond_flag render_cond_mode;
|
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_blend.c',
|
||||||
'lp_state_clip.c',
|
'lp_state_clip.c',
|
||||||
'lp_state_derived.c',
|
'lp_state_derived.c',
|
||||||
|
'lp_state_cs.c',
|
||||||
|
'lp_state_cs.h',
|
||||||
'lp_state_fs.c',
|
'lp_state_fs.c',
|
||||||
'lp_state_fs.h',
|
'lp_state_fs.h',
|
||||||
'lp_state_gs.c',
|
'lp_state_gs.c',
|
||||||
|
|
Loading…
Reference in New Issue