mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-04 22:19:02 +00:00
RSX : inline fragment naming as vertex shader
This commit is contained in:
parent
ac75b62f4d
commit
fffadb975b
9 changed files with 85 additions and 108 deletions
|
|
@ -168,24 +168,28 @@ struct GLFragmentDecompilerThread : public ThreadBase
|
|||
/** Storage for an Fragment Program in the process of of recompilation.
|
||||
* This class calls OpenGL functions and should only be used from the RSX/Graphics thread.
|
||||
*/
|
||||
class GLShaderProgram
|
||||
class GLFragmentProgram
|
||||
{
|
||||
public:
|
||||
GLShaderProgram();
|
||||
~GLShaderProgram();
|
||||
GLFragmentProgram();
|
||||
~GLFragmentProgram();
|
||||
|
||||
GLParamArray parr;
|
||||
u32 id;
|
||||
std::string shader;
|
||||
|
||||
/**
|
||||
* Decompile a fragment shader located in the PS3's Memory. This function operates synchronously.
|
||||
* @param prog RSXShaderProgram specifying the location and size of the shader in memory
|
||||
*/
|
||||
void Decompile(RSXShaderProgram& prog);
|
||||
void Decompile(RSXFragmentProgram& prog);
|
||||
|
||||
/**
|
||||
* Asynchronously decompile a fragment shader located in the PS3's Memory.
|
||||
* When this function is called you must call Wait() before GetShaderText() will return valid data.
|
||||
* @param prog RSXShaderProgram specifying the location and size of the shader in memory
|
||||
*/
|
||||
void DecompileAsync(RSXShaderProgram& prog);
|
||||
void DecompileAsync(RSXFragmentProgram& prog);
|
||||
|
||||
/** Wait for the decompiler task to complete decompilation. */
|
||||
void Wait();
|
||||
|
|
@ -193,37 +197,10 @@ public:
|
|||
/** Compile the decompiled fragment shader into a format we can use with OpenGL. */
|
||||
void Compile();
|
||||
|
||||
/** Get the source text for this shader */
|
||||
inline const std::string& GetShaderText() const { return m_shader; }
|
||||
|
||||
/**
|
||||
* Set the source text for this shader
|
||||
* @param shaderText supplied shader text
|
||||
*/
|
||||
inline void SetShaderText(const std::string& shaderText) { m_shader = shaderText; }
|
||||
|
||||
/** Get the OpenGL id this shader is bound to */
|
||||
inline u32 GetId() const { return m_id; }
|
||||
|
||||
/**
|
||||
* Set the OpenGL id this shader is bound to
|
||||
* @param id supplied id
|
||||
*/
|
||||
inline void SetId(const u32 id) { m_id = id; }
|
||||
|
||||
private:
|
||||
/** Threaded fragment shader decompiler responsible for decompiling this program */
|
||||
GLFragmentDecompilerThread* m_decompiler_thread;
|
||||
|
||||
/** Shader parameter storage */
|
||||
GLParamArray m_parr;
|
||||
|
||||
/** Text of our decompiler shader */
|
||||
std::string m_shader;
|
||||
|
||||
/** OpenGL id this shader is bound to */
|
||||
u32 m_id;
|
||||
|
||||
/** Deletes the shader and any stored information */
|
||||
void Delete();
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue