const struct tgsi_token *tokens;
struct ureg_src src;
struct ureg_dst dst;
- unsigned num_tokens;
ureg = ureg_create(PIPE_SHADER_VERTEX);
if (!ureg)
ureg_MOV(ureg, dst, src);
ureg_END(ureg);
- tokens = ureg_get_tokens(ureg, &num_tokens);
+ tokens = ureg_get_tokens(ureg, NULL);
ureg_destroy(ureg);
static void
make_vs_key(struct svga_context *svga, struct svga_compile_key *key)
{
- const unsigned shader = PIPE_SHADER_VERTEX;
+ const enum pipe_shader_type shader = PIPE_SHADER_VERTEX;
memset(key, 0, sizeof *key);
struct ureg_src src[PIPE_MAX_SHADER_INPUTS];
struct ureg_dst dst[PIPE_MAX_SHADER_OUTPUTS];
struct ureg_program *ureg;
- unsigned num_tokens;
struct svga_compile_key key;
enum pipe_error ret;
ureg_END(ureg);
memset(&new_vs, 0, sizeof(new_vs));
- new_vs.base.tokens = ureg_get_tokens(ureg, &num_tokens);
+ new_vs.base.tokens = ureg_get_tokens(ureg, NULL);
tgsi_scan_shader(new_vs.base.tokens, &new_vs.base.info);
memset(&key, 0, sizeof(key));
enum pipe_error ret = PIPE_OK;
struct svga_compile_key key;
+ SVGA_STATS_TIME_PUSH(svga_sws(svga), SVGA_STATS_TIME_EMITVS);
+
/* If there is an active geometry shader, and it has stream output
* defined, then we will skip the stream output from the vertex shader
*/
ret = compile_vs(svga, vs, &key, &variant);
}
if (ret != PIPE_OK)
- return ret;
+ goto done;
/* insert the new variant at head of linked list */
assert(variant);
if (variant) {
ret = svga_set_shader(svga, SVGA3D_SHADERTYPE_VS, variant);
if (ret != PIPE_OK)
- return ret;
+ goto done;
svga->rebind.flags.vs = FALSE;
}
svga->state.hw_draw.vs = variant;
}
- return PIPE_OK;
+done:
+ SVGA_STATS_TIME_POP(svga_sws(svga));
+ return ret;
}
struct svga_tracked_state svga_hw_vs =