 		sgm::EXECUTE_INOUT_CUDA2CUDA
 	)
 ));
+
+INSTANTIATE_TEST_CASE_P(LibSGM_Test_8, LibSGM, testing::Combine(
+	testing::Values(8, 16),
+	testing::Values(8),
+	testing::Values(64, 128),
+	testing::Values(false),
+	testing::Values(sgm::PathType::SCAN_4PATH, sgm::PathType::SCAN_8PATH),
+	testing::Values(
+		sgm::EXECUTE_INOUT_HOST2HOST,
+		sgm::EXECUTE_INOUT_HOST2CUDA,
+		sgm::EXECUTE_INOUT_CUDA2HOST,
+		sgm::EXECUTE_INOUT_CUDA2CUDA
+	)
+));

		dst = h_dst_.data();
	}

	sgm::StereoSGM sgm(WIDTH, HEIGHT, disparity_size_, input_depth_bits_, output_depth_bits_, inout_type_, {10, 120, 0.95f, false, path_type_});
	sgm.execute(src_left, src_right, dst);

	CudaKernelCheck();
}

INSTANTIATE_TEST_CASE_P(LibSGM_Test, LibSGM, testing::Combine(
	testing::Values(8, 16),
	testing::Values(8, 16),
	testing::Values(64, 128, 256),
	testing::Values(sgm::PathType::SCAN_4PATH, sgm::PathType::SCAN_8PATH),
	testing::Values(
		sgm::EXECUTE_INOUT_HOST2HOST,

	thrust::host_vector<uint8_t>   h_src_left_, h_src_right_, h_dst_;

	virtual void SetUp(){
		std::tie(input_depth_bits_, output_depth_bits_, disparity_size_, subpixel_, path_type_, inout_type_) = GetParam();
		src_size_ = WIDTH * HEIGHT * input_depth_bits_ / 8;
		dst_size_ = WIDTH * HEIGHT * output_depth_bits_ / 8;

