svga: explicit set DXFMT_SHADER_SAMPLE for DS format for pre-SM41 device
authorCharmaine Lee <charmainel@vmware.com>
Thu, 7 Dec 2017 17:35:00 +0000 (09:35 -0800)
committerBrian Paul <brianp@vmware.com>
Mon, 10 Sep 2018 19:07:30 +0000 (13:07 -0600)
Explicit set the DXFMT_SHADER_SAMPLE bit for depth stencil formats
for pre-SM41 device only. This bit is now set by the SM41 device.

Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/drivers/svga/svga_format.c

index be68fb4610af89f52e472c9ad39582bd20ba33ef..c9d5abe986e614b4a4aeb2300abfc322f7cf1f79 100644 (file)
@@ -1787,7 +1787,7 @@ svga_get_dx_format_cap(struct svga_screen *ss,
    (void) check_format_tables;
 #endif
 
-   assert(ss->sws->have_vgpu10);
+   assert(sws->have_vgpu10);
    assert(format < ARRAY_SIZE(format_cap_table));
    entry = &format_cap_table[format];
    assert(entry->format == format);
@@ -1797,12 +1797,13 @@ svga_get_dx_format_cap(struct svga_screen *ss,
    if (entry->devcap) {
       sws->get_cap(sws, entry->devcap, caps);
 
-      /* svga device supports SHADER_SAMPLE capability for these
-       * formats but does not advertise the devcap.
+      /* pre-SM41 capabable svga device supports SHADER_SAMPLE capability for
+       * these formats but does not advertise the devcap.
        * So enable this bit here.
        */
-      if (format == SVGA3D_R32_FLOAT_X8X24 ||
-          format == SVGA3D_R24_UNORM_X8) {
+      if (!sws->have_sm4_1 &&
+          (format == SVGA3D_R32_FLOAT_X8X24 ||
+           format == SVGA3D_R24_UNORM_X8)) {
          caps->u |= SVGA3D_DXFMT_SHADER_SAMPLE;
       }
    }