mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 19:40:10 +01:00
i915g: Fix a bug in facing.
However doesn't work because of limitations in the draw module.
This commit is contained in:
parent
6750226e6d
commit
8dd1e3670f
3 changed files with 7 additions and 7 deletions
|
|
@ -36,8 +36,7 @@ Random list of problems with i915g:
|
|||
* PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR
|
||||
* PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS
|
||||
|
||||
- Finish front/back face. This would need EMIT_1F_FACE or adding a couple of
|
||||
instructions in the shader.
|
||||
- Finish front/back face. We need to add face support to lp_build_system_values_array and use it in draw_llvm.c.
|
||||
|
||||
Other bugs can be found here:
|
||||
https://bugs.freedesktop.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=Drivers/Gallium/i915g
|
||||
|
|
|
|||
|
|
@ -215,9 +215,7 @@ src_vector(struct i915_fp_compile *p,
|
|||
case TGSI_SEMANTIC_FACE:
|
||||
{
|
||||
/* for back/front faces */
|
||||
/* XXX also emit something from 0,1 to -1,1 */
|
||||
int real_tex_unit = get_mapping(fs, I915_SEMANTIC_FACE);
|
||||
printf("semantic face fpc at %d\n",real_tex_unit);
|
||||
src = i915_emit_decl(p, REG_TYPE_T, T_TEX0 + real_tex_unit, D0_CHANNEL_X);
|
||||
break;
|
||||
}
|
||||
|
|
@ -246,7 +244,6 @@ src_vector(struct i915_fp_compile *p,
|
|||
source->Register.SwizzleZ,
|
||||
source->Register.SwizzleW);
|
||||
|
||||
|
||||
/* There's both negate-all-components and per-component negation.
|
||||
* Try to handle both here.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -157,11 +157,15 @@ static void calculate_vertex_layout(struct i915_context *i915)
|
|||
|
||||
/* front/back face */
|
||||
if (face) {
|
||||
uint slot = find_mapping(fs, I915_SEMANTIC_FACE);
|
||||
uint slot = find_mapping(fs, I915_SEMANTIC_FACE);
|
||||
debug_printf("Front/back face is broken\n");
|
||||
/* XXX Because of limitations in the draw module, currently src will be 0
|
||||
* for SEMANTIC_FACE, so this aliases to POS. We need to fix in the draw
|
||||
* module by adding an extra shader output.
|
||||
*/
|
||||
src = draw_find_shader_output(i915->draw, TGSI_SEMANTIC_FACE, 0);
|
||||
/* really here it's EMIT_1F_FACE */
|
||||
draw_emit_vertex_attr(&vinfo, EMIT_1F, INTERP_CONSTANT, src);
|
||||
vinfo.hwfmt[1] &= ~(TEXCOORDFMT_NOT_PRESENT << (slot * 4));
|
||||
vinfo.hwfmt[1] |= TEXCOORDFMT_1D << (slot * 4);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue