mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
More renaming. Fix shader view for Vulkan
This commit is contained in:
parent
82a6c42e17
commit
b39b74e602
13 changed files with 40 additions and 42 deletions
|
@ -29,7 +29,7 @@ enum DebugShaderType {
|
|||
SHADER_TYPE_GEOMETRY = 2,
|
||||
SHADER_TYPE_VERTEXLOADER = 3, // Not really a shader, but might as well re-use this mechanism
|
||||
SHADER_TYPE_PIPELINE = 4, // Vulkan and DX12 combines a bunch of state into pipeline objects. Might as well make them inspectable.
|
||||
SHADER_TYPE_DEPAL = 5,
|
||||
SHADER_TYPE_TEXTURE = 5,
|
||||
SHADER_TYPE_SAMPLER = 6, // Not really a shader either. Need to rename this enum...
|
||||
};
|
||||
|
||||
|
|
|
@ -124,11 +124,11 @@ TextureCacheCommon::TextureCacheCommon(Draw::DrawContext *draw)
|
|||
|
||||
replacer_.Init();
|
||||
|
||||
depalShaderCache_ = new TextureShaderCache(draw);
|
||||
textureShaderCache_ = new TextureShaderCache(draw);
|
||||
}
|
||||
|
||||
TextureCacheCommon::~TextureCacheCommon() {
|
||||
delete depalShaderCache_;
|
||||
delete textureShaderCache_;
|
||||
|
||||
FreeAlignedMemory(clutBufConverted_);
|
||||
FreeAlignedMemory(clutBufRaw_);
|
||||
|
@ -1860,7 +1860,7 @@ bool CanDepalettize(GETextureFormat texFormat, GEBufferFormat bufferFormat) {
|
|||
}
|
||||
|
||||
void TextureCacheCommon::ApplyTextureFramebuffer(VirtualFramebuffer *framebuffer, GETextureFormat texFormat, RasterChannel channel) {
|
||||
TextureShader *depalShader = nullptr;
|
||||
TextureShader *textureShader = nullptr;
|
||||
uint32_t clutMode = gstate.clutformat & 0xFFFFFF;
|
||||
|
||||
bool depth = channel == RASTER_DEPTH;
|
||||
|
@ -1886,7 +1886,7 @@ void TextureCacheCommon::ApplyTextureFramebuffer(VirtualFramebuffer *framebuffer
|
|||
const GEPaletteFormat clutFormat = gstate.getClutPaletteFormat();
|
||||
|
||||
// Very icky conflation here of native and thin3d rendering. This will need careful work per backend in BindAsClutTexture.
|
||||
Draw::Texture *clutTexture = depalShaderCache_->GetClutTexture(clutFormat, clutHash_, clutBufRaw_);
|
||||
Draw::Texture *clutTexture = textureShaderCache_->GetClutTexture(clutFormat, clutHash_, clutBufRaw_);
|
||||
BindAsClutTexture(clutTexture);
|
||||
|
||||
framebufferManager_->BindFramebufferAsColorTexture(0, framebuffer, BINDFBCOLOR_MAY_COPY_WITH_UV | BINDFBCOLOR_APPLY_TEX_OFFSET);
|
||||
|
@ -1913,13 +1913,13 @@ void TextureCacheCommon::ApplyTextureFramebuffer(VirtualFramebuffer *framebuffer
|
|||
return;
|
||||
}
|
||||
|
||||
depalShader = depalShaderCache_->GetDepalettizeShader(clutMode, texFormat, depth ? GE_FORMAT_DEPTH16 : framebuffer->drawnFormat);
|
||||
textureShader = textureShaderCache_->GetDepalettizeShader(clutMode, texFormat, depth ? GE_FORMAT_DEPTH16 : framebuffer->drawnFormat);
|
||||
gstate_c.SetUseShaderDepal(false);
|
||||
}
|
||||
|
||||
if (depalShader) {
|
||||
if (textureShader) {
|
||||
const GEPaletteFormat clutFormat = gstate.getClutPaletteFormat();
|
||||
Draw::Texture *clutTexture = depalShaderCache_->GetClutTexture(clutFormat, clutHash_, clutBufRaw_);
|
||||
Draw::Texture *clutTexture = textureShaderCache_->GetClutTexture(clutFormat, clutHash_, clutBufRaw_);
|
||||
Draw::Framebuffer *depalFBO = framebufferManager_->GetTempFBO(TempFBO::DEPAL, framebuffer->renderWidth, framebuffer->renderHeight);
|
||||
draw_->BindTexture(0, nullptr);
|
||||
draw_->BindTexture(1, nullptr);
|
||||
|
@ -1931,11 +1931,11 @@ void TextureCacheCommon::ApplyTextureFramebuffer(VirtualFramebuffer *framebuffer
|
|||
|
||||
draw_->BindFramebufferAsTexture(framebuffer->fbo, 0, depth ? Draw::FB_DEPTH_BIT : Draw::FB_COLOR_BIT, 0);
|
||||
draw_->BindTexture(1, clutTexture);
|
||||
Draw::SamplerState *nearest = depalShaderCache_->GetSampler();
|
||||
Draw::SamplerState *nearest = textureShaderCache_->GetSampler();
|
||||
draw_->BindSamplerStates(0, 1, &nearest);
|
||||
draw_->BindSamplerStates(1, 1, &nearest);
|
||||
|
||||
depalShaderCache_->ApplyShader(depalShader,
|
||||
textureShaderCache_->ApplyShader(textureShader,
|
||||
framebuffer->bufferWidth, framebuffer->bufferHeight, framebuffer->renderWidth, framebuffer->renderHeight,
|
||||
gstate_c.vertBounds, gstate_c.curTextureXOffset, gstate_c.curTextureYOffset);
|
||||
|
||||
|
@ -1970,7 +1970,7 @@ void TextureCacheCommon::ApplyTextureFramebuffer(VirtualFramebuffer *framebuffer
|
|||
}
|
||||
|
||||
void TextureCacheCommon::Clear(bool delete_them) {
|
||||
depalShaderCache_->Clear();
|
||||
textureShaderCache_->Clear();
|
||||
|
||||
ForgetLastTexture();
|
||||
for (TexCache::iterator iter = cache_.begin(); iter != cache_.end(); ++iter) {
|
||||
|
@ -2412,5 +2412,5 @@ CheckAlphaResult TextureCacheCommon::CheckCLUTAlpha(const uint8_t *pixelData, GE
|
|||
}
|
||||
|
||||
void TextureCacheCommon::StartFrame() {
|
||||
depalShaderCache_->Decimate();
|
||||
textureShaderCache_->Decimate();
|
||||
}
|
||||
|
|
|
@ -291,7 +291,7 @@ public:
|
|||
void InvalidateAll(GPUInvalidationType type);
|
||||
void ClearNextFrame();
|
||||
|
||||
TextureShaderCache *GetDepalShaderCache() { return depalShaderCache_; }
|
||||
TextureShaderCache *GetTextureShaderCache() { return textureShaderCache_; }
|
||||
|
||||
virtual void ForgetLastTexture() = 0;
|
||||
virtual void InvalidateLastTexture() = 0;
|
||||
|
@ -403,7 +403,7 @@ protected:
|
|||
TextureReplacer replacer_;
|
||||
TextureScalerCommon scaler_;
|
||||
FramebufferManagerCommon *framebufferManager_;
|
||||
TextureShaderCache *depalShaderCache_;
|
||||
TextureShaderCache *textureShaderCache_;
|
||||
ShaderManagerCommon *shaderManager_;
|
||||
|
||||
bool clearCacheNextFrame_ = false;
|
||||
|
|
|
@ -63,7 +63,7 @@ Draw::Texture *TextureShaderCache::GetClutTexture(GEPaletteFormat clutFormat, co
|
|||
|
||||
int texturePixels = clutFormat == GE_CMODE_32BIT_ABGR8888 ? 256 : 512;
|
||||
|
||||
DepalTexture *tex = new DepalTexture();
|
||||
ClutTexture *tex = new ClutTexture();
|
||||
|
||||
Draw::TextureDesc desc{};
|
||||
desc.width = texturePixels;
|
||||
|
@ -250,7 +250,6 @@ std::string TextureShaderCache::DebugGetShaderString(std::string idstr, DebugSha
|
|||
}
|
||||
}
|
||||
|
||||
// TODO: Merge with DepalShaderCache?
|
||||
void TextureShaderCache::ApplyShader(TextureShader *shader, float bufferW, float bufferH, int renderW, int renderH, const KnownVertexBounds &bounds, u32 uoff, u32 voff) {
|
||||
Draw2DVertex verts[4] = {
|
||||
{-1, -1, 0, 0 },
|
||||
|
|
|
@ -35,7 +35,7 @@ public:
|
|||
std::string code;
|
||||
};
|
||||
|
||||
class DepalTexture {
|
||||
class ClutTexture {
|
||||
public:
|
||||
Draw::Texture *texture;
|
||||
int lastFrame;
|
||||
|
@ -71,5 +71,5 @@ private:
|
|||
Draw::SamplerState *nearestSampler_ = nullptr;
|
||||
|
||||
std::map<u32, TextureShader *> depalCache_;
|
||||
std::map<u32, DepalTexture *> texCache_;
|
||||
std::map<u32, ClutTexture *> texCache_;
|
||||
};
|
||||
|
|
|
@ -332,8 +332,8 @@ std::vector<std::string> GPU_D3D11::DebugGetShaderIDs(DebugShaderType type) {
|
|||
switch (type) {
|
||||
case SHADER_TYPE_VERTEXLOADER:
|
||||
return drawEngine_.DebugGetVertexLoaderIDs();
|
||||
case SHADER_TYPE_DEPAL:
|
||||
return textureCache_->GetDepalShaderCache()->DebugGetShaderIDs(type);
|
||||
case SHADER_TYPE_TEXTURE:
|
||||
return textureCache_->GetTextureShaderCache()->DebugGetShaderIDs(type);
|
||||
default:
|
||||
return shaderManagerD3D11_->DebugGetShaderIDs(type);
|
||||
}
|
||||
|
@ -343,8 +343,8 @@ std::string GPU_D3D11::DebugGetShaderString(std::string id, DebugShaderType type
|
|||
switch (type) {
|
||||
case SHADER_TYPE_VERTEXLOADER:
|
||||
return drawEngine_.DebugGetVertexLoaderString(id, stringType);
|
||||
case SHADER_TYPE_DEPAL:
|
||||
return textureCache_->GetDepalShaderCache()->DebugGetShaderString(id, type, stringType);
|
||||
case SHADER_TYPE_TEXTURE:
|
||||
return textureCache_->GetTextureShaderCache()->DebugGetShaderString(id, type, stringType);
|
||||
default:
|
||||
return shaderManagerD3D11_->DebugGetShaderString(id, type, stringType);
|
||||
}
|
||||
|
|
|
@ -375,8 +375,8 @@ std::vector<std::string> GPU_DX9::DebugGetShaderIDs(DebugShaderType type) {
|
|||
switch (type) {
|
||||
case SHADER_TYPE_VERTEXLOADER:
|
||||
return drawEngine_.DebugGetVertexLoaderIDs();
|
||||
case SHADER_TYPE_DEPAL:
|
||||
return textureCache_->GetDepalShaderCache()->DebugGetShaderIDs(type);
|
||||
case SHADER_TYPE_TEXTURE:
|
||||
return textureCache_->GetTextureShaderCache()->DebugGetShaderIDs(type);
|
||||
default:
|
||||
return shaderManagerDX9_->DebugGetShaderIDs(type);
|
||||
}
|
||||
|
@ -386,8 +386,8 @@ std::string GPU_DX9::DebugGetShaderString(std::string id, DebugShaderType type,
|
|||
switch (type) {
|
||||
case SHADER_TYPE_VERTEXLOADER:
|
||||
return drawEngine_.DebugGetVertexLoaderString(id, stringType);
|
||||
case SHADER_TYPE_DEPAL:
|
||||
return textureCache_->GetDepalShaderCache()->DebugGetShaderString(id, type, stringType);
|
||||
case SHADER_TYPE_TEXTURE:
|
||||
return textureCache_->GetTextureShaderCache()->DebugGetShaderString(id, type, stringType);
|
||||
default:
|
||||
return shaderManagerDX9_->DebugGetShaderString(id, type, stringType);
|
||||
}
|
||||
|
|
|
@ -453,8 +453,8 @@ std::vector<std::string> GPU_GLES::DebugGetShaderIDs(DebugShaderType type) {
|
|||
switch (type) {
|
||||
case SHADER_TYPE_VERTEXLOADER:
|
||||
return drawEngine_.DebugGetVertexLoaderIDs();
|
||||
case SHADER_TYPE_DEPAL:
|
||||
return textureCache_->GetDepalShaderCache()->DebugGetShaderIDs(type);
|
||||
case SHADER_TYPE_TEXTURE:
|
||||
return textureCache_->GetTextureShaderCache()->DebugGetShaderIDs(type);
|
||||
default:
|
||||
return shaderManagerGL_->DebugGetShaderIDs(type);
|
||||
}
|
||||
|
@ -464,8 +464,8 @@ std::string GPU_GLES::DebugGetShaderString(std::string id, DebugShaderType type,
|
|||
switch (type) {
|
||||
case SHADER_TYPE_VERTEXLOADER:
|
||||
return drawEngine_.DebugGetVertexLoaderString(id, stringType);
|
||||
case SHADER_TYPE_DEPAL:
|
||||
return textureCache_->GetDepalShaderCache()->DebugGetShaderString(id, type, stringType);
|
||||
case SHADER_TYPE_TEXTURE:
|
||||
return textureCache_->GetTextureShaderCache()->DebugGetShaderString(id, type, stringType);
|
||||
default:
|
||||
return shaderManagerGL_->DebugGetShaderString(id, type, stringType);
|
||||
}
|
||||
|
|
|
@ -430,7 +430,7 @@ bool TextureCacheGLES::GetCurrentTextureDebug(GPUDebugBuffer &buffer, int level)
|
|||
}
|
||||
|
||||
void TextureCacheGLES::DeviceLost() {
|
||||
depalShaderCache_->DeviceLost();
|
||||
textureShaderCache_->DeviceLost();
|
||||
Clear(false);
|
||||
draw_ = nullptr;
|
||||
render_ = nullptr;
|
||||
|
@ -439,5 +439,5 @@ void TextureCacheGLES::DeviceLost() {
|
|||
void TextureCacheGLES::DeviceRestore(Draw::DrawContext *draw) {
|
||||
draw_ = draw;
|
||||
render_ = (GLRenderManager *)draw_->GetNativeObject(Draw::NativeObject::RENDER_MANAGER);
|
||||
depalShaderCache_->DeviceRestore(draw);
|
||||
textureShaderCache_->DeviceRestore(draw);
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ public:
|
|||
|
||||
void SetFramebufferManager(FramebufferManagerGLES *fbManager);
|
||||
void SetDepalShaderCache(TextureShaderCache *dpCache) {
|
||||
depalShaderCache_ = dpCache;
|
||||
textureShaderCache_ = dpCache;
|
||||
}
|
||||
void SetDrawEngine(DrawEngineGLES *td) {
|
||||
drawEngine_ = td;
|
||||
|
|
|
@ -604,9 +604,8 @@ std::vector<std::string> GPU_Vulkan::DebugGetShaderIDs(DebugShaderType type) {
|
|||
return drawEngine_.DebugGetVertexLoaderIDs();
|
||||
} else if (type == SHADER_TYPE_PIPELINE) {
|
||||
return pipelineManager_->DebugGetObjectIDs(type);
|
||||
} else if (type == SHADER_TYPE_DEPAL) {
|
||||
///...
|
||||
return std::vector<std::string>();
|
||||
} else if (type == SHADER_TYPE_TEXTURE) {
|
||||
return textureCache_->GetTextureShaderCache()->DebugGetShaderIDs(type);
|
||||
} else if (type == SHADER_TYPE_VERTEX || type == SHADER_TYPE_FRAGMENT) {
|
||||
return shaderManagerVulkan_->DebugGetShaderIDs(type);
|
||||
} else if (type == SHADER_TYPE_SAMPLER) {
|
||||
|
@ -621,8 +620,8 @@ std::string GPU_Vulkan::DebugGetShaderString(std::string id, DebugShaderType typ
|
|||
return drawEngine_.DebugGetVertexLoaderString(id, stringType);
|
||||
} else if (type == SHADER_TYPE_PIPELINE) {
|
||||
return pipelineManager_->DebugGetObjectString(id, type, stringType);
|
||||
} else if (type == SHADER_TYPE_DEPAL) {
|
||||
return "";
|
||||
} else if (type == SHADER_TYPE_TEXTURE) {
|
||||
return textureCache_->GetTextureShaderCache()->DebugGetShaderString(id, type, stringType);
|
||||
} else if (type == SHADER_TYPE_SAMPLER) {
|
||||
return textureCacheVulkan_->DebugGetSamplerString(id, stringType);
|
||||
} else if (type == SHADER_TYPE_VERTEX || type == SHADER_TYPE_FRAGMENT) {
|
||||
|
|
|
@ -200,7 +200,7 @@ void TextureCacheVulkan::SetFramebufferManager(FramebufferManagerVulkan *fbManag
|
|||
}
|
||||
|
||||
void TextureCacheVulkan::DeviceLost() {
|
||||
depalShaderCache_->DeviceLost();
|
||||
textureShaderCache_->DeviceLost();
|
||||
|
||||
VulkanContext *vulkan = draw_ ? (VulkanContext *)draw_->GetNativeObject(Draw::NativeObject::CONTEXT) : nullptr;
|
||||
|
||||
|
@ -227,7 +227,7 @@ void TextureCacheVulkan::DeviceRestore(Draw::DrawContext *draw) {
|
|||
_assert_(!allocator_);
|
||||
|
||||
samplerCache_.DeviceRestore(vulkan);
|
||||
depalShaderCache_->DeviceRestore(draw);
|
||||
textureShaderCache_->DeviceRestore(draw);
|
||||
|
||||
VkSamplerCreateInfo samp{ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO };
|
||||
samp.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT;
|
||||
|
@ -320,7 +320,7 @@ void TextureCacheVulkan::StartFrame() {
|
|||
TextureCacheCommon::StartFrame();
|
||||
|
||||
InvalidateLastTexture();
|
||||
depalShaderCache_->Decimate();
|
||||
textureShaderCache_->Decimate();
|
||||
|
||||
timesInvalidatedAllThisFrame_ = 0;
|
||||
texelsScaledThisFrame_ = 0;
|
||||
|
|
|
@ -1151,7 +1151,7 @@ struct { DebugShaderType type; const char *name; } shaderTypes[] = {
|
|||
// { SHADER_TYPE_GEOMETRY, "Geometry" },
|
||||
{ SHADER_TYPE_VERTEXLOADER, "VertexLoader" },
|
||||
{ SHADER_TYPE_PIPELINE, "Pipeline" },
|
||||
{ SHADER_TYPE_DEPAL, "Depal" },
|
||||
{ SHADER_TYPE_TEXTURE, "Texture" },
|
||||
{ SHADER_TYPE_SAMPLER, "Sampler" },
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue