mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 11:38:05 +02:00
i965: explicit tell header present for fb write on sandybridge
Determine header present for fb write by msg length is not right for SIMD16 dispatch, and if there're more output attributes, header present is not easy to tell from msg length. This explicitly adds new param for fb write to say header present or not. Fixes many cases' hang and failure in GL conformance test.
This commit is contained in:
parent
445cb9e53b
commit
4374703a9b
4 changed files with 8 additions and 8 deletions
|
|
@ -861,7 +861,8 @@ void brw_fb_WRITE(struct brw_compile *p,
|
|||
GLuint binding_table_index,
|
||||
GLuint msg_length,
|
||||
GLuint response_length,
|
||||
GLboolean eot);
|
||||
GLboolean eot,
|
||||
GLboolean header_present);
|
||||
|
||||
void brw_SAMPLE(struct brw_compile *p,
|
||||
struct brw_reg dest,
|
||||
|
|
|
|||
|
|
@ -1812,12 +1812,12 @@ void brw_fb_WRITE(struct brw_compile *p,
|
|||
GLuint binding_table_index,
|
||||
GLuint msg_length,
|
||||
GLuint response_length,
|
||||
GLboolean eot)
|
||||
GLboolean eot,
|
||||
GLboolean header_present)
|
||||
{
|
||||
struct intel_context *intel = &p->brw->intel;
|
||||
struct brw_instruction *insn;
|
||||
GLuint msg_control, msg_type;
|
||||
GLboolean header_present = GL_TRUE;
|
||||
|
||||
if (intel->gen >= 6 && binding_table_index == 0) {
|
||||
insn = next_insn(p, BRW_OPCODE_SENDC);
|
||||
|
|
@ -1829,9 +1829,6 @@ void brw_fb_WRITE(struct brw_compile *p,
|
|||
insn->header.compression_control = BRW_COMPRESSION_NONE;
|
||||
|
||||
if (intel->gen >= 6) {
|
||||
if (msg_length == 4)
|
||||
header_present = GL_FALSE;
|
||||
|
||||
/* headerless version, just submit color payload */
|
||||
src0 = brw_message_reg(msg_reg_nr);
|
||||
|
||||
|
|
|
|||
|
|
@ -2163,7 +2163,8 @@ fs_visitor::generate_fb_write(fs_inst *inst)
|
|||
inst->target,
|
||||
inst->mlen,
|
||||
0,
|
||||
eot);
|
||||
eot,
|
||||
inst->header_present);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -1356,7 +1356,8 @@ static void fire_fb_write( struct brw_wm_compile *c,
|
|||
target,
|
||||
nr,
|
||||
0,
|
||||
eot);
|
||||
eot,
|
||||
GL_TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue