<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Aug 6, 2016 at 4:55 PM, Jason Ekstrand <span dir="ltr"><<a href="mailto:jason@jlekstrand.net" target="_blank">jason@jlekstrand.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">On Sat, Aug 6, 2016 at 4:15 PM, Kenneth Graunke <span dir="ltr"><<a href="mailto:kenneth@whitecape.org" target="_blank">kenneth@whitecape.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span>On Saturday, August 6, 2016 10:31:19 AM PDT Jason Ekstrand wrote:<br>
> This bit doesn't enable multisampling, it simply sets the multisampling<br>
> mode to DX which is what we want.<br>
<br>
</span>This in fact does not set the multisampling API mode. That's the<br>
DXMultisampleRasterizationMode field, while you're changing the<br>
DXMultisampleRasterizationEnab<wbr>le bit.<br>
<br>
I'm not saying this is wrong, but could you provide a better explanation<br>
for this change? I think you need to cite the 3DSTATE_INT Multisample<br>
Rasterization Modes table and why the signals ultimately produced work<br>
out to what we want despite changing this.<br></blockquote><div><br></div></span><div>I just kicked this guy off to CI:<br><br><a href="https://cgit.freedesktop.org/~jekstrand/mesa/commit/?h=jenkins_gl" target="_blank">https://cgit.freedesktop.org/~<wbr>jekstrand/mesa/commit/?h=<wbr>jenkins_gl</a><br><br></div><div>the i965 driver is probably a better place to prototype this change anyway since it is getting better test coverage.<br></div></div></div></div></blockquote><div><br></div><div>Jenkins wasn't too happy with that patch but it seems to only be a problem when multisampling is disabled on a multisampled buffer. Since Vulkan has no concept of non-multisampled buffers with > 1 sample (Hooray non-stupid API's!) I think we're fine.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div><div><div class="h5"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
If this works, it would be nice - in the GL driver, we could likely<br>
drop the _NEW_MULTISAMPLE flag in the 3DSTATE_RASTER atom.<br>
<div><div><br>
> ---<br>
> src/intel/vulkan/gen8_pipeline<wbr>.c | 11 ++---------<br>
> 1 file changed, 2 insertions(+), 9 deletions(-)<br>
><br>
> diff --git a/src/intel/vulkan/gen8_pipeli<wbr>ne.c b/src/intel/vulkan/gen8_pipeli<wbr>ne.c<br>
> index 6b7936a..ad8a643 100644<br>
> --- a/src/intel/vulkan/gen8_pipeli<wbr>ne.c<br>
> +++ b/src/intel/vulkan/gen8_pipeli<wbr>ne.c<br>
> @@ -47,14 +47,8 @@ emit_ia_state(struct anv_pipeline *pipeline,<br>
> static void<br>
> emit_rs_state(struct anv_pipeline *pipeline,<br>
> const VkPipelineRasterizationStateCr<wbr>eateInfo *info,<br>
> - const VkPipelineMultisampleStateCrea<wbr>teInfo *ms_info,<br>
> const struct anv_graphics_pipeline_create_i<wbr>nfo *extra)<br>
> {<br>
> - uint32_t samples = 1;<br>
> -<br>
> - if (ms_info)<br>
> - samples = ms_info->rasterizationSamples;<br>
> -<br>
> struct GENX(3DSTATE_SF) sf = {<br>
> GENX(3DSTATE_SF_header),<br>
> };<br>
> @@ -75,7 +69,7 @@ emit_rs_state(struct anv_pipeline *pipeline,<br>
> /* For details on 3DSTATE_RASTER multisample state, see the BSpec table<br>
> * "Multisample Modes State".<br>
> */<br>
> - raster.DXMultisampleRasteriza<wbr>tionEnable = samples > 1;<br>
> + raster.DXMultisampleRasteriza<wbr>tionEnable = true;<br>
> raster.ForcedSampleCount = FSC_NUMRASTSAMPLES_0;<br>
> raster.ForceMultisampling = false;<br>
><br>
> @@ -176,8 +170,7 @@ genX(graphics_pipeline_create)<wbr>(<br>
> assert(pCreateInfo->pInputAss<wbr>emblyState);<br>
> emit_ia_state(pipeline, pCreateInfo->pInputAssemblySta<wbr>te, extra);<br>
> assert(pCreateInfo->pRasteriz<wbr>ationState);<br>
> - emit_rs_state(pipeline, pCreateInfo->pRasterizationSta<wbr>te,<br>
> - pCreateInfo->pMultisampleStat<wbr>e, extra);<br>
> + emit_rs_state(pipeline, pCreateInfo->pRasterizationSta<wbr>te, extra);<br>
> emit_ms_state(pipeline, pCreateInfo->pMultisampleState<wbr>);<br>
> emit_ds_state(pipeline, pCreateInfo->pDepthStencilStat<wbr>e, pass, subpass);<br>
> emit_cb_state(pipeline, pCreateInfo->pColorBlendState,<br>
><br>
<br>
</div></div></blockquote></div></div></div><br></div></div>
</blockquote></div><br></div></div>