mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-18 06:10:36 +01:00
nvk: Set the discard bit for Z/S self-deps
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25135>
This commit is contained in:
parent
35e0989779
commit
dff769e2bd
3 changed files with 13 additions and 5 deletions
|
|
@ -54,9 +54,15 @@ emit_pipeline_rs_state(struct nv_push *p,
|
|||
|
||||
static void
|
||||
nvk_populate_fs_key(struct nvk_fs_key *key,
|
||||
const struct vk_multisample_state *ms)
|
||||
const struct vk_multisample_state *ms,
|
||||
const struct vk_render_pass_state *rp)
|
||||
{
|
||||
memset(key, 0, sizeof(*key));
|
||||
|
||||
if (rp->pipeline_flags &
|
||||
VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT)
|
||||
key->zs_self_dep = true;
|
||||
|
||||
if (ms == NULL || ms->rasterization_samples <= 1)
|
||||
return;
|
||||
|
||||
|
|
@ -344,7 +350,7 @@ nvk_graphics_pipeline_create(struct nvk_device *dev,
|
|||
|
||||
struct nvk_fs_key fs_key_tmp, *fs_key = NULL;
|
||||
if (stage == MESA_SHADER_FRAGMENT) {
|
||||
nvk_populate_fs_key(&fs_key_tmp, state.ms);
|
||||
nvk_populate_fs_key(&fs_key_tmp, state.ms, state.rp);
|
||||
fs_key = &fs_key_tmp;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -946,7 +946,8 @@ nvk_hdr_interp_mode(const struct nv50_ir_varying *var)
|
|||
|
||||
|
||||
static int
|
||||
nvk_fs_gen_header(struct nvk_shader *fs, struct nv50_ir_prog_info_out *info)
|
||||
nvk_fs_gen_header(struct nvk_shader *fs, const struct nvk_fs_key *key,
|
||||
struct nv50_ir_prog_info_out *info)
|
||||
{
|
||||
unsigned i, c, a, m;
|
||||
|
||||
|
|
@ -954,7 +955,7 @@ nvk_fs_gen_header(struct nvk_shader *fs, struct nv50_ir_prog_info_out *info)
|
|||
fs->hdr[0] = 0x20062 | (5 << 10);
|
||||
fs->hdr[5] = 0x80000000; /* getting a trap if FRAG_COORD_UMASK.w = 0 */
|
||||
|
||||
if (info->prop.fp.usesDiscard)
|
||||
if (info->prop.fp.usesDiscard || key->zs_self_dep)
|
||||
fs->hdr[0] |= 0x8000;
|
||||
if (!info->prop.fp.separateFragData)
|
||||
fs->hdr[0] |= 0x4000;
|
||||
|
|
@ -1144,7 +1145,7 @@ nvk_compile_nir(struct nvk_physical_device *pdev, nir_shader *nir,
|
|||
ret = nvk_vs_gen_header(shader, &info_out);
|
||||
break;
|
||||
case PIPE_SHADER_FRAGMENT:
|
||||
ret = nvk_fs_gen_header(shader, &info_out);
|
||||
ret = nvk_fs_gen_header(shader, fs_key, &info_out);
|
||||
shader->fs.uses_sample_shading = nir->info.fs.uses_sample_shading;
|
||||
break;
|
||||
case PIPE_SHADER_GEOMETRY:
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ struct vk_shader_module;
|
|||
struct nvk_fs_key {
|
||||
bool msaa;
|
||||
bool force_per_sample;
|
||||
bool zs_self_dep;
|
||||
};
|
||||
|
||||
struct nvk_transform_feedback_state {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue