[Android] Missed a few things for PowerVR544MP3 'support.' It doesn't actually get any video output on it just like Tegra 4.

This commit is contained in:
Ryan Houdek 2013-10-06 21:51:41 -05:00
parent a40daac5b1
commit 26c38648ec
6 changed files with 17 additions and 7 deletions

View File

@ -39,6 +39,7 @@ namespace DriverDetails
{VENDOR_MESA, DRIVER_NOUVEAU, BUG_BROKENHACKEDBUFFER, -1.0, -1.0, true},
{VENDOR_ATI, DRIVER_ATI, BUG_BROKENPINNEDMEMORY, -1.0, -1.0, true},
{VENDOR_TEGRA, DRIVER_NVIDIA, BUG_ISTEGRA, -1.0, -1.0, true},
{VENDOR_IMGTEC, DRIVER_IMGTEC, BUG_ISPOWERVR, -1.0, -1.0, true},
};
std::map<Bug, BugInfo> m_bugs;

View File

@ -122,6 +122,13 @@ namespace DriverDetails
// Tegra 4 hardware limitations don't allow it to support OpenGL ES 3
// This is fixed in Tegra 5
BUG_ISTEGRA,
// Bug: Running on a PowerVR5 device
// Affected devices: PowerVR54x
// Started Version: 540
// Ended Version: 6xxx
// PowerVR 5 hardware limitations don't allow it to support OpenGL ES 3
// This is fixed in PowerVR6
BUG_ISPOWERVR,
};
// Initializes our internal vendor, device family, and driver version

View File

@ -658,12 +658,12 @@ static inline void GeneratePixelShader(T& out, DSTALPHA_MODE dstAlphaMode, API_T
if (dstAlphaMode == DSTALPHA_ALPHA_PASS)
{
out.SetConstantsUsed(C_ALPHA, C_ALPHA);
out.Write("\tocol0 = float4(prev.rgb, " I_ALPHA"[0].a);\n");
out.Write("\tgl_FragColor = float4(prev.rgb, " I_ALPHA"[0].a);\n");
}
else
{
WriteFog<T>(out, uid_data);
out.Write("\tocol0 = prev;\n");
out.Write("\tgl_FragColor = prev;\n");
}
// Use dual-source color blending to perform dst alpha in a single pass
@ -674,7 +674,7 @@ static inline void GeneratePixelShader(T& out, DSTALPHA_MODE dstAlphaMode, API_T
// Colors will be blended against the alpha from ocol1 and
// the alpha from ocol0 will be written to the framebuffer.
out.Write("\tocol1 = prev;\n");
out.Write("\tocol0.a = " I_ALPHA"[0].a;\n");
out.Write("\tgl_FragColor.a = " I_ALPHA"[0].a;\n");
}
out.Write("}\n");

View File

@ -576,8 +576,8 @@ void ProgramShaderCache::CreateHeader ( void )
, v==GLSLES2 ? "#define out " : ""
, v==GLSLES2 ? "#define ocol0 gl_FragColor" : ""
, v==GLSLES2 ? "#define ocol1 gl_FragColor" : ""
, v==GLSLES2 ? "#extension GL_NV_uniform_buffer_object : enable" : ""
, v==GLSLES2 ? "#extension GL_NV_fragdepth : enable" : ""
, DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA) ? "#extension GL_NV_uniform_buffer_object : enable" : ""
, DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA) ? "#extension GL_NV_fragdepth : enable" : ""
, v==GLSLES2 ? "" : "out vec4 name;"
);
}

View File

@ -388,7 +388,7 @@ Renderer::Renderer()
g_ogl_config.bSupportCoverageMSAA = false; // XXX: GLES3 spec has MSAA
g_ogl_config.bSupportSampleShading = false;
g_ogl_config.bSupportOGL31 = false;
if (DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA))
if (DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA) || DriverDetails::HasBug(DriverDetails::BUG_ISPOWERVR))
g_ogl_config.eSupportedGLSLVersion = GLSLES2;
else
g_ogl_config.eSupportedGLSLVersion = GLSLES3;

View File

@ -33,7 +33,9 @@ StreamBuffer::StreamBuffer(u32 type, size_t size, StreamType uploadType)
g_Config.bHackedBufferUpload = false;
}
if(!g_ogl_config.bSupportsGLBaseVertex && (m_uploadtype & BUFFERDATA) && !DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA))
if(!g_ogl_config.bSupportsGLBaseVertex && (m_uploadtype & BUFFERDATA)
&& !DriverDetails::HasBug(DriverDetails::BUG_ISPOWERVR)
&& !DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA))
m_uploadtype = BUFFERDATA;
else if(!g_ogl_config.bSupportsGLBaseVertex && (m_uploadtype & BUFFERSUBDATA))
m_uploadtype = BUFFERSUBDATA;