st/mesa/glsl: set early_fragment_tests directly in shader_info
We also move EarlyFragmentTests out of the gl_shader_info struct as it is now only used by gl_shader. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
@@ -1815,7 +1815,7 @@ set_shader_inout_layout(struct gl_shader *shader,
|
|||||||
shader->info.origin_upper_left = state->fs_origin_upper_left;
|
shader->info.origin_upper_left = state->fs_origin_upper_left;
|
||||||
shader->info.ARB_fragment_coord_conventions_enable =
|
shader->info.ARB_fragment_coord_conventions_enable =
|
||||||
state->ARB_fragment_coord_conventions_enable;
|
state->ARB_fragment_coord_conventions_enable;
|
||||||
shader->info.EarlyFragmentTests = state->fs_early_fragment_tests;
|
shader->EarlyFragmentTests = state->fs_early_fragment_tests;
|
||||||
shader->info.InnerCoverage = state->fs_inner_coverage;
|
shader->info.InnerCoverage = state->fs_inner_coverage;
|
||||||
shader->info.PostDepthCoverage = state->fs_post_depth_coverage;
|
shader->info.PostDepthCoverage = state->fs_post_depth_coverage;
|
||||||
shader->BlendSupport = state->fs_blend_support;
|
shader->BlendSupport = state->fs_blend_support;
|
||||||
|
@@ -1887,8 +1887,8 @@ link_fs_inout_layout_qualifiers(struct gl_shader_program *prog,
|
|||||||
shader->info.pixel_center_integer;
|
shader->info.pixel_center_integer;
|
||||||
}
|
}
|
||||||
|
|
||||||
linked_shader->info.EarlyFragmentTests |=
|
linked_shader->Program->info.fs.early_fragment_tests |=
|
||||||
shader->info.EarlyFragmentTests;
|
shader->EarlyFragmentTests;
|
||||||
linked_shader->info.InnerCoverage |=
|
linked_shader->info.InnerCoverage |=
|
||||||
shader->info.InnerCoverage;
|
shader->info.InnerCoverage;
|
||||||
linked_shader->Program->info.fs.post_depth_coverage |=
|
linked_shader->Program->info.fs.post_depth_coverage |=
|
||||||
|
@@ -2315,12 +2315,6 @@ struct gl_shader_info
|
|||||||
GLenum OutputType;
|
GLenum OutputType;
|
||||||
} Geom;
|
} Geom;
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether early fragment tests are enabled as defined by
|
|
||||||
* ARB_shader_image_load_store.
|
|
||||||
*/
|
|
||||||
bool EarlyFragmentTests;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compute shader state from ARB_compute_shader and
|
* Compute shader state from ARB_compute_shader and
|
||||||
* ARB_compute_variable_group_size layout qualifiers.
|
* ARB_compute_variable_group_size layout qualifiers.
|
||||||
@@ -2434,6 +2428,12 @@ struct gl_shader
|
|||||||
*/
|
*/
|
||||||
GLbitfield BlendSupport;
|
GLbitfield BlendSupport;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether early fragment tests are enabled as defined by
|
||||||
|
* ARB_shader_image_load_store.
|
||||||
|
*/
|
||||||
|
bool EarlyFragmentTests;
|
||||||
|
|
||||||
struct gl_shader_info info;
|
struct gl_shader_info info;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -2232,7 +2232,6 @@ _mesa_copy_linked_program_data(const struct gl_shader_program *src,
|
|||||||
}
|
}
|
||||||
case MESA_SHADER_FRAGMENT: {
|
case MESA_SHADER_FRAGMENT: {
|
||||||
dst->info.fs.depth_layout = src->FragDepthLayout;
|
dst->info.fs.depth_layout = src->FragDepthLayout;
|
||||||
dst->info.fs.early_fragment_tests = dst_sh->info.EarlyFragmentTests;
|
|
||||||
dst->info.fs.inner_coverage = dst_sh->info.InnerCoverage;
|
dst->info.fs.inner_coverage = dst_sh->info.InnerCoverage;
|
||||||
dst->info.fs.post_depth_coverage = dst_sh->info.PostDepthCoverage;
|
dst->info.fs.post_depth_coverage = dst_sh->info.PostDepthCoverage;
|
||||||
break;
|
break;
|
||||||
|
@@ -6151,7 +6151,7 @@ st_translate_program(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (procType == PIPE_SHADER_FRAGMENT) {
|
if (procType == PIPE_SHADER_FRAGMENT) {
|
||||||
if (program->shader->info.EarlyFragmentTests)
|
if (program->shader->Program->info.fs.early_fragment_tests)
|
||||||
ureg_property(ureg, TGSI_PROPERTY_FS_EARLY_DEPTH_STENCIL, 1);
|
ureg_property(ureg, TGSI_PROPERTY_FS_EARLY_DEPTH_STENCIL, 1);
|
||||||
|
|
||||||
if (proginfo->info.inputs_read & VARYING_BIT_POS) {
|
if (proginfo->info.inputs_read & VARYING_BIT_POS) {
|
||||||
|
Reference in New Issue
Block a user