summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2013-03-18 22:36:21 +0100
committerMarek Olšák <[email protected]>2013-03-26 01:28:18 +0100
commitd1b91e309be2467829aa71ebdcb5a8f78e30e781 (patch)
tree6103f83763ae7aadbb01c027b49683f63b3dd92f /src/mesa/state_tracker
parent35c522dce461a7d18a471e681413781da702d4b0 (diff)
cso: add constant buffer save/restore feature for postprocessing
Postprocessing is an internal meta op and should restore the states it changes.
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r--src/mesa/state_tracker/st_atom_constbuf.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mesa/state_tracker/st_atom_constbuf.c b/src/mesa/state_tracker/st_atom_constbuf.c
index 961fb28a967..56ba96fe362 100644
--- a/src/mesa/state_tracker/st_atom_constbuf.c
+++ b/src/mesa/state_tracker/st_atom_constbuf.c
@@ -39,6 +39,7 @@
#include "pipe/p_defines.h"
#include "util/u_inlines.h"
#include "util/u_upload_mgr.h"
+#include "cso_cache/cso_context.h"
#include "st_debug.h"
#include "st_context.h"
@@ -96,16 +97,17 @@ void st_upload_constants( struct st_context *st,
_mesa_print_parameter_list(params);
}
- st->pipe->set_constant_buffer(st->pipe, shader_type, 0, &cb);
+ cso_set_constant_buffer(st->cso_context, shader_type, 0, &cb);
pipe_resource_reference(&cb.buffer, NULL);
st->state.constants[shader_type].ptr = params->ParameterValues;
st->state.constants[shader_type].size = paramBytes;
}
else if (st->state.constants[shader_type].ptr) {
+ /* Unbind. */
st->state.constants[shader_type].ptr = NULL;
st->state.constants[shader_type].size = 0;
- st->pipe->set_constant_buffer(st->pipe, shader_type, 0, NULL);
+ cso_set_constant_buffer(st->cso_context, shader_type, 0, NULL);
}
}
@@ -196,7 +198,7 @@ static void st_bind_ubos(struct st_context *st,
cb.buffer_size = st_obj->buffer->width0 - binding->Offset;
- st->pipe->set_constant_buffer(st->pipe, shader_type, 1 + i, &cb);
+ cso_set_constant_buffer(st->cso_context, shader_type, 1 + i, &cb);
pipe_resource_reference(&cb.buffer, NULL);
}
}