mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 23:20:08 +01:00
draw: disable depth clipping if depth clamp is enabled
This commit is contained in:
parent
c304869ec0
commit
9ca48de106
3 changed files with 11 additions and 4 deletions
|
|
@ -216,6 +216,7 @@ void draw_set_clip_state( struct draw_context *draw,
|
|||
assert(clip->nr <= PIPE_MAX_CLIP_PLANES);
|
||||
memcpy(&draw->plane[6], clip->ucp, clip->nr * sizeof(clip->ucp[0]));
|
||||
draw->nr_planes = 6 + clip->nr;
|
||||
draw->depth_clamp = clip->depth_clamp;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -249,6 +249,7 @@ struct draw_context
|
|||
*/
|
||||
float plane[12][4];
|
||||
unsigned nr_planes;
|
||||
boolean depth_clamp;
|
||||
|
||||
/* If a prim stage introduces new vertex attributes, they'll be stored here
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -57,7 +57,8 @@ dot4(const float *a, const float *b)
|
|||
}
|
||||
|
||||
static INLINE unsigned
|
||||
compute_clipmask_gl(const float *clip, /*const*/ float plane[][4], unsigned nr)
|
||||
compute_clipmask_gl(const float *clip, /*const*/ float plane[][4], unsigned nr,
|
||||
boolean clip_depth)
|
||||
{
|
||||
unsigned mask = 0x0;
|
||||
unsigned i;
|
||||
|
|
@ -74,8 +75,10 @@ compute_clipmask_gl(const float *clip, /*const*/ float plane[][4], unsigned nr)
|
|||
if ( clip[0] + clip[3] < 0) mask |= (1<<1);
|
||||
if (-clip[1] + clip[3] < 0) mask |= (1<<2);
|
||||
if ( clip[1] + clip[3] < 0) mask |= (1<<3);
|
||||
if ( clip[2] + clip[3] < 0) mask |= (1<<4); /* match mesa clipplane numbering - for now */
|
||||
if (-clip[2] + clip[3] < 0) mask |= (1<<5); /* match mesa clipplane numbering - for now */
|
||||
if (clip_depth) {
|
||||
if ( clip[2] + clip[3] < 0) mask |= (1<<4); /* match mesa clipplane numbering - for now */
|
||||
if (-clip[2] + clip[3] < 0) mask |= (1<<5); /* match mesa clipplane numbering - for now */
|
||||
}
|
||||
|
||||
/* Followed by any remaining ones:
|
||||
*/
|
||||
|
|
@ -120,9 +123,11 @@ static boolean post_vs_cliptest_viewport_gl( struct pt_post_vs *pvs,
|
|||
out->clip[3] = position[3];
|
||||
|
||||
out->vertex_id = 0xffff;
|
||||
/* Disable depth clipping if depth clamping is enabled. */
|
||||
out->clipmask = compute_clipmask_gl(out->clip,
|
||||
pvs->draw->plane,
|
||||
pvs->draw->nr_planes);
|
||||
pvs->draw->nr_planes,
|
||||
!pvs->draw->depth_clamp);
|
||||
clipped += out->clipmask;
|
||||
|
||||
if (out->clipmask == 0)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue