summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nv50/nv50_state.c
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2008-06-13 12:09:46 +1000
committerBen Skeggs <skeggsb@gmail.com>2008-06-29 15:46:18 +1000
commitc0ed6a871cd3513e17a1fab960f5626485ffed13 (patch)
treed757892d923a980a365a257b0bdd4b752d4c8ab9 /src/gallium/drivers/nv50/nv50_state.c
parent0d7f25c890e1f1505625542c256d4512c065449a (diff)
nv50: do tsc/tic upload + stub out shader TEX stuff
Diffstat (limited to 'src/gallium/drivers/nv50/nv50_state.c')
-rw-r--r--src/gallium/drivers/nv50/nv50_state.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/gallium/drivers/nv50/nv50_state.c b/src/gallium/drivers/nv50/nv50_state.c
index 0129b0fb14..f36299db4d 100644
--- a/src/gallium/drivers/nv50/nv50_state.c
+++ b/src/gallium/drivers/nv50/nv50_state.c
@@ -1,6 +1,7 @@
#include "pipe/p_state.h"
#include "pipe/p_defines.h"
#include "pipe/p_util.h"
+#include "pipe/p_inlines.h"
#include "nv50_context.h"
@@ -85,23 +86,47 @@ static void *
nv50_sampler_state_create(struct pipe_context *pipe,
const struct pipe_sampler_state *cso)
{
- return NULL;
+ unsigned *tsc = CALLOC(8, sizeof(unsigned));
+
+ tsc[0] = 0x00024080;
+ tsc[1] = 0x00000062;
+
+ return (void *)tsc;
}
static void
nv50_sampler_state_bind(struct pipe_context *pipe, unsigned nr, void **sampler)
{
+ struct nv50_context *nv50 = nv50_context(pipe);
+ int i;
+
+ nv50->sampler_nr = nr;
+ for (i = 0; i < nv50->sampler_nr; i++)
+ nv50->sampler[i] = sampler[i];
+
+ nv50->dirty |= NV50_NEW_SAMPLER;
}
static void
nv50_sampler_state_delete(struct pipe_context *pipe, void *hwcso)
{
+ FREE(hwcso);
}
static void
nv50_set_sampler_texture(struct pipe_context *pipe, unsigned nr,
struct pipe_texture **pt)
{
+ struct nv50_context *nv50 = nv50_context(pipe);
+ int i;
+
+ for (i = 0; i < nr; i++)
+ pipe_texture_reference(&nv50->miptree[i], pt[i]);
+ for (i = nr; i < nv50->miptree_nr; i++)
+ pipe_texture_reference(&nv50->miptree[i], NULL);
+
+ nv50->miptree_nr = nr;
+ nv50->dirty |= NV50_NEW_TEXTURE;
}
static void *