mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
wip
This commit is contained in:
parent
92d73e3b03
commit
200c25bcc9
3 changed files with 42 additions and 1 deletions
|
@ -120,3 +120,23 @@ void GLSLShaderCompat::SetupForVulkan() {
|
|||
forceMatrix4x4 = false;
|
||||
coefsFromBuffers = true;
|
||||
}
|
||||
|
||||
|
||||
void GLSLShaderCompat::SetupForD3D11() {
|
||||
fragColor0 = "fragColor0";
|
||||
fragColor1 = "fragColor1";
|
||||
varying_fs = "in";
|
||||
varying_vs = "out";
|
||||
attribute = "in";
|
||||
bitwiseOps = true;
|
||||
framebufferFetchExtension = nullptr;
|
||||
gles = false;
|
||||
glslES30 = true;
|
||||
glslVersionNumber = 450;
|
||||
lastFragData = nullptr;
|
||||
texture = "texture";
|
||||
texelFetch = "texelFetch";
|
||||
d3d11 = true;
|
||||
forceMatrix4x4 = false;
|
||||
coefsFromBuffers = true;
|
||||
}
|
||||
|
|
|
@ -30,6 +30,8 @@ enum ShaderLanguage {
|
|||
GLSL_VULKAN,
|
||||
HLSL_DX9,
|
||||
HLSL_D3D11,
|
||||
|
||||
HLSL_D3D11_TEST, // temporary
|
||||
};
|
||||
|
||||
enum DebugShaderType {
|
||||
|
@ -155,8 +157,10 @@ struct GLSLShaderCompat {
|
|||
bool bitwiseOps;
|
||||
bool forceMatrix4x4;
|
||||
bool coefsFromBuffers;
|
||||
bool d3d11;
|
||||
|
||||
void SetupForVulkan();
|
||||
void SetupForD3D11();
|
||||
};
|
||||
|
||||
// PSP vertex format.
|
||||
|
|
|
@ -40,6 +40,13 @@ bool GenerateFShader(FShaderID id, char *buffer, ShaderLanguage lang, std::strin
|
|||
case ShaderLanguage::GLSL_300:
|
||||
// TODO: Need a device - except that maybe glslang could be used to verify these ....
|
||||
return false;
|
||||
case ShaderLanguage::HLSL_D3D11_TEST:
|
||||
{
|
||||
GLSLShaderCompat compat{};
|
||||
compat.SetupForVulkan();
|
||||
uint64_t uniformMask;
|
||||
return GenerateFragmentShaderGLSL(id, buffer, compat, &uniformMask, errorString);
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -62,6 +69,14 @@ bool GenerateVShader(VShaderID id, char *buffer, ShaderLanguage lang, std::strin
|
|||
uint64_t uniformMask;
|
||||
return GenerateVertexShaderGLSL(id, buffer, compat, &attrMask, &uniformMask, errorString);
|
||||
}
|
||||
case ShaderLanguage::HLSL_D3D11_TEST:
|
||||
{
|
||||
GLSLShaderCompat compat{};
|
||||
compat.SetupForD3D11();
|
||||
uint32_t attrMask;
|
||||
uint64_t uniformMask;
|
||||
return GenerateVertexShaderGLSL(id, buffer, compat, &attrMask, &uniformMask, errorString);
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -70,6 +85,7 @@ bool GenerateVShader(VShaderID id, char *buffer, ShaderLanguage lang, std::strin
|
|||
bool TestCompileShader(const char *buffer, ShaderLanguage lang, bool vertex) {
|
||||
switch (lang) {
|
||||
case ShaderLanguage::HLSL_D3D11:
|
||||
case ShaderLanguage::HLSL_D3D11_TEST:
|
||||
{
|
||||
auto output = CompileShaderToBytecodeD3D11(buffer, strlen(buffer), vertex ? "vs_4_0" : "ps_4_0", 0);
|
||||
return !output.empty();
|
||||
|
@ -128,8 +144,9 @@ bool TestShaderGenerators() {
|
|||
LoadD3DCompilerDynamic();
|
||||
|
||||
ShaderLanguage languages[] = {
|
||||
ShaderLanguage::GLSL_VULKAN,
|
||||
ShaderLanguage::HLSL_D3D11_TEST,
|
||||
ShaderLanguage::HLSL_D3D11,
|
||||
ShaderLanguage::GLSL_VULKAN,
|
||||
ShaderLanguage::GLSL_140,
|
||||
ShaderLanguage::GLSL_300,
|
||||
ShaderLanguage::HLSL_DX9,
|
||||
|
|
Loading…
Add table
Reference in a new issue