projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
r300g: Handle compute caps.
[mesa.git]
/
src
/
gallium
/
drivers
/
r300
/
r300_vs.c
diff --git
a/src/gallium/drivers/r300/r300_vs.c
b/src/gallium/drivers/r300/r300_vs.c
index a5e8fd680ff1a771b8b665c44bd0e94870cfc40a..4faf2b58b0f8e84c3698117f7b1ccced55280ef5 100644
(file)
--- a/
src/gallium/drivers/r300/r300_vs.c
+++ b/
src/gallium/drivers/r300/r300_vs.c
@@
-36,6
+36,7
@@
/* Convert info about VS output semantics into r300_shader_semantics. */
static void r300_shader_read_vs_outputs(
/* Convert info about VS output semantics into r300_shader_semantics. */
static void r300_shader_read_vs_outputs(
+ struct r300_context *r300,
struct tgsi_shader_info* info,
struct r300_shader_semantics* vs_outputs)
{
struct tgsi_shader_info* info,
struct r300_shader_semantics* vs_outputs)
{
@@
-83,6
+84,14
@@
static void r300_shader_read_vs_outputs(
fprintf(stderr, "r300 VP: cannot handle edgeflag output.\n");
break;
fprintf(stderr, "r300 VP: cannot handle edgeflag output.\n");
break;
+ case TGSI_SEMANTIC_CLIPVERTEX:
+ assert(index == 0);
+ /* Draw does clip vertex for us. */
+ if (r300->screen->caps.has_tcl) {
+ fprintf(stderr, "r300 VP: cannot handle clip vertex output.\n");
+ }
+ break;
+
default:
fprintf(stderr, "r300 VP: unknown vertex output semantic: %i.\n",
info->output_semantic_name[i]);
default:
fprintf(stderr, "r300 VP: unknown vertex output semantic: %i.\n",
info->output_semantic_name[i]);
@@
-160,10
+169,11
@@
static void set_vertex_inputs_outputs(struct r300_vertex_program_compiler * c)
c->code->outputs[outputs->wpos] = reg++;
}
c->code->outputs[outputs->wpos] = reg++;
}
-void r300_init_vs_outputs(struct r300_vertex_shader *vs)
+void r300_init_vs_outputs(struct r300_context *r300,
+ struct r300_vertex_shader *vs)
{
tgsi_scan_shader(vs->state.tokens, &vs->info);
{
tgsi_scan_shader(vs->state.tokens, &vs->info);
- r300_shader_read_vs_outputs(&vs->info, &vs->outputs);
+ r300_shader_read_vs_outputs(
r300,
&vs->info, &vs->outputs);
}
static void r300_dummy_vertex_shader(
}
static void r300_dummy_vertex_shader(
@@
-187,7
+197,7
@@
static void r300_dummy_vertex_shader(
ureg_destroy(ureg);
shader->dummy = TRUE;
ureg_destroy(ureg);
shader->dummy = TRUE;
- r300_init_vs_outputs(shader);
+ r300_init_vs_outputs(
r300,
shader);
r300_translate_vertex_shader(r300, shader);
}
r300_translate_vertex_shader(r300, shader);
}
@@
-210,6
+220,7
@@
void r300_translate_vertex_shader(struct r300_context *r300,
compiler.Base.disable_optimizations = DBG_ON(r300, DBG_NO_OPT);
compiler.Base.has_half_swizzles = FALSE;
compiler.Base.has_presub = FALSE;
compiler.Base.disable_optimizations = DBG_ON(r300, DBG_NO_OPT);
compiler.Base.has_half_swizzles = FALSE;
compiler.Base.has_presub = FALSE;
+ compiler.Base.has_omod = FALSE;
compiler.Base.max_temp_regs = 32;
compiler.Base.max_constants = 256;
compiler.Base.max_alu_insts = r300->screen->caps.is_r500 ? 1024 : 256;
compiler.Base.max_temp_regs = 32;
compiler.Base.max_constants = 256;
compiler.Base.max_alu_insts = r300->screen->caps.is_r500 ? 1024 : 256;