Skip to content

Commit 2ef5063

Browse files
committed
anv/pipeline: Add sample locations for gen7-7.5
V1: Add multisample positions (Nanley) V2: Fix 8x sample positions to match OpenGL (Anuj) V3: Vulkan has standard sample locations. They need not be same as in OpenGL. (Anuj) Signed-off-by: Anuj Phogat <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
1 parent dc49dd7 commit 2ef5063

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

src/intel/vulkan/genX_pipeline_util.h

+47
Original file line numberDiff line numberDiff line change
@@ -475,13 +475,60 @@ emit_ms_state(struct anv_pipeline *pipeline,
475475
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_MULTISAMPLE), ms) {
476476
ms.NumberofMultisamples = log2_samples;
477477

478+
#if GEN_GEN >= 8
478479
/* The PRM says that this bit is valid only for DX9:
479480
*
480481
* SW can choose to set this bit only for DX9 API. DX10/OGL API's
481482
* should not have any effect by setting or not setting this bit.
482483
*/
483484
ms.PixelPositionOffsetEnable = false;
484485
ms.PixelLocation = CENTER;
486+
#else
487+
ms.PixelLocation = PIXLOC_CENTER;
488+
489+
switch (samples) {
490+
case 1:
491+
ms.Sample0XOffset = 0.5;
492+
ms.Sample0YOffset = 0.5;
493+
break;
494+
case 2:
495+
ms.Sample0XOffset = 0.25;
496+
ms.Sample0YOffset = 0.25;
497+
ms.Sample1XOffset = 0.75;
498+
ms.Sample1YOffset = 0.75;
499+
break;
500+
case 4:
501+
ms.Sample0XOffset = 0.375;
502+
ms.Sample0YOffset = 0.125;
503+
ms.Sample1XOffset = 0.875;
504+
ms.Sample1YOffset = 0.375;
505+
ms.Sample2XOffset = 0.125;
506+
ms.Sample2YOffset = 0.625;
507+
ms.Sample3XOffset = 0.625;
508+
ms.Sample3YOffset = 0.875;
509+
break;
510+
case 8:
511+
ms.Sample0XOffset = 0.5625;
512+
ms.Sample0YOffset = 0.3125;
513+
ms.Sample1XOffset = 0.4375;
514+
ms.Sample1YOffset = 0.6875;
515+
ms.Sample2XOffset = 0.8125;
516+
ms.Sample2YOffset = 0.5625;
517+
ms.Sample3XOffset = 0.3125;
518+
ms.Sample3YOffset = 0.1875;
519+
ms.Sample4XOffset = 0.1875;
520+
ms.Sample4YOffset = 0.8125;
521+
ms.Sample5XOffset = 0.0625;
522+
ms.Sample5YOffset = 0.4375;
523+
ms.Sample6XOffset = 0.6875;
524+
ms.Sample6YOffset = 0.9375;
525+
ms.Sample7XOffset = 0.9375;
526+
ms.Sample7YOffset = 0.0625;
527+
break;
528+
default:
529+
break;
530+
}
531+
#endif
485532
}
486533

487534
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_SAMPLE_MASK), sm) {

0 commit comments

Comments
 (0)