Enable qualcomm driver bug workaround for all cubemaps

* It seems like the problem isn't related to mips, but to 64x64 dimension faces
  (or smaller). Since it's hard to figure out exactly what the bug is and this
  might break in other scenarios maybe with other texture formats, we fall back
  to enabling the workaround across all cubemaps. This is unfortunate but the
  only way to be reliable.
This commit is contained in:
baldurk
2021-11-08 12:49:07 +00:00
parent 99bbd9e5f0
commit 570266702c
3 changed files with 7 additions and 5 deletions
+1 -1
View File
@@ -804,7 +804,7 @@ void DoVendorChecks(GLPlatform &platform, GLWindowingData context)
}
RDCWARN("Enabling Qualcomm driver hack to avoid reading cubemap mip faces directly", ver);
VendorCheck[VendorCheck_Qualcomm_emulate_cube_reads_mip1] = true;
VendorCheck[VendorCheck_Qualcomm_emulate_cube_reads] = true;
}
if(IsGLES)
+1 -1
View File
@@ -868,7 +868,7 @@ enum VendorCheckEnum
VendorCheck_AMD_copy_compressed_cubemaps,
VendorCheck_AMD_vertex_array_elem_buffer_query,
VendorCheck_Qualcomm_avoid_glCopyImageSubData,
VendorCheck_Qualcomm_emulate_cube_reads_mip1,
VendorCheck_Qualcomm_emulate_cube_reads,
VendorCheck_Count,
};
extern bool VendorCheck[VendorCheck_Count];
+5 -3
View File
@@ -2705,9 +2705,11 @@ void APIENTRY _glGetTexImage(GLenum target, GLint level, const GLenum format, co
depthFormat = true;
}
// Qualcomm drivers seem to barf if we try to read from cubemap faces after X+ for mips.
// X+ works on any mip, and all faces work on the first mip.
if(VendorCheck[VendorCheck_Qualcomm_emulate_cube_reads_mip1] && level > 0)
// Qualcomm drivers seem to barf if we try to read from cubemap faces above X+ for mips 64x64 or
// smaller. In testing X+ works on any mip, and all faces work on larger mips, but since the
// driver seems completely unreliable in this area we enable the workaround blanket for all
// cubemap reads as different formats may break in different ways.
if(VendorCheck[VendorCheck_Qualcomm_emulate_cube_reads])
{
switch(target)
{