On 29/01/2016 17:49, Ilia Mirkin wrote:
On Fri, Jan 29, 2016 at 11:08 AM, Axel Davy <axel.d...@ens.fr> wrote:
We forgot to reset vtxbuf.
This fixes some crashes.
Signed-off-by: Axel Davy <axel.d...@ens.fr>
Reviewed-by: Patrick Rudolph <s...@das-labor.org>
---
src/gallium/state_trackers/nine/nine_state.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/gallium/state_trackers/nine/nine_state.c
b/src/gallium/state_trackers/nine/nine_state.c
index 2e77d62..561a68e 100644
--- a/src/gallium/state_trackers/nine/nine_state.c
+++ b/src/gallium/state_trackers/nine/nine_state.c
@@ -1314,8 +1314,10 @@ nine_state_clear(struct nine_state *state, const boolean
device)
nine_bind(&state->vs, NULL);
nine_bind(&state->ps, NULL);
nine_bind(&state->vdecl, NULL);
- for (i = 0; i < PIPE_MAX_ATTRIBS; ++i)
+ for (i = 0; i < PIPE_MAX_ATTRIBS; ++i) {
nine_bind(&state->stream[i], NULL);
+ state->vtxbuf[i].buffer = NULL;
Not necessarily strictly wrong, but I would have expected a
pipe_resource_reference(&buffer, NULL) -- are you not referencing them
when setting either?
-ilia
We are not referencing them, but we reference the d3d structure
referencing it.
That is when we do nine_bind(&state->stream[i], NULL), the pipe_resource
may get dereferenced if the item
is freed.
Probably would be better reference and unreference the pipe_resource, I
will look into it to improve that patch.
Axel
+ }
nine_bind(&state->idxbuf, NULL);
for (i = 0; i < NINE_MAX_SAMPLERS; ++i) {
if (device &&
--
2.7.0
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev