diff options
author | Roland Scheidegger <[email protected]> | 2013-02-27 19:07:18 +0100 |
---|---|---|
committer | Roland Scheidegger <[email protected]> | 2013-02-28 03:39:53 +0100 |
commit | 6b35c2b110be0d9ae6a292250fdcbab11a9190a5 (patch) | |
tree | 5141a7490ac67ee8df3542f8396b2ba4e6423ec7 /src/gallium/auxiliary/tgsi/tgsi_exec.h | |
parent | 0845d16976b41e0a151f96b900fb58a7f26d7774 (diff) |
softpipe/draw/tgsi: simplify driver/tgsi sampler interface
Use a single sampler adapter instead of per-sampler-unit samplers,
and just pass along texture unit and sampler unit in the calls.
The reason is that for dx10-style sample opcodes pre-wired
samplers including all the texture state aren't really feasible (and for
sample_i/sviewinfo we don't even have samplers).
Of course right now softpipe doesn't actually do anything more than
just look up all its pre-wired per-texunit/per-samplerunit sampler as
it did before so this doesn't really achieve much except one more
function call, however this is now all softpipe's fault (fixing that in
a way which doesn't suck is still an unsolved problem).
Reviewed-by: Jose Fonseca <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/tgsi/tgsi_exec.h')
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_exec.h | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h b/src/gallium/auxiliary/tgsi/tgsi_exec.h index a66c9197f75..c009a97c574 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.h +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h @@ -115,6 +115,8 @@ struct tgsi_sampler * lod - lod value, except for shadow cube arrays (compare value there). */ void (*get_samples)(struct tgsi_sampler *sampler, + const unsigned sview_index, + const unsigned sampler_index, const float s[TGSI_QUAD_SIZE], const float t[TGSI_QUAD_SIZE], const float r[TGSI_QUAD_SIZE], @@ -122,12 +124,15 @@ struct tgsi_sampler const float c1[TGSI_QUAD_SIZE], enum tgsi_sampler_control control, float rgba[TGSI_NUM_CHANNELS][TGSI_QUAD_SIZE]); - void (*get_dims)(struct tgsi_sampler *sampler, int level, - int dims[4]); - void (*get_texel)(struct tgsi_sampler *sampler, const int i[TGSI_QUAD_SIZE], - const int j[TGSI_QUAD_SIZE], const int k[TGSI_QUAD_SIZE], - const int lod[TGSI_QUAD_SIZE], const int8_t offset[3], - float rgba[TGSI_NUM_CHANNELS][TGSI_QUAD_SIZE]); + void (*get_dims)(struct tgsi_sampler *sampler, + const unsigned sview_index, + int level, int dims[4]); + void (*get_texel)(struct tgsi_sampler *sampler, + const unsigned sview_index, + const int i[TGSI_QUAD_SIZE], + const int j[TGSI_QUAD_SIZE], const int k[TGSI_QUAD_SIZE], + const int lod[TGSI_QUAD_SIZE], const int8_t offset[3], + float rgba[TGSI_NUM_CHANNELS][TGSI_QUAD_SIZE]); }; #define TGSI_EXEC_NUM_TEMPS 4096 @@ -276,7 +281,7 @@ struct tgsi_exec_machine struct tgsi_exec_vector *Addrs; struct tgsi_exec_vector *Predicates; - struct tgsi_sampler **Samplers; + struct tgsi_sampler *Sampler; unsigned ImmLimit; @@ -363,8 +368,7 @@ void tgsi_exec_machine_bind_shader( struct tgsi_exec_machine *mach, const struct tgsi_token *tokens, - uint numSamplers, - struct tgsi_sampler **samplers); + struct tgsi_sampler *sampler); uint tgsi_exec_machine_run( |