2023-06-28 06:17:06 +00:00
|
|
|
set(TEST_SRC
|
|
|
|
|
hipGLGetDevices.cc
|
2023-06-28 06:19:23 +00:00
|
|
|
hipGraphicsGLRegisterBuffer.cc
|
2023-06-28 06:21:03 +00:00
|
|
|
hipGraphicsGLRegisterImage.cc
|
2023-06-28 06:22:58 +00:00
|
|
|
hipGraphicsMapResources.cc
|
2023-06-28 06:24:12 +00:00
|
|
|
hipGraphicsSubResourceGetMappedArray.cc
|
2023-06-28 06:25:16 +00:00
|
|
|
hipGraphicsResourceGetMappedPointer.cc
|
2023-06-28 06:26:12 +00:00
|
|
|
hipGraphicsUnmapResources.cc
|
2023-06-28 06:27:06 +00:00
|
|
|
hipGraphicsUnregisterResource.cc
|
2023-06-28 06:17:06 +00:00
|
|
|
)
|
|
|
|
|
|
2025-12-02 08:19:07 -08:00
|
|
|
# Find OpenGL with optional EGL support
|
|
|
|
|
find_package(OpenGL COMPONENTS OpenGL OPTIONAL_COMPONENTS EGL)
|
2023-12-20 10:24:27 +00:00
|
|
|
message(STATUS "OpenGL_FOUND: ${OpenGL_FOUND}")
|
2025-12-02 08:19:07 -08:00
|
|
|
|
|
|
|
|
if(NOT OpenGL_FOUND OR NOT TARGET OpenGL::GL)
|
|
|
|
|
message(STATUS "OpenGL not found or OpenGL::GL target unavailable, "
|
|
|
|
|
"OpenGL interop tests not enabled.")
|
2023-12-20 10:24:27 +00:00
|
|
|
return()
|
|
|
|
|
endif()
|
|
|
|
|
|
2025-12-02 08:19:07 -08:00
|
|
|
if (OpenGL_EGL_FOUND)
|
|
|
|
|
message(STATUS "OpenGL::EGL: Found")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Handle GLUT - env vars first, then find_package
|
|
|
|
|
set(USE_ENV_GLUT FALSE)
|
|
|
|
|
if (DEFINED ENV{GLUT_glut_LIBRARY} AND
|
|
|
|
|
DEFINED ENV{GLUT_INCLUDE_DIR})
|
|
|
|
|
if (NOT "$ENV{GLUT_glut_LIBRARY}" STREQUAL "" AND
|
|
|
|
|
NOT "$ENV{GLUT_INCLUDE_DIR}" STREQUAL "")
|
|
|
|
|
if (EXISTS "$ENV{GLUT_glut_LIBRARY}" AND
|
|
|
|
|
EXISTS "$ENV{GLUT_INCLUDE_DIR}")
|
|
|
|
|
set(USE_ENV_GLUT TRUE)
|
|
|
|
|
else()
|
|
|
|
|
message(WARNING "GLUT env vars invalid, using find_package")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if (USE_ENV_GLUT)
|
|
|
|
|
message(STATUS "Using GLUT from environment variables")
|
|
|
|
|
message(STATUS " GLUT_glut_LIBRARY: $ENV{GLUT_glut_LIBRARY}")
|
|
|
|
|
message(STATUS " GLUT_INCLUDE_DIR: $ENV{GLUT_INCLUDE_DIR}")
|
|
|
|
|
|
|
|
|
|
set(GLUT_glut_LIBRARY "$ENV{GLUT_glut_LIBRARY}"
|
|
|
|
|
CACHE FILEPATH "Path to GLUT library")
|
|
|
|
|
set(GLUT_INCLUDE_DIR "$ENV{GLUT_INCLUDE_DIR}"
|
|
|
|
|
CACHE PATH "Path to GLUT include directory")
|
|
|
|
|
|
|
|
|
|
add_library(GLUT::GLUT UNKNOWN IMPORTED)
|
|
|
|
|
set_target_properties(GLUT::GLUT PROPERTIES
|
|
|
|
|
IMPORTED_LOCATION "${GLUT_glut_LIBRARY}"
|
|
|
|
|
INTERFACE_INCLUDE_DIRECTORIES "${GLUT_INCLUDE_DIR}"
|
|
|
|
|
)
|
|
|
|
|
else()
|
|
|
|
|
message(STATUS "Searching for GLUT via find_package...")
|
|
|
|
|
find_package(GLUT)
|
|
|
|
|
if (NOT GLUT_FOUND)
|
|
|
|
|
message(STATUS "GLUT not found, OpenGL interop tests not enabled.")
|
|
|
|
|
return()
|
|
|
|
|
endif()
|
|
|
|
|
message(STATUS "GLUT_FOUND: ${GLUT_FOUND}")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# GLEW is required on Windows for OpenGL extension access
|
|
|
|
|
# On Linux, extensions are available via native headers
|
|
|
|
|
find_package(GLEW)
|
|
|
|
|
if(WIN32 AND NOT GLEW_FOUND)
|
|
|
|
|
message(STATUS "GLEW required on Windows but not found, "
|
|
|
|
|
"GL interop tests not enabled.")
|
2023-12-20 10:24:27 +00:00
|
|
|
return()
|
|
|
|
|
endif()
|
|
|
|
|
|
2025-12-02 08:19:07 -08:00
|
|
|
# Create test executable
|
2023-06-28 06:17:06 +00:00
|
|
|
hip_add_exe_to_target(NAME GLInteropTest
|
|
|
|
|
TEST_SRC ${TEST_SRC}
|
2025-12-03 16:53:17 +00:00
|
|
|
TEST_TARGET_NAME build_tests)
|
2025-12-02 08:19:07 -08:00
|
|
|
|
|
|
|
|
# Link dependencies
|
|
|
|
|
target_link_libraries(GLInteropTest OpenGL::GL GLUT::GLUT)
|
|
|
|
|
|
|
|
|
|
if (OpenGL_EGL_FOUND)
|
|
|
|
|
target_link_libraries(GLInteropTest OpenGL::EGL)
|
|
|
|
|
target_compile_definitions(GLInteropTest PRIVATE USE_EGL)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if (GLEW_FOUND)
|
|
|
|
|
target_link_libraries(GLInteropTest GLEW::GLEW)
|
|
|
|
|
target_compile_definitions(GLInteropTest PRIVATE USE_GLEW)
|
|
|
|
|
endif()
|