i965: Add a brw_wm_prog_data::has_render_target_reads field.
State upload code should use prog_data rather than poking at shader_info directly. Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
@@ -614,6 +614,7 @@ struct brw_wm_prog_data {
|
|||||||
bool uses_src_depth;
|
bool uses_src_depth;
|
||||||
bool uses_src_w;
|
bool uses_src_w;
|
||||||
bool uses_sample_mask;
|
bool uses_sample_mask;
|
||||||
|
bool has_render_target_reads;
|
||||||
bool has_side_effects;
|
bool has_side_effects;
|
||||||
bool pulls_bary;
|
bool pulls_bary;
|
||||||
|
|
||||||
|
@@ -6544,6 +6544,8 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data,
|
|||||||
shader->info.fs.uses_sample_qualifier ||
|
shader->info.fs.uses_sample_qualifier ||
|
||||||
shader->info.outputs_read);
|
shader->info.outputs_read);
|
||||||
|
|
||||||
|
prog_data->has_render_target_reads = shader->info.outputs_read != 0ull;
|
||||||
|
|
||||||
prog_data->early_fragment_tests = shader->info.fs.early_fragment_tests;
|
prog_data->early_fragment_tests = shader->info.fs.early_fragment_tests;
|
||||||
prog_data->post_depth_coverage = shader->info.fs.post_depth_coverage;
|
prog_data->post_depth_coverage = shader->info.fs.post_depth_coverage;
|
||||||
prog_data->inner_coverage = shader->info.fs.inner_coverage;
|
prog_data->inner_coverage = shader->info.fs.inner_coverage;
|
||||||
|
@@ -1049,9 +1049,8 @@ update_renderbuffer_read_surfaces(struct brw_context *brw)
|
|||||||
const struct brw_wm_prog_data *wm_prog_data =
|
const struct brw_wm_prog_data *wm_prog_data =
|
||||||
brw_wm_prog_data(brw->wm.base.prog_data);
|
brw_wm_prog_data(brw->wm.base.prog_data);
|
||||||
|
|
||||||
/* BRW_NEW_FRAGMENT_PROGRAM */
|
if (wm_prog_data->has_render_target_reads &&
|
||||||
if (!ctx->Extensions.MESA_shader_framebuffer_fetch &&
|
!ctx->Extensions.MESA_shader_framebuffer_fetch) {
|
||||||
brw->fragment_program && brw->fragment_program->info.outputs_read) {
|
|
||||||
/* _NEW_BUFFERS */
|
/* _NEW_BUFFERS */
|
||||||
const struct gl_framebuffer *fb = ctx->DrawBuffer;
|
const struct gl_framebuffer *fb = ctx->DrawBuffer;
|
||||||
|
|
||||||
@@ -1117,7 +1116,6 @@ const struct brw_tracked_state brw_renderbuffer_read_surfaces = {
|
|||||||
.mesa = _NEW_BUFFERS,
|
.mesa = _NEW_BUFFERS,
|
||||||
.brw = BRW_NEW_BATCH |
|
.brw = BRW_NEW_BATCH |
|
||||||
BRW_NEW_FAST_CLEAR_COLOR |
|
BRW_NEW_FAST_CLEAR_COLOR |
|
||||||
BRW_NEW_FRAGMENT_PROGRAM |
|
|
||||||
BRW_NEW_FS_PROG_DATA,
|
BRW_NEW_FS_PROG_DATA,
|
||||||
},
|
},
|
||||||
.emit = update_renderbuffer_read_surfaces,
|
.emit = update_renderbuffer_read_surfaces,
|
||||||
|
Reference in New Issue
Block a user