mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
gallium: added draw_texture_samplers() to support texture fetches from vertex shaders
This may only be practical for the softpipe driver at this time.
This commit is contained in:
parent
1d9360b678
commit
f2bccfd3c8
4 changed files with 27 additions and 3 deletions
|
|
@ -331,6 +331,21 @@ draw_num_vs_outputs(const struct draw_context *draw)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Provide TGSI sampler objects for vertex shaders that use texture fetches.
|
||||
* This might only be used by software drivers for the time being.
|
||||
*/
|
||||
void
|
||||
draw_texture_samplers(struct draw_context *draw,
|
||||
uint num_samplers,
|
||||
struct tgsi_sampler **samplers)
|
||||
{
|
||||
draw->vs.num_samplers = num_samplers;
|
||||
draw->vs.samplers = samplers;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void draw_set_render( struct draw_context *draw,
|
||||
struct vbuf_render *render )
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ struct pipe_context;
|
|||
struct draw_context;
|
||||
struct draw_stage;
|
||||
struct draw_vertex_shader;
|
||||
|
||||
struct tgsi_sampler;
|
||||
|
||||
|
||||
struct draw_context *draw_create( void );
|
||||
|
|
@ -91,6 +91,12 @@ uint
|
|||
draw_num_vs_outputs(const struct draw_context *draw);
|
||||
|
||||
|
||||
void
|
||||
draw_texture_samplers(struct draw_context *draw,
|
||||
uint num_samplers,
|
||||
struct tgsi_sampler **samplers);
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Vertex shader functions
|
||||
|
|
|
|||
|
|
@ -185,6 +185,9 @@ struct draw_context
|
|||
/** TGSI program interpreter runtime state */
|
||||
struct tgsi_exec_machine machine;
|
||||
|
||||
uint num_samplers;
|
||||
struct tgsi_sampler **samplers;
|
||||
|
||||
/* This (and the tgsi_exec_machine struct) probably need to be moved somewhere private.
|
||||
*/
|
||||
struct gallivm_cpu_engine *engine;
|
||||
|
|
|
|||
|
|
@ -68,8 +68,8 @@ vs_exec_prepare( struct draw_vertex_shader *shader,
|
|||
if (evs->machine->Tokens != shader->state.tokens) {
|
||||
tgsi_exec_machine_bind_shader(evs->machine,
|
||||
shader->state.tokens,
|
||||
PIPE_MAX_SAMPLERS,
|
||||
NULL /*samplers*/ );
|
||||
draw->vs.num_samplers,
|
||||
draw->vs.samplers);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue