Mesa (master): swr/rasterizer: Adding support for unhandled clipEnable state
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jul 23 20:05:03 UTC 2019
Module: Mesa
Branch: master
Commit: ccc6b4f96b012064f2bc74ec7a3465874b24ef8e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ccc6b4f96b012064f2bc74ec7a3465874b24ef8e
Author: Jan Zielinski <jan.zielinski at intel.com>
Date: Tue Jul 23 10:30:47 2019 +0200
swr/rasterizer: Adding support for unhandled clipEnable state
Clipping is not correctly handled by the rasterizer - fixing this.
Reviewed-by: Alok Hota <alok.hota at intel.com>
---
src/gallium/drivers/swr/rasterizer/core/api.cpp | 4 ++--
src/gallium/drivers/swr/rasterizer/core/state.h | 1 +
src/gallium/drivers/swr/swr_state.cpp | 7 +++++--
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/gallium/drivers/swr/rasterizer/core/api.cpp b/src/gallium/drivers/swr/rasterizer/core/api.cpp
index 228e85a25c9..f9b86cfbb8d 100644
--- a/src/gallium/drivers/swr/rasterizer/core/api.cpp
+++ b/src/gallium/drivers/swr/rasterizer/core/api.cpp
@@ -904,8 +904,8 @@ void SetupPipeline(DRAW_CONTEXT* pDC)
};
- // Disable clipper if viewport transform is disabled
- if (pState->state.frontendState.vpTransformDisable)
+ // Disable clipper if viewport transform is disabled or if clipper is disabled
+ if (pState->state.frontendState.vpTransformDisable || !pState->state.rastState.clipEnable)
{
pState->pfnProcessPrims = pfnBinner;
#if USE_SIMD16_FRONTEND
diff --git a/src/gallium/drivers/swr/rasterizer/core/state.h b/src/gallium/drivers/swr/rasterizer/core/state.h
index 3731c41c4e4..e85144c2582 100644
--- a/src/gallium/drivers/swr/rasterizer/core/state.h
+++ b/src/gallium/drivers/swr/rasterizer/core/state.h
@@ -1050,6 +1050,7 @@ struct SWR_RASTSTATE
uint32_t frontWinding : 1;
uint32_t scissorEnable : 1;
uint32_t depthClipEnable : 1;
+ uint32_t clipEnable : 1;
uint32_t clipHalfZ : 1;
uint32_t pointParam : 1;
uint32_t pointSpriteEnable : 1;
diff --git a/src/gallium/drivers/swr/swr_state.cpp b/src/gallium/drivers/swr/swr_state.cpp
index c21e08b4a5a..84c67597c46 100644
--- a/src/gallium/drivers/swr/swr_state.cpp
+++ b/src/gallium/drivers/swr/swr_state.cpp
@@ -24,6 +24,8 @@
// llvm redefines DEBUG
#pragma push_macro("DEBUG")
#undef DEBUG
+
+#include <rasterizer/core/state.h>
#include "JitManager.h"
#pragma pop_macro("DEBUG")
@@ -1198,6 +1200,7 @@ swr_update_derived(struct pipe_context *pipe,
rastState->depthFormat = swr_resource(zb->texture)->swr.format;
rastState->depthClipEnable = rasterizer->depth_clip_near;
+ rastState->clipEnable = rasterizer->depth_clip_near | rasterizer->depth_clip_far;
rastState->clipHalfZ = rasterizer->clip_halfz;
ctx->api.pfnSwrSetRastState(ctx->swrContext, rastState);
@@ -1272,8 +1275,8 @@ swr_update_derived(struct pipe_context *pipe,
/* vertex buffers */
SWR_VERTEX_BUFFER_STATE swrVertexBuffers[PIPE_MAX_ATTRIBS];
for (UINT i = 0; i < ctx->num_vertex_buffers; i++) {
- uint32_t size, pitch, elems, partial_inbounds;
- uint32_t min_vertex_index;
+ uint32_t size = 0, pitch = 0, elems = 0, partial_inbounds = 0;
+ uint32_t min_vertex_index = 0;
const uint8_t *p_data;
struct pipe_vertex_buffer *vb = &ctx->vertex_buffer[i];
More information about the mesa-commit
mailing list