projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
nv50: disable compute
[mesa.git]
/
src
/
gallium
/
drivers
/
llvmpipe
/
lp_context.c
diff --git
a/src/gallium/drivers/llvmpipe/lp_context.c
b/src/gallium/drivers/llvmpipe/lp_context.c
index 80cb6578bd1d464fc8fda8d4089d6f918fa377cc..613d60fd623eff75fe7444afcfa64e1203b1cd94 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_context.c
+++ b/
src/gallium/drivers/llvmpipe/lp_context.c
@@
-37,6
+37,7
@@
#include "util/u_math.h"
#include "util/u_memory.h"
#include "util/simple_list.h"
#include "util/u_math.h"
#include "util/u_memory.h"
#include "util/simple_list.h"
+#include "util/u_upload_mgr.h"
#include "lp_clear.h"
#include "lp_context.h"
#include "lp_flush.h"
#include "lp_clear.h"
#include "lp_context.h"
#include "lp_flush.h"
@@
-62,6
+63,9
@@
static void llvmpipe_destroy( struct pipe_context *pipe )
util_blitter_destroy(llvmpipe->blitter);
}
util_blitter_destroy(llvmpipe->blitter);
}
+ if (llvmpipe->pipe.stream_uploader)
+ u_upload_destroy(llvmpipe->pipe.stream_uploader);
+
/* This will also destroy llvmpipe->setup:
*/
if (llvmpipe->draw)
/* This will also destroy llvmpipe->setup:
*/
if (llvmpipe->draw)
@@
-73,26
+77,26
@@
static void llvmpipe_destroy( struct pipe_context *pipe )
pipe_surface_reference(&llvmpipe->framebuffer.zsbuf, NULL);
pipe_surface_reference(&llvmpipe->framebuffer.zsbuf, NULL);
- for (i = 0; i <
Elements
(llvmpipe->sampler_views[0]); i++) {
+ for (i = 0; i <
ARRAY_SIZE
(llvmpipe->sampler_views[0]); i++) {
pipe_sampler_view_reference(&llvmpipe->sampler_views[PIPE_SHADER_FRAGMENT][i], NULL);
}
pipe_sampler_view_reference(&llvmpipe->sampler_views[PIPE_SHADER_FRAGMENT][i], NULL);
}
- for (i = 0; i <
Elements
(llvmpipe->sampler_views[0]); i++) {
+ for (i = 0; i <
ARRAY_SIZE
(llvmpipe->sampler_views[0]); i++) {
pipe_sampler_view_reference(&llvmpipe->sampler_views[PIPE_SHADER_VERTEX][i], NULL);
}
pipe_sampler_view_reference(&llvmpipe->sampler_views[PIPE_SHADER_VERTEX][i], NULL);
}
- for (i = 0; i <
Elements
(llvmpipe->sampler_views[0]); i++) {
+ for (i = 0; i <
ARRAY_SIZE
(llvmpipe->sampler_views[0]); i++) {
pipe_sampler_view_reference(&llvmpipe->sampler_views[PIPE_SHADER_GEOMETRY][i], NULL);
}
pipe_sampler_view_reference(&llvmpipe->sampler_views[PIPE_SHADER_GEOMETRY][i], NULL);
}
- for (i = 0; i <
Elements
(llvmpipe->constants); i++) {
- for (j = 0; j <
Elements
(llvmpipe->constants[i]); j++) {
+ for (i = 0; i <
ARRAY_SIZE
(llvmpipe->constants); i++) {
+ for (j = 0; j <
ARRAY_SIZE
(llvmpipe->constants[i]); j++) {
pipe_resource_reference(&llvmpipe->constants[i][j].buffer, NULL);
}
}
for (i = 0; i < llvmpipe->num_vertex_buffers; i++) {
pipe_resource_reference(&llvmpipe->constants[i][j].buffer, NULL);
}
}
for (i = 0; i < llvmpipe->num_vertex_buffers; i++) {
- pipe_
resource_reference(&llvmpipe->vertex_buffer[i].buffer, NULL
);
+ pipe_
vertex_buffer_unreference(&llvmpipe->vertex_buffer[i]
);
}
lp_delete_setup_variants(llvmpipe);
}
lp_delete_setup_variants(llvmpipe);
@@
-115,10
+119,10
@@
do_flush( struct pipe_context *pipe,
static void
static void
-llvmpipe_render_condition
(
struct pipe_context *pipe,
-
struct pipe_query *query,
-
boolean condition,
-
uint mode
)
+llvmpipe_render_condition
(
struct pipe_context *pipe,
+ struct pipe_query *query,
+ boolean condition,
+
enum pipe_render_cond_flag mode
)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context( pipe );
{
struct llvmpipe_context *llvmpipe = llvmpipe_context( pipe );
@@
-128,7
+132,8
@@
llvmpipe_render_condition ( struct pipe_context *pipe,
}
struct pipe_context *
}
struct pipe_context *
-llvmpipe_create_context( struct pipe_screen *screen, void *priv )
+llvmpipe_create_context(struct pipe_screen *screen, void *priv,
+ unsigned flags)
{
struct llvmpipe_context *llvmpipe;
{
struct llvmpipe_context *llvmpipe;
@@
-194,6
+199,11
@@
llvmpipe_create_context( struct pipe_screen *screen, void *priv )
if (!llvmpipe->setup)
goto fail;
if (!llvmpipe->setup)
goto fail;
+ llvmpipe->pipe.stream_uploader = u_upload_create_default(&llvmpipe->pipe);
+ if (!llvmpipe->pipe.stream_uploader)
+ goto fail;
+ llvmpipe->pipe.const_uploader = llvmpipe->pipe.stream_uploader;
+
llvmpipe->blitter = util_blitter_create(&llvmpipe->pipe);
if (!llvmpipe->blitter) {
goto fail;
llvmpipe->blitter = util_blitter_create(&llvmpipe->pipe);
if (!llvmpipe->blitter) {
goto fail;
@@
-217,6
+227,12
@@
llvmpipe_create_context( struct pipe_screen *screen, void *priv )
lp_reset_counters();
lp_reset_counters();
+ /* If llvmpipe_set_scissor_states() is never called, we still need to
+ * make sure that derived scissor state is computed.
+ * See https://bugs.freedesktop.org/show_bug.cgi?id=101709
+ */
+ llvmpipe->dirty |= LP_NEW_SCISSOR;
+
return &llvmpipe->pipe;
fail:
return &llvmpipe->pipe;
fail: