diff options
author | Jan Zielinski <jan.zielinski@intel.com> | 2019-07-23 10:30:47 +0200 |
---|---|---|
committer | Jan Zielinski <jan.zielinski@intel.com> | 2019-07-23 21:55:09 +0200 |
commit | ccc6b4f96b012064f2bc74ec7a3465874b24ef8e (patch) | |
tree | cf8c021fddc137e714ef5eea28404e4602dddd45 /src/gallium/drivers | |
parent | e5b3f0a867bef5cc4880d78d7a63feba6df4872a (diff) |
swr/rasterizer: Adding support for unhandled clipEnable state
Clipping is not correctly handled by the rasterizer - fixing this.
Reviewed-by: Alok Hota <alok.hota@intel.com>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/swr/rasterizer/core/api.cpp | 4 | ||||
-rw-r--r-- | src/gallium/drivers/swr/rasterizer/core/state.h | 1 | ||||
-rw-r--r-- | 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]; |