mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Slightly more elegant error handling
This commit is contained in:
parent
6bd1a43e20
commit
d12f74d49b
3 changed files with 11 additions and 7 deletions
|
@ -422,7 +422,7 @@ void ComputeFragmentShaderID(ShaderID *id_out, uint32_t vertType) {
|
|||
}
|
||||
|
||||
// Missing: Z depth range
|
||||
void GenerateFragmentShader(const ShaderID &id, char *buffer) {
|
||||
bool GenerateFragmentShader(const ShaderID &id, char *buffer) {
|
||||
char *p = buffer;
|
||||
|
||||
// In GLSL ES 3.0, you use "in" variables instead of varying.
|
||||
|
@ -1017,8 +1017,8 @@ void GenerateFragmentShader(const ShaderID &id, char *buffer) {
|
|||
break;
|
||||
|
||||
default:
|
||||
WRITE(p, "ERROR STA");
|
||||
break;
|
||||
ERROR_LOG(G3D, "Bad stencil-to-alpha type, corrupt ID?");
|
||||
return false;
|
||||
}
|
||||
|
||||
LogicOpReplaceType replaceLogicOpType = (LogicOpReplaceType)id.Bits(BIT_REPLACE_LOGIC_OP_TYPE, 2);
|
||||
|
@ -1033,8 +1033,8 @@ void GenerateFragmentShader(const ShaderID &id, char *buffer) {
|
|||
break;
|
||||
|
||||
default:
|
||||
WRITE(p, "ERROR LTA");
|
||||
break;
|
||||
ERROR_LOG(G3D, "Bad logic op type, corrupt ID?");
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef DEBUG_SHADER
|
||||
|
@ -1046,5 +1046,7 @@ void GenerateFragmentShader(const ShaderID &id, char *buffer) {
|
|||
}
|
||||
#endif
|
||||
WRITE(p, "}\n");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
struct ShaderID;
|
||||
|
||||
void ComputeFragmentShaderID(ShaderID *id, uint32_t vertType);
|
||||
void GenerateFragmentShader(const ShaderID &id, char *buffer);
|
||||
bool GenerateFragmentShader(const ShaderID &id, char *buffer);
|
||||
|
||||
enum StencilValueType {
|
||||
STENCIL_VALUE_UNIFORM,
|
||||
|
|
|
@ -839,7 +839,9 @@ LinkedShader *ShaderManager::ApplyFragmentShader(Shader *vs, int prim, u32 vertT
|
|||
Shader *fs;
|
||||
if (fsIter == fsCache_.end()) {
|
||||
// Fragment shader not in cache. Let's compile it.
|
||||
GenerateFragmentShader(FSID, codeBuffer_);
|
||||
if (!GenerateFragmentShader(FSID, codeBuffer_)) {
|
||||
return nullptr;
|
||||
}
|
||||
fs = new Shader(codeBuffer_, GL_FRAGMENT_SHADER, vs->UseHWTransform(), FSID);
|
||||
fsCache_[FSID] = fs;
|
||||
} else {
|
||||
|
|
Loading…
Add table
Reference in a new issue