瀏覽代碼

v3d: Fix stencil sampling from a separate-stencil buffer.

When the sampler view is in sample-stencil mode, we need to return uint
stencil values.  To do that, fill in the format table to return R8I, and
have the sampler view point at the separate stencil buffer.

Fixes dEQP-GLES31.functional.stencil_texturing.format.depth32f_stencil8_2d
tags/19.0-branchpoint
Eric Anholt 6 年之前
父節點
當前提交
c51d125d18
共有 2 個檔案被更改,包括 7 行新增0 行删除
  1. 1
    0
      src/gallium/drivers/v3d/v3dx_format_table.c
  2. 6
    0
      src/gallium/drivers/v3d/v3dx_state.c

+ 1
- 0
src/gallium/drivers/v3d/v3dx_format_table.c 查看文件

@@ -153,6 +153,7 @@ static const struct v3d_format format_table[] = {

/* Pretend we support this, but it'll be separate Z32F depth and S8. */
FORMAT(Z32_FLOAT_S8X24_UINT, D32F, DEPTH_COMP32F, SWIZ_XXXX, 32, 1),
FORMAT(X32_S8X24_UINT, S8, R8UI, SWIZ_XXXX, 16, 1),
#else
FORMAT(S8_UINT_Z24_UNORM, ZS_DEPTH24_STENCIL8, DEPTH24_X8, SWIZ_XXXX, 32, 1),
FORMAT(X8Z24_UNORM, ZS_DEPTH24_STENCIL8, DEPTH24_X8, SWIZ_XXXX, 32, 1),

+ 6
- 0
src/gallium/drivers/v3d/v3dx_state.c 查看文件

@@ -774,6 +774,12 @@ v3d_create_sampler_view(struct pipe_context *pctx, struct pipe_resource *prsc,
so->base.reference.count = 1;
so->base.context = pctx;

if (rsc->separate_stencil &&
cso->format == PIPE_FORMAT_X32_S8X24_UINT) {
rsc = rsc->separate_stencil;
prsc = &rsc->base;
}

/* V3D still doesn't support sampling from raster textures, so we will
* have to copy to a temporary tiled texture.
*/

Loading…
取消
儲存