Integrate PowerVR OpenGL ES samples

Also add some additional Vulkan samples to the 'good' set.

Bug: b/141361933
Change-Id: I32fe2d691ca2fd176a8c470fdb34b25a55840cd6
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/42389
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e64a136..14ca570 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1368,38 +1368,38 @@
 
 if(SWIFTSHADER_BUILD_SAMPLES)
     if(WIN32)
-        add_executable(OGLES2HelloAPI ${HELLO2_DIR}/OGLES2HelloAPI_Windows.cpp)
-        set_target_properties(OGLES2HelloAPI PROPERTIES
+        add_executable(Legacy_OGLES2HelloAPI ${HELLO2_DIR}/OGLES2HelloAPI_Windows.cpp)
+        set_target_properties(Legacy_OGLES2HelloAPI PROPERTIES
             INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
             COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
             COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
             FOLDER "Samples"
         )
-        target_link_libraries(OGLES2HelloAPI libEGL libGLESv2)
-        set_property(TARGET OGLES2HelloAPI APPEND_STRING PROPERTY LINK_FLAGS "/SUBSYSTEM:WINDOWS")
-        set(CMAKE_DEFAULT_STARTUP_PROJECT OGLES2HelloAPI)
+        target_link_libraries(Legacy_OGLES2HelloAPI libEGL libGLESv2)
+        set_property(TARGET Legacy_OGLES2HelloAPI APPEND_STRING PROPERTY LINK_FLAGS "/SUBSYSTEM:WINDOWS")
+        set(CMAKE_DEFAULT_STARTUP_PROJECT Legacy_OGLES2HelloAPI)
     elseif(LINUX)
-        add_executable(OGLES2HelloAPI ${HELLO2_DIR}/OGLES2HelloAPI_LinuxX11.cpp)
-        set_target_properties(OGLES2HelloAPI PROPERTIES
+        add_executable(Legacy_OGLES2HelloAPI ${HELLO2_DIR}/OGLES2HelloAPI_LinuxX11.cpp)
+        set_target_properties(Legacy_OGLES2HelloAPI PROPERTIES
             INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
             COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
             COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
             LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
         )
-        target_link_libraries(OGLES2HelloAPI dl ${X11} libEGL libGLESv2)   # Explicitly link our "lib*" targets, not the platform provided "EGL" and "GLESv2"
+        target_link_libraries(Legacy_OGLES2HelloAPI dl ${X11} libEGL libGLESv2)   # Explicitly link our "lib*" targets, not the platform provided "EGL" and "GLESv2"
     elseif(APPLE)
-        add_executable(OGLES2HelloAPI MACOSX_BUNDLE
+        add_executable(Legacy_OGLES2HelloAPI MACOSX_BUNDLE
             ${HELLO2_DIR}/OGLES2HelloAPI_OSX.mm
             ${HELLO2_DIR}/Build/OSX/en.lproj/MainMenu.xib
         )
-        set_target_properties(OGLES2HelloAPI PROPERTIES
+        set_target_properties(Legacy_OGLES2HelloAPI PROPERTIES
             INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
             COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};-Wno-deprecated-declarations" # 'NSTitledWindowMask', 'NSClosableWindowMask' is deprecated
             COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
             LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
             MACOSX_BUNDLE_INFO_PLIST "${HELLO2_DIR}/Build/OSX/Info.plist"
         )
-        target_link_libraries(OGLES2HelloAPI libEGL libGLESv2 ${OS_LIBS} ${SWIFTSHADER_LIBS})
+        target_link_libraries(Legacy_OGLES2HelloAPI libEGL libGLESv2 ${OS_LIBS})
         set_source_files_properties(${HELLO2_DIR}/Build/OSX/en.lproj/MainMenu.xib PROPERTIES
             MACOSX_PACKAGE_LOCATION "Resources"
         )
@@ -1557,40 +1557,75 @@
             POST_BUILD
             COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:vk_swiftshader> ${CMAKE_BINARY_DIR}/bin/${VULKAN_API_LIBRARY_NAME}
         )
+        add_custom_command(
+            TARGET libGLESv2
+            POST_BUILD
+            COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> ${CMAKE_BINARY_DIR}/bin/$<TARGET_FILE_NAME:libGLESv2>
+        )
+        add_custom_command(
+            TARGET libEGL
+            POST_BUILD
+            COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> ${CMAKE_BINARY_DIR}/bin/$<TARGET_FILE_NAME:libEGL>
+        )
     endif()
 
     # Samples known to work well
     set(PVR_VULKAN_TARGET_GOOD
         VulkanBumpmap
+        VulkanExampleUI
+        VulkanGaussianBlur
         VulkanGlass
         VulkanGnomeHorde
         VulkanHelloAPI
         VulkanImageBasedLighting
+        VulkanIntroducingPVRUtils
         VulkanMultiSampling
+        VulkanNavigation2D
+        VulkanParticleSystem
         VulkanSkinning
     )
 
+    set(PVR_GLES_TARGET_GOOD
+        OpenGLESHelloAPI
+        OpenGLESIntroducingPVRUtils
+        OpenGLESNavigation2D
+    )
+
     set(PVR_VULKAN_TARGET_OTHER
         VulkanDeferredShading
         VulkanDeferredShadingPFX
-        VulkanExampleUI
         VulkanGameOfLife
-        VulkanGaussianBlur
         VulkanIBLMapsGenerator
         VulkanIMGTextureFilterCubic
         VulkanIntroducingPVRShell
-        VulkanIntroducingPVRUtils
         VulkanIntroducingPVRVk
         VulkanIntroducingUIRenderer
         VulkanMultithreading
-        VulkanNavigation2D
         VulkanNavigation3D
-        VulkanParticleSystem
         VulkanPostProcessing
         VulkanPVRScopeExample
         VulkanPVRScopeRemote
     )
 
+    set(PVR_GLES_TARGET_OTHER
+        OpenGLESDeferredShading
+        OpenGLESGaussianBlur
+        OpenGLESImageBasedLighting
+        OpenGLESIMGFramebufferDownsample
+        OpenGLESIMGTextureFilterCubic
+        OpenGLESIntroducingPVRCamera
+        OpenGLESIntroducingPVRShell
+        OpenGLESIntroducingUIRenderer
+        OpenGLESMultiviewVR
+        OpenGLESNavigation3D
+        OpenGLESOpenCLExample
+        OpenGLESParticleSystem
+        OpenGLESPostProcessing
+        OpenGLESPVRScopeExample
+        OpenGLESPVRScopeRemote
+        OpenGLESSkinning
+    )
+
     set(PVR_TARGET_OTHER
         glslang
         glslangValidator
@@ -1598,25 +1633,6 @@
         OGLCompiler
         OSDependent
         OpenCLMatrixMultiplication
-        OpenGLESDeferredShading
-        OpenGLESGaussianBlur
-        OpenGLESHelloAPI
-        OpenGLESImageBasedLighting
-        OpenGLESIMGFramebufferDownsample
-        OpenGLESIMGTextureFilterCubic
-        OpenGLESIntroducingPVRCamera
-        OpenGLESIntroducingPVRShell
-        OpenGLESIntroducingPVRUtils
-        OpenGLESIntroducingUIRenderer
-        OpenGLESMultiviewVR
-        OpenGLESNavigation2D
-        OpenGLESNavigation3D
-        OpenGLESOpenCLExample
-        OpenGLESParticleSystem
-        OpenGLESPostProcessing
-        OpenGLESPVRScopeExample
-        OpenGLESPVRScopeRemote
-        OpenGLESSkinning
         pugixml
         PVRAssets
         PVRCamera
@@ -1637,15 +1653,25 @@
         ${PVR_VULKAN_TARGET_OTHER}
     )
 
+    set(PVR_GLES_TARGET
+        ${PVR_GLES_TARGET_GOOD}
+        ${PVR_GLES_TARGET_OTHER}
+    )
+
     foreach(pvr_target ${PVR_VULKAN_TARGET})
         add_dependencies(${pvr_target} vk_swiftshader)
     endforeach()
 
-    foreach(pvr_target ${PVR_VULKAN_TARGET_GOOD})
+    foreach(pvr_target ${PVR_GLES_TARGET})
+        add_dependencies(${pvr_target} libGLESv2)
+        add_dependencies(${pvr_target} libEGL)
+    endforeach()
+
+    foreach(pvr_target ${PVR_VULKAN_TARGET_GOOD} ${PVR_GLES_TARGET_GOOD})
         set_target_properties(${pvr_target} PROPERTIES FOLDER Samples)
     endforeach()
 
-    foreach(pvr_target ${PVR_TARGET_OTHER} ${PVR_VULKAN_TARGET_OTHER})
+    foreach(pvr_target ${PVR_TARGET_OTHER} ${PVR_VULKAN_TARGET_OTHER} ${PVR_GLES_TARGET_OTHER})
         set_target_properties(${pvr_target} PROPERTIES FOLDER Samples/PowerVR-Build)
     endforeach()
 endif()
\ No newline at end of file