/* * Copyright (c) Advanced Micro Devices, Inc., or its affiliates. * * SPDX-License-Identifier: MIT */ #pragma clang diagnostic ignored "-Wunused-parameter" #include #include #if defined(__HIP_PLATFORM_AMD__) || CUDA_VERSION < CUDA_12000 HIP_TEST_CASE(Unit_hipTexRefSetAddress2D_Negative_Parameters) { CHECK_IMAGE_SUPPORT constexpr int width = 256; constexpr int height = 256; hipCtx_t ctx; hipDevice_t device; HIP_CHECK(hipGetDevice(&device)); HIP_CHECK(hipCtxCreate(&ctx, 0, device)); hipTexRef tex_ref = nullptr; hipModule_t module = nullptr; HIP_CHECK(hipModuleLoad(&module, "tex_ref_get_module.code")); HIP_CHECK(hipModuleGetTexRef(&tex_ref, module, "tex")); int size = width * height * sizeof(float); float* h_data = new float[size]; for (int i = 0; i < width * height; ++i) { h_data[i] = static_cast(i); } hipDeviceptr_t d_data; size_t dest_pitch; HIP_CHECK(hipMemAllocPitch(&d_data, &dest_pitch, width * sizeof(float), height, sizeof(float))); HIP_CHECK(hipMemcpy2D((void*)d_data, dest_pitch, h_data, width * sizeof(float), width * sizeof(float), height, hipMemcpyHostToDevice)); HIP_ARRAY_DESCRIPTOR array_desc; array_desc.Format = HIP_AD_FORMAT_FLOAT; array_desc.Height = height; array_desc.Width = width; array_desc.NumChannels = 1; SECTION("Null texture") { #if HT_AMD HIP_CHECK_ERROR(hipTexRefSetAddress2D(nullptr, &array_desc, d_data, dest_pitch), hipErrorInvalidValue); #else HIP_CHECK_ERROR(hipTexRefSetAddress2D(nullptr, &array_desc, d_data, dest_pitch), hipErrorInvalidResourceHandle); #endif } SECTION("Null array descriptor") { HIP_CHECK_ERROR(hipTexRefSetAddress2D(tex_ref, nullptr, d_data, dest_pitch), hipErrorInvalidValue); } free(h_data); HIP_CHECK(hipFree((void*)d_data)); HIP_CHECK(hipModuleUnload(module)); HIP_CHECK(hipCtxDestroy(ctx)); } HIP_TEST_CASE(Unit_hipTexRefSetAddress2D_Positive) { CHECK_IMAGE_SUPPORT constexpr int width = 256; constexpr int height = 256; hipCtx_t ctx; hipDevice_t device; HIP_CHECK(hipGetDevice(&device)); HIP_CHECK(hipCtxCreate(&ctx, 0, device)); hipTexRef tex_ref = nullptr; hipModule_t module = nullptr; HIP_CHECK(hipModuleLoad(&module, "tex_ref_get_module.code")); HIP_CHECK(hipModuleGetTexRef(&tex_ref, module, "tex")); int size = width * height * sizeof(float); float* h_data = new float[size]; for (int i = 0; i < width * height; ++i) { h_data[i] = static_cast(i); } hipDeviceptr_t d_data; size_t dest_pitch; HIP_CHECK(hipMemAllocPitch(&d_data, &dest_pitch, width * sizeof(float), height, sizeof(float))); HIP_CHECK(hipMemcpy2D((void*)d_data, dest_pitch, h_data, width * sizeof(float), width * sizeof(float), height, hipMemcpyHostToDevice)); HIP_ARRAY_DESCRIPTOR array_desc; array_desc.Format = HIP_AD_FORMAT_FLOAT; array_desc.Height = height; array_desc.Width = width; array_desc.NumChannels = 1; HIP_CHECK(hipTexRefSetAddress2D(tex_ref, &array_desc, d_data, dest_pitch)); free(h_data); HIP_CHECK(hipFree((void*)d_data)); HIP_CHECK(hipModuleUnload(module)); HIP_CHECK(hipCtxDestroy(ctx)); } #endif