projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
nv50,nvc0: implement blit
[mesa.git]
/
src
/
gallium
/
drivers
/
svga
/
svga_pipe_vs.c
diff --git
a/src/gallium/drivers/svga/svga_pipe_vs.c
b/src/gallium/drivers/svga/svga_pipe_vs.c
index c104c41f5f87343b97553dee471bdf37b51a49b9..11d1dc3761196d18c5771cbe6c6a985ab0f5d6ac 100644
(file)
--- a/
src/gallium/drivers/svga/svga_pipe_vs.c
+++ b/
src/gallium/drivers/svga/svga_pipe_vs.c
@@
-24,15
+24,14
@@
**********************************************************/
#include "draw/draw_context.h"
**********************************************************/
#include "draw/draw_context.h"
-#include "
pipe/p
_inlines.h"
+#include "
util/u
_inlines.h"
#include "util/u_math.h"
#include "util/u_memory.h"
#include "util/u_math.h"
#include "util/u_memory.h"
+#include "util/u_bitmask.h"
#include "tgsi/tgsi_parse.h"
#include "tgsi/tgsi_text.h"
#include "tgsi/tgsi_parse.h"
#include "tgsi/tgsi_text.h"
-#include "svga_screen.h"
#include "svga_context.h"
#include "svga_context.h"
-#include "svga_state.h"
#include "svga_tgsi.h"
#include "svga_hw_reg.h"
#include "svga_cmd.h"
#include "svga_tgsi.h"
#include "svga_hw_reg.h"
#include "svga_cmd.h"
@@
-101,7
+100,6
@@
svga_create_vs_state(struct pipe_context *pipe,
const struct pipe_shader_state *templ)
{
struct svga_context *svga = svga_context(pipe);
const struct pipe_shader_state *templ)
{
struct svga_context *svga = svga_context(pipe);
- struct svga_screen *svgascreen = svga_screen(pipe->screen);
struct svga_vertex_shader *vs = CALLOC_STRUCT(svga_vertex_shader);
if (!vs)
return NULL;
struct svga_vertex_shader *vs = CALLOC_STRUCT(svga_vertex_shader);
if (!vs)
return NULL;
@@
-126,7
+124,6
@@
svga_create_vs_state(struct pipe_context *pipe,
}
vs->base.id = svga->debug.shader_id++;
}
vs->base.id = svga->debug.shader_id++;
- vs->base.use_sm30 = svgascreen->use_vs30;
if (SVGA_DEBUG & DEBUG_TGSI || 0) {
debug_printf("%s id: %u, inputs: %u, outputs: %u\n",
if (SVGA_DEBUG & DEBUG_TGSI || 0) {
debug_printf("%s id: %u, inputs: %u, outputs: %u\n",
@@
-172,7
+169,16
@@
static void svga_delete_vs_state(struct pipe_context *pipe, void *shader)
assert(ret == PIPE_OK);
}
assert(ret == PIPE_OK);
}
+ util_bitmask_clear( svga->vs_bm, result->id );
+
svga_destroy_shader_result( result );
svga_destroy_shader_result( result );
+
+ /*
+ * Remove stale references to this result to ensure a new result on the
+ * same address will be detected as a change.
+ */
+ if(result == svga->state.hw_draw.vs)
+ svga->state.hw_draw.vs = NULL;
}
FREE((void *)vs->base.tokens);
}
FREE((void *)vs->base.tokens);