mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-25 08:00:25 +01:00
ureg: add a mechanism to get the built tokens rather than a full shader
Previously ureg would always call the driver's create-shader function. This allows the caller the opportunity to hold onto the tokens if it needs to reuse them, eg. to create an internal draw shader.
This commit is contained in:
parent
c23894295b
commit
11f41f54cf
2 changed files with 30 additions and 0 deletions
|
|
@ -978,6 +978,25 @@ void *ureg_create_shader( struct ureg_program *ureg,
|
|||
}
|
||||
|
||||
|
||||
const struct tgsi_token *ureg_get_tokens( struct ureg_program *ureg,
|
||||
unsigned *nr_tokens )
|
||||
{
|
||||
const struct tgsi_token *tokens;
|
||||
|
||||
ureg_finalize(ureg);
|
||||
|
||||
tokens = &ureg->domain[DOMAIN_DECL].tokens[0].token;
|
||||
|
||||
if (nr_tokens)
|
||||
*nr_tokens = ureg->domain[DOMAIN_DECL].size;
|
||||
|
||||
ureg->domain[DOMAIN_DECL].tokens = 0;
|
||||
ureg->domain[DOMAIN_DECL].size = 0;
|
||||
ureg->domain[DOMAIN_DECL].order = 0;
|
||||
ureg->domain[DOMAIN_DECL].count = 0;
|
||||
|
||||
return tokens;
|
||||
}
|
||||
|
||||
|
||||
struct ureg_program *ureg_create( unsigned processor )
|
||||
|
|
|
|||
|
|
@ -82,10 +82,21 @@ ureg_create( unsigned processor );
|
|||
const struct tgsi_token *
|
||||
ureg_finalize( struct ureg_program * );
|
||||
|
||||
/* Create and return a shader:
|
||||
*/
|
||||
void *
|
||||
ureg_create_shader( struct ureg_program *,
|
||||
struct pipe_context *pipe );
|
||||
|
||||
|
||||
/* Alternately, return the built token stream and hand ownership of
|
||||
* that memory to the caller:
|
||||
*/
|
||||
const struct tgsi_token *
|
||||
ureg_get_tokens( struct ureg_program *ureg,
|
||||
unsigned *nr_tokens );
|
||||
|
||||
|
||||
void
|
||||
ureg_destroy( struct ureg_program * );
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue