diff options
author | Kenneth Graunke <kenneth@whitecape.org> | 2016-04-10 21:28:37 -0700 |
---|---|---|
committer | Kenneth Graunke <kenneth@whitecape.org> | 2016-04-25 11:44:48 -0700 |
commit | 501bedffa650c7d340d8f716736f6333c1317b34 (patch) | |
tree | 67c8c349703191e24635985afc1dcc3cdbf46873 /src/mesa/drivers/dri/i965/brw_shader.cpp | |
parent | 464d6080c60e6f97d286b16f5b09fde94ab37cfc (diff) | |
download | external_mesa3d-501bedffa650c7d340d8f716736f6333c1317b34.zip external_mesa3d-501bedffa650c7d340d8f716736f6333c1317b34.tar.gz external_mesa3d-501bedffa650c7d340d8f716736f6333c1317b34.tar.bz2 |
i965: Make a few tessellation related functions non-static.
Also, move them to brw_shader.cpp so they're in a location for code
used by both the vec4 and fs worlds.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_shader.cpp')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_shader.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp b/src/mesa/drivers/dri/i965/brw_shader.cpp index 376cb25..b3aade1 100644 --- a/src/mesa/drivers/dri/i965/brw_shader.cpp +++ b/src/mesa/drivers/dri/i965/brw_shader.cpp @@ -582,6 +582,53 @@ brw_abs_immediate(enum brw_reg_type type, struct brw_reg *reg) return false; } +unsigned +tesslevel_outer_components(GLenum tes_primitive_mode) +{ + switch (tes_primitive_mode) { + case GL_QUADS: + return 4; + case GL_TRIANGLES: + return 3; + case GL_ISOLINES: + return 2; + default: + unreachable("Bogus tessellation domain"); + } + return 0; +} + +unsigned +tesslevel_inner_components(GLenum tes_primitive_mode) +{ + switch (tes_primitive_mode) { + case GL_QUADS: + return 2; + case GL_TRIANGLES: + return 1; + case GL_ISOLINES: + return 0; + default: + unreachable("Bogus tessellation domain"); + } + return 0; +} + +/** + * Given a normal .xyzw writemask, convert it to a writemask for a vector + * that's stored backwards, i.e. .wzyx. + */ +unsigned +writemask_for_backwards_vector(unsigned mask) +{ + unsigned new_mask = 0; + + for (int i = 0; i < 4; i++) + new_mask |= ((mask >> i) & 1) << (3 - i); + + return new_mask; +} + backend_shader::backend_shader(const struct brw_compiler *compiler, void *log_data, void *mem_ctx, |