diff options
author | Kenneth Graunke <[email protected]> | 2012-10-08 10:21:30 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2012-11-01 14:29:23 -0700 |
commit | 66c8473e028d416a87783da45de34454e4e9f6b8 (patch) | |
tree | 10aae29f37f150098507eafd4a66a06425cf127c /src/mesa/drivers/dri/i965/brw_vs.c | |
parent | 1f0093720de41ca23c408f11784fcc39d58271d2 (diff) |
i965/vs: Replace brw_vs_emit.c with dumping code into the vec4_visitor.
Rather than having two separate backends, just create a small layer that
translates the subset of Mesa IR used for ARB_vertex_program and fixed
function programs to the Vec4 IR. This allows us to use the same
optimization passes, code generator, register allocator as for GLSL.
v2: Incorporate Eric's review comments.
- Fix use of uninitialized src_swiz[] values in the SWIZZLE_ZERO/ONE
case: just initialize it to 0 (.x) since the value doesn't matter
(those channels get writemasked out anyway).
- Properly reswizzle source register's swizzles, rather than overwriting
the swizzle.
- Port the old brw_vs_emit code for computing .x of the EXP2 opcode.
- Update comments, removing mention of NV_vertex_program, etc.
- Delete remaining #warning lines and debug comments.
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_vs.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vs.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index 4e950742099..551f97717a5 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -245,11 +245,12 @@ do_vs_prog(struct brw_context *brw, */ param_count = vs->num_uniform_components * 4; - /* We also upload clip plane data as uniforms */ - param_count += MAX_CLIP_PLANES * 4; } else { param_count = vp->program.Base.Parameters->NumParameters * 4; } + /* We also upload clip plane data as uniforms */ + param_count += MAX_CLIP_PLANES * 4; + c.prog_data.param = rzalloc_array(NULL, const float *, param_count); c.prog_data.pull_param = rzalloc_array(NULL, const float *, param_count); @@ -281,13 +282,9 @@ do_vs_prog(struct brw_context *brw, /* Emit GEN4 code. */ - if (prog) { - if (!brw_vs_emit(prog, &c)) { - ralloc_free(mem_ctx); - return false; - } - } else { - brw_old_vs_emit(&c); + if (!brw_vs_emit(prog, &c)) { + ralloc_free(mem_ctx); + return false; } if (c.prog_data.nr_pull_params) |