dolphin/Source/Plugins/Plugin_VideoDX9/Src/VertexShaderCache.h

57 lines
1.1 KiB
C
Raw Normal View History

// Copyright 2013 Dolphin Emulator Project
// Licensed under GPLv2
// Refer to the license.txt file included.
#pragma once
#include "D3DBase.h"
#include <map>
#include <string>
#include "D3DBase.h"
#include "VertexShaderGen.h"
namespace DX9
{
class VertexShaderCache
{
private:
struct VSCacheEntry
{
LPDIRECT3DVERTEXSHADER9 shader;
2011-09-29 20:54:52 +00:00
std::string code;
2011-09-29 20:54:52 +00:00
VSCacheEntry() : shader(NULL) {}
void Destroy()
{
if (shader)
shader->Release();
shader = NULL;
}
};
2013-03-26 22:35:14 +00:00
typedef std::map<VertexShaderUid, VSCacheEntry> VSCache;
static VSCache vshaders;
static const VSCacheEntry *last_entry;
2013-03-26 22:35:14 +00:00
static VertexShaderUid last_uid;
2013-04-29 19:00:39 +00:00
static UidChecker<VertexShaderUid,VertexShaderCode> vertex_uid_checker;
static void Clear();
public:
static void Init();
static void Shutdown();
static bool SetShader(u32 components);
static LPDIRECT3DVERTEXSHADER9 GetSimpleVertexShader(int level);
static LPDIRECT3DVERTEXSHADER9 GetClearVertexShader();
2013-03-26 22:35:14 +00:00
static bool InsertByteCode(const VertexShaderUid &uid, const u8 *bytecode, int bytecodelen, bool activate);
static std::string GetCurrentShaderCode();
};
} // namespace DX9