summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlia Mirkin <[email protected]>2016-11-01 16:45:13 -0400
committerIlia Mirkin <[email protected]>2016-11-08 19:28:35 -0500
commitbef4a48d1c68d74ad42d242483f440b5256e7adf (patch)
tree9f0e30cc8a43a4a8bd2a06d1a37f9dbe7a0580f0
parentaa62fa8fb79699e117f0285bd5a045f541aa9771 (diff)
swr: add support for EXT_depth_bounds_test
Signed-off-by: Ilia Mirkin <[email protected]> Reviewed-by: Tim Rowley <[email protected]>
-rw-r--r--src/gallium/drivers/swr/swr_screen.cpp2
-rw-r--r--src/gallium/drivers/swr/swr_state.cpp6
2 files changed, 7 insertions, 1 deletions
diff --git a/src/gallium/drivers/swr/swr_screen.cpp b/src/gallium/drivers/swr/swr_screen.cpp
index 704a6842dc1..fa16edd1250 100644
--- a/src/gallium/drivers/swr/swr_screen.cpp
+++ b/src/gallium/drivers/swr/swr_screen.cpp
@@ -332,7 +332,7 @@ swr_get_param(struct pipe_screen *screen, enum pipe_cap param)
case PIPE_CAP_MAX_SHADER_PATCH_VARYINGS:
return 0;
case PIPE_CAP_DEPTH_BOUNDS_TEST:
- return 0; // xxx
+ return 1;
case PIPE_CAP_TEXTURE_FLOAT_LINEAR:
case PIPE_CAP_TEXTURE_HALF_FLOAT_LINEAR:
return 1;
diff --git a/src/gallium/drivers/swr/swr_state.cpp b/src/gallium/drivers/swr/swr_state.cpp
index 424bff2284f..451ab5af114 100644
--- a/src/gallium/drivers/swr/swr_state.cpp
+++ b/src/gallium/drivers/swr/swr_state.cpp
@@ -1205,6 +1205,7 @@ swr_update_derived(struct pipe_context *pipe,
struct pipe_depth_state *depth = &(ctx->depth_stencil->depth);
struct pipe_stencil_state *stencil = ctx->depth_stencil->stencil;
SWR_DEPTH_STENCIL_STATE depthStencilState = {{0}};
+ SWR_DEPTH_BOUNDS_STATE depthBoundsState = {0};
/* XXX, incomplete. Need to flesh out stencil & alpha test state
struct pipe_stencil_state *front_stencil =
@@ -1251,6 +1252,11 @@ swr_update_derived(struct pipe_context *pipe,
depthStencilState.depthTestFunc = swr_convert_depth_func(depth->func);
depthStencilState.depthWriteEnable = depth->writemask;
SwrSetDepthStencilState(ctx->swrContext, &depthStencilState);
+
+ depthBoundsState.depthBoundsTestEnable = depth->bounds_test;
+ depthBoundsState.depthBoundsTestMinValue = depth->bounds_min;
+ depthBoundsState.depthBoundsTestMaxValue = depth->bounds_max;
+ SwrSetDepthBoundsState(ctx->swrContext, &depthBoundsState);
}
/* Blend State */