mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 14:08:05 +02:00
i965/fs: Switch W and 1/W in Sandybridge interpolation setup.
Various documentation mentions that "W" is handed to the WM stage, but further digging seems to indicate that they really mean 1/W. The code here is still unclear, but changing this fixes piglit test "fragcoord_w" on Sandybridge as well as a Khronos ES2 conformance test. I also tested 3DMarkMobile ES2.0's taiji and hoverjet demos, as well as Nexuiz, just to be safe. NOTE: This is a candidate for the 7.10 branch.
This commit is contained in:
parent
a019dd0d6e
commit
5d7fefb9af
1 changed files with 4 additions and 4 deletions
|
|
@ -1989,10 +1989,10 @@ fs_visitor::emit_interpolation_setup_gen6()
|
|||
emit(BRW_OPCODE_MOV, this->pixel_x, int_pixel_x);
|
||||
emit(BRW_OPCODE_MOV, this->pixel_y, int_pixel_y);
|
||||
|
||||
this->current_annotation = "compute 1/pos.w";
|
||||
this->wpos_w = fs_reg(brw_vec8_grf(c->source_w_reg, 0));
|
||||
this->pixel_w = fs_reg(this, glsl_type::float_type);
|
||||
emit_math(FS_OPCODE_RCP, this->pixel_w, wpos_w);
|
||||
this->current_annotation = "compute pos.w";
|
||||
this->pixel_w = fs_reg(brw_vec8_grf(c->source_w_reg, 0));
|
||||
this->wpos_w = fs_reg(this, glsl_type::float_type);
|
||||
emit_math(FS_OPCODE_RCP, this->wpos_w, this->pixel_w);
|
||||
|
||||
this->delta_x = fs_reg(brw_vec8_grf(2, 0));
|
||||
this->delta_y = fs_reg(brw_vec8_grf(3, 0));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue