Hi, I started integrating PSO cache into my oculus quest build. I followed this instructions PSO Caching | Unreal Engine Documentation to gather the pso data and build the .stablepc.scv file that I put inside /Build/Android/PipelineCaches. When building the project PSO Cache wouldn’t start compiling shaders until the changes from this thread After migration UE4.22 -> 4.24 PSO Cache loading/running is not working - Mobile Development - Unreal Engine Forums. Right now it compiles the shaders when starting the game and the hitches are gone but some materials aren’t shown at all and some are only shown after some time(This happens only to observed and cached materials). I’m working on a oculust quest 4.25 engine.
Here are the PSO logs from the compilation
LogRHI: Extension eglPresentationTimeANDROID Present
LogRHI: Extension eglGetNextFrameIdANDROID NOT Available
LogRHI: Extension eglGetCompositorTimingANDROID NOT Available
LogRHI: Extension eglGetFrameTimestampsANDROID Present
LogRHI: Extension eglQueryTimestampSupportedANDROID Present
LogRHI: Extension eglGetCompositorTimingSupportedANDROID NOT Available
LogRHI: Extension eglGetFrameTimestampsSupportedANDROID NOT Available
LogRHI: Initializing OpenGL RHI
LogRHI: GL_VENDOR: Qualcomm
LogRHI: GL_RENDERER: Adreno (TM) 540
LogRHI: GL_VERSION: OpenGL ES 3.2 V@0529.0 (GIT@855c739, I56691dee85, 1606625021) (Date:11/28/20)
LogRHI: GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.20
LogRHI: OpenGL Extensions:
LogRHI: GL_OES_EGL_image
LogRHI: GL_OES_EGL_image_external
LogRHI: GL_OES_EGL_sync
LogRHI: GL_OES_vertex_half_float
LogRHI: GL_OES_framebuffer_object
LogRHI: GL_OES_rgb8_rgba8
LogRHI: GL_OES_compressed_ETC1_RGB8_texture
LogRHI: GL_AMD_compressed_ATC_texture
LogRHI: GL_KHR_texture_compression_astc_ldr
LogRHI: GL_KHR_texture_compression_astc_hdr
LogRHI: GL_OES_texture_compression_astc
LogRHI: GL_OES_texture_npot
LogRHI: GL_EXT_texture_filter_anisotropic
LogRHI: GL_EXT_texture_format_BGRA8888
LogRHI: GL_EXT_read_format_bgra
LogRHI: GL_OES_texture_3D
LogRHI: GL_EXT_color_buffer_float
LogRHI: GL_EXT_color_buffer_half_float
LogRHI: GL_QCOM_alpha_test
LogRHI: GL_OES_depth24
LogRHI: GL_OES_packed_depth_stencil
LogRHI: GL_OES_depth_texture
LogRHI: GL_OES_depth_texture_cube_map
LogRHI: GL_EXT_sRGB
LogRHI: GL_OES_texture_float
LogRHI: GL_OES_texture_float_linear
LogRHI: GL_OES_texture_half_float
LogRHI: GL_OES_texture_half_float_linear
LogRHI: GL_EXT_texture_type_2_10_10_10_REV
LogRHI: GL_EXT_texture_sRGB_decode
LogRHI: GL_EXT_texture_format_sRGB_override
LogRHI: GL_OES_element_index_uint
LogRHI: GL_EXT_copy_image
LogRHI: GL_EXT_geometry_shader
LogRHI: GL_EXT_tessellation_shader
LogRHI: GL_OES_texture_stencil8
LogRHI: GL_EXT_shader_io_blocks
LogRHI: GL_OES_shader_image_atomic
LogRHI: GL_OES_sample_variables
LogRHI: GL_EXT_texture_border_clamp
LogRHI: GL_EXT_EGL_image_external_wrap_modes
LogRHI: GL_EXT_multisampled_render_to_texture
LogRHI: GL_EXT_multisampled_render_to_texture2
LogRHI: GL_OES_shader_multisample_interpolation
LogRHI: GL_EXT_texture_cube_map_array
LogRHI: GL_EXT_draw_buffers_indexed
LogRHI: GL_EXT_gpu_shader5
LogRHI: GL_EXT_robustness
LogRHI: GL_EXT_texture_buffer
LogRHI: GL_EXT_shader_framebuffer_fetch
LogRHI: GL_ARM_shader_framebuffer_fetch_depth_stencil
LogRHI: GL_OES_texture_storage_multisample_2d_array
LogRHI: GL_OES_sample_shading
LogRHI: GL_OES_get_program_binary
LogRHI: GL_EXT_debug_label
LogRHI: GL_KHR_blend_equation_advanced
LogRHI: GL_KHR_blend_equation_advanced_coherent
LogRHI: GL_QCOM_tiled_rendering
LogRHI: GL_ANDROID_extension_pack_es31a
LogRHI: GL_EXT_primitive_bounding_box
LogRHI: GL_OES_standard_derivatives
LogRHI: GL_OES_vertex_array_object
LogRHI: GL_EXT_disjoint_timer_query
LogRHI: GL_KHR_debug
LogRHI: GL_EXT_YUV_target
LogRHI: GL_EXT_sRGB_write_control
LogRHI: GL_EXT_texture_norm16
LogRHI: GL_EXT_discard_framebuffer
LogRHI: GL_OES_surfaceless_context
LogRHI: GL_OVR_multiview
LogRHI: GL_OVR_multiview2
LogRHI: GL_EXT_texture_sRGB_R8
LogRHI: GL_KHR_no_error
LogRHI: GL_EXT_debug_marker
LogRHI: GL_OES_EGL_image_external_essl3
LogRHI: GL_OVR_multiview_multisampled_render_to_texture
LogRHI: GL_EXT_buffer_storage
LogRHI: GL_EXT_external_buffer
LogRHI: GL_EXT_blit_framebuffer_params
LogRHI: GL_EXT_clip_cull_distance
LogRHI: GL_EXT_protected_textures
LogRHI: GL_EXT_shader_non_constant_global_initializers
LogRHI: GL_QCOM_texture_foveated
LogRHI: GL_QCOM_shader_framebuffer_fetch_noncoherent
LogRHI: GL_QCOM_shader_framebuffer_fetch_rate
LogRHI: GL_EXT_memory_object
LogRHI: GL_EXT_memory_object_fd
LogRHI: GL_EXT_EGL_image_array
LogRHI: GL_NV_shader_noperspective_interpolation
LogRHI: GL_KHR_robust_buffer_access_behavior
LogRHI: GL_EXT_EGL_image_storage
LogRHI: GL_EXT_blend_func_extended
LogRHI: GL_EXT_clip_control
LogRHI: GL_OES_texture_view
LogRHI: GL_EXT_fragment_invocation_density
LogRHI: GL_QCOM_YUV_texture_gather
LogRHI: GL_MAX_VERTEX_ATTRIBS: 32
LogRHI: GL_MAX_VARYING_VECTORS: 31
LogRHI: GL_MAX_VERTEX_UNIFORM_VECTORS: 256
LogRHI: GL_MAX_FRAGMENT_UNIFORM_VECTORS: 256
LogRHI: GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT: 64
LogRHI: Fragment shader lowp precision: 10
LogRHI: Fragment shader mediump precision: 10
LogRHI: Fragment shader highp precision: 23
LogRHI: Support for 4x MSAA detected
LogRHI: GL_MAX_COMBINED_IMAGE_UNIFORMS: 20
LogRHI: GL_MAX_COMPUTE_IMAGE_UNIFORMS: 8
LogRHI: GL_MAX_FRAGMENT_IMAGE_UNIFORMS: 4
LogRHI: Device supports mobile multi-view.
LogRHI: Enabling Adreno tiling hint.
LogRHI: Image external enabled: ImageExternalESSL300
LogRHI: GL_MAX_TEXTURE_SIZE: 16384
LogRHI: GL_MAX_TEXTURE_BUFFER_SIZE: 134217728
LogRHI: GL_MAX_CUBE_MAP_TEXTURE_SIZE: 16384
LogRHI: GL_MAX_ARRAY_TEXTURE_LAYERS: 2048
LogRHI: GL_MAX_RENDERBUFFER_SIZE: 16384
LogRHI: GL_MAX_TEXTURE_IMAGE_UNITS: 16
LogRHI: GL_MAX_DRAW_BUFFERS: 8
LogRHI: GL_MAX_COLOR_ATTACHMENTS: 1
LogRHI: GL_MAX_SAMPLES: 1
LogRHI: GL_MAX_COLOR_TEXTURE_SAMPLES: 1
LogRHI: GL_MAX_DEPTH_TEXTURE_SAMPLES: 1
LogRHI: GL_MAX_INTEGER_SAMPLES: 1
LogRHI: GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: 96
LogRHI: GL_MAX_VERTEX_ATTRIBS: 32
LogRHI: GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: 16
LogRHI: OpenGL MajorVersion = 3, MinorVersion = 1, ShaderPlatform = GLSL_ES3_1_ANDROID, FeatureLevel = ES3_1
LogRHI: PLATFORM_ANDROID
LogAndroid: Unlocking android HW window during preinit.
LogRHI: Enabling program binary cache as /storage/emulated/0/Android/data/com.MyGame/files/ProgramBinaryCache/GLSL_ES3_1_ANDROID_4AA27985A21F64F1F0882AA14AE350C79E38555F
LogRHI: FOpenGLProgramBinaryCache will be initialized when ShaderPipelineCache opens its file
LogRHI: Texture pool is 500 MB (of 0 MB total graphics mem)
LogShaderLibrary: Display: Using ../../../HMDProject/Content/ShaderArchive-Global-GLSL_ES3_1_ANDROID.ushaderbytecode for material shader code. Total 429 unique shaders.
LogShaderLibrary: Display: Cooked Context: Using Shared Shader Library Global
LogTemp: Warning: Clearing the OS Cache
LogPakFile: New pak file HMDProject/Content/Paks/pakchunk0-Android_ASTC.pak added to pak precacher.
LogSlate: Using FreeType 2.10.0
LogSlate: SlateFontServices - WITH_FREETYPE: 1, WITH_HARFBUZZ: 1
LogShaderLibrary: Display: Using ../../../HMDProject/Content/ShaderArchive-HMDProject-GLSL_ES3_1_ANDROID.ushaderbytecode for material shader code. Total 9971 unique shaders.
LogShaderLibrary: Display: Cooked Context: Using Shared Shader Library HMDProject
LogRHI: Display: Opened pipeline cache after state change and enqueued 0 of 0 tasks for precompile.
LogRHI: Base name for record PSOs is ../../../HMDProject/Saved/CollectedPSOs/++UE4+Partner-Oculus-4.25-CL-0-HMDProject_GLSL_ES3_1_ANDROID_0007939408D8D19FF6DD68FC36F827A6.rec.upipelinecache
LogRHI: FPipelineCacheFile Header Game Version: 0
LogRHI: FPipelineCacheFile Header Engine Data Version: 17
LogRHI: FPipelineCacheFile Header TOC Offset: 11140
LogRHI: FPipelineCacheFile File Size: 14566 Bytes
LogRHI: Opened FPipelineCacheFile: ../../../HMDProject/Content/PipelineCaches/Android/HMDProject_GLSL_ES3_1_ANDROID.stable.upipelinecache (GUID: 00000000000000000000000000000000) with 27 entries.
LogRHI: Scanning Binary program cache, using Shader Pipeline Cache version 9D3604B04A8E711DB91D2580317D541E
LogRHI: JNI Display getRefreshRate=72.000008
LogRHI: Final display timing metrics: DriverRefreshRate=72.0000 DriverRefreshNanos=13888887
LogRHI: AndroidEGL:SwapBuffers Min=0, Max=1, Request=1, ClosestDriver=1, SetDriver=1
LogRHI: Called eglSwapInterval 1
LogRHI: OnShaderScanProgramCacheFile
LogRHI: OnShaderScanProgramCacheFile : Opened /storage/emulated/0/Android/data/com.MyGame/files/ProgramBinaryCache/GLSL_ES3_1_ANDROID_4AA27985A21F64F1F0882AA14AE350C79E38555F.scan
LogRHI: Program Binary cache: Found 27 cached programs, end record found: 1
LogRHI: Display: Opened pipeline cache and enqueued 27 of 27 tasks for precompile with BatchSize 50 and BatchTime 16.000000.