ac/cull: don't read Position.Z if it's not needed for culling
authorMarek Olšák <marek.olsak@amd.com>
Tue, 7 Jan 2020 00:19:40 +0000 (19:19 -0500)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 15 Jan 2020 20:06:20 +0000 (15:06 -0500)
It could be NULL.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
src/amd/llvm/ac_llvm_cull.c

index 9e8409fdbaf4a4f020de6974939b548496b39716..c76d4e1f9373f37a4389a23c61a6d2bd109f23ec 100644 (file)
@@ -153,7 +153,7 @@ static LLVMValueRef cull_bbox(struct ac_llvm_context *ctx,
                LLVMValueRef accepted = initially_accepted;
 
                /* Compute the primitive bounding box for easy culling. */
                LLVMValueRef accepted = initially_accepted;
 
                /* Compute the primitive bounding box for easy culling. */
-               for (unsigned chan = 0; chan < 3; chan++) {
+               for (unsigned chan = 0; chan < (cull_view_near_z || cull_view_far_z ? 3 : 2); chan++) {
                        bbox_min[chan] = ac_build_fmin(ctx, pos[0][chan], pos[1][chan]);
                        bbox_min[chan] = ac_build_fmin(ctx, bbox_min[chan], pos[2][chan]);
 
                        bbox_min[chan] = ac_build_fmin(ctx, pos[0][chan], pos[1][chan]);
                        bbox_min[chan] = ac_build_fmin(ctx, bbox_min[chan], pos[2][chan]);