[Mesa-dev] [PATCH] anv/pipeline: do not disable depth writes if depth testing is disabled
Kenneth Graunke
kenneth at whitecape.org
Fri May 19 04:33:57 UTC 2017
On Thursday, May 18, 2017 9:28:17 PM PDT Kenneth Graunke wrote:
> On Tuesday, March 28, 2017 11:58:54 PM PDT Iago Toral Quiroga wrote:
> > Writing and testing are two different things and they can be set separately
> > by the application. If an application wants to record depth data without
> > caring for the depth test, it can enable depth test and set the depth
> > compare function to VK_COMPARE_OP_ALWAYS or it can simply disable
> > depth testing altogether. Some CTS tests do the latter.
> >
> > Fixes all multisample tests with depth-only formats in:
> > dEQP-VK.renderpass.multisample.*
> > ---
> > src/intel/vulkan/genX_pipeline.c | 4 ----
> > 1 file changed, 4 deletions(-)
> >
> > diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c
> > index 85a9e4f..dc393cb 100644
> > --- a/src/intel/vulkan/genX_pipeline.c
> > +++ b/src/intel/vulkan/genX_pipeline.c
> > @@ -728,10 +728,6 @@ sanitize_ds_state(VkPipelineDepthStencilStateCreateInfo *state,
> > {
> > *stencilWriteEnable = state->stencilTestEnable;
> >
> > - /* If the depth test is disabled, we won't be writing anything. */
> > - if (!state->depthTestEnable)
> > - state->depthWriteEnable = false;
> > -
> > /* The Vulkan spec requires that if either depth or stencil is not present,
> > * the pipeline is to act as if the test silently passes.
> > */
> >
>
> I think those tests are broken.
>
> According to section 25.10 (Depth Test) of Vulkan 1.0.49...
> https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#fragops-depth
>
> "The comparison is enabled or disabled with the depthTestEnable member
> of the VkPipelineDepthStencilStateCreateInfo structure. When disabled,
> the depth comparison and subsequent possible updates to the value of the
> depth component of the depth/stencil attachment are bypassed and the
> fragment is passed to the next operation. The stencil value, however,
> can be modified as indicated above as if the depth test passed. If
> enabled, the comparison takes place and the depth/stencil attachment
> value can subsequently be modified."
>
> So it sounds like depth writes aren't supposed to happen if the depth
> test is disabled - but stencil writes may. FWIW, that's how it works
> in OpenGL as well. (Thanks to Ilia for confirming this with me on IRC.)
Oh, sorry...I see now that you figured this out a month ago. I'd made a
note to look at this patch in my branch to port this depth/stencil
sanitizing stuff to GL. For some reason my email client didn't load the
rest of the thread...
--Ken
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170518/33627c61/attachment.sig>
More information about the mesa-dev
mailing list