mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
VK/D3D11 early prep
This commit is contained in:
parent
f1c96c056d
commit
948e2284fd
2 changed files with 98 additions and 10 deletions
|
@ -39,6 +39,23 @@ public:
|
|||
Pipeline *CreateGraphicsPipeline(const PipelineDesc &desc) override;
|
||||
Texture *CreateTexture(const TextureDesc &desc) override;
|
||||
ShaderModule *CreateShaderModule(ShaderStage stage, ShaderLanguage language, const uint8_t *data, size_t dataSize) override;
|
||||
Framebuffer *fbo_create(const FramebufferDesc &desc) override;
|
||||
|
||||
void fbo_copy_image(Framebuffer *src, int level, int x, int y, int z, Framebuffer *dst, int dstLevel, int dstX, int dstY, int dstZ, int width, int height, int depth) override;
|
||||
bool fbo_blit(Framebuffer *src, int srcX1, int srcY1, int srcX2, int srcY2, Framebuffer *dst, int dstX1, int dstY1, int dstX2, int dstY2, int channelBits, FBBlitFilter filter) override;
|
||||
|
||||
int fbo_preferred_z_bitdepth() override;
|
||||
|
||||
// These functions should be self explanatory.
|
||||
void fbo_bind_as_render_target(Framebuffer *fbo) override;
|
||||
// color must be 0, for now.
|
||||
void fbo_bind_as_texture(Framebuffer *fbo, int binding, FBChannel channelBit, int attachment) override;
|
||||
void fbo_bind_for_read(Framebuffer *fbo) override;
|
||||
|
||||
void fbo_bind_backbuffer_as_render_target() override;
|
||||
uintptr_t fbo_get_api_texture(Framebuffer *fbo, int channelBit, int attachment) override;
|
||||
|
||||
void fbo_get_dimensions(Framebuffer *fbo, int *w, int *h) override;
|
||||
|
||||
void BindTextures(int start, int count, Texture **textures) override;
|
||||
void BindSamplerStates(int start, int count, SamplerState **states) override;
|
||||
|
@ -526,4 +543,40 @@ DrawContext *T3DCreateD3D11Context(ID3D11Device *device, ID3D11DeviceContext *co
|
|||
return nullptr; // new D3D11DrawContext(device, context);
|
||||
}
|
||||
|
||||
|
||||
// A D3D11Framebuffer is a D3D11Framebuffer plus all the textures it owns.
|
||||
class D3D11Framebuffer : public Framebuffer {
|
||||
public:
|
||||
int width;
|
||||
int height;
|
||||
};
|
||||
|
||||
Framebuffer *D3D11DrawContext::fbo_create(const FramebufferDesc &desc) {
|
||||
D3D11Framebuffer *fb = new D3D11Framebuffer();
|
||||
fb->width = desc.width;
|
||||
fb->height = desc.height;
|
||||
|
||||
return fb;
|
||||
}
|
||||
|
||||
void D3D11DrawContext::fbo_copy_image(Framebuffer *src, int level, int x, int y, int z, Framebuffer *dst, int dstLevel, int dstX, int dstY, int dstZ, int width, int height, int depth) {}
|
||||
bool D3D11DrawContext::fbo_blit(Framebuffer *src, int srcX1, int srcY1, int srcX2, int srcY2, Framebuffer *dst, int dstX1, int dstY1, int dstX2, int dstY2, int channelBits, FBBlitFilter filter) { return true; }
|
||||
|
||||
int D3D11DrawContext::fbo_preferred_z_bitdepth() { return 24; }
|
||||
|
||||
// These functions should be self explanatory.
|
||||
void D3D11DrawContext::fbo_bind_as_render_target(Framebuffer *fbo) {}
|
||||
// color must be 0, for now.
|
||||
void D3D11DrawContext::fbo_bind_as_texture(Framebuffer *fbo, int binding, FBChannel channelBit, int attachment) {}
|
||||
void D3D11DrawContext::fbo_bind_for_read(Framebuffer *fbo) {}
|
||||
|
||||
void D3D11DrawContext::fbo_bind_backbuffer_as_render_target() {}
|
||||
uintptr_t D3D11DrawContext::fbo_get_api_texture(Framebuffer *fbo, int channelBit, int attachment) { return 0; }
|
||||
|
||||
void D3D11DrawContext::fbo_get_dimensions(Framebuffer *fbo, int *w, int *h) {
|
||||
D3D11Framebuffer *fb = (D3D11Framebuffer *)fbo;
|
||||
*w = fb->width;
|
||||
*h = fb->height;
|
||||
}
|
||||
|
||||
} // namespace Draw
|
|
@ -367,23 +367,23 @@ public:
|
|||
|
||||
Texture *CreateTexture(const TextureDesc &desc) override;
|
||||
Buffer *CreateBuffer(size_t size, uint32_t usageFlags) override;
|
||||
Framebuffer *fbo_create(const FramebufferDesc &desc) override { return nullptr; }
|
||||
Framebuffer *fbo_create(const FramebufferDesc &desc) override;
|
||||
|
||||
void fbo_copy_image(Framebuffer *src, int level, int x, int y, int z, Framebuffer *dst, int dstLevel, int dstX, int dstY, int dstZ, int width, int height, int depth) override {}
|
||||
bool fbo_blit(Framebuffer *src, int srcX1, int srcY1, int srcX2, int srcY2, Framebuffer *dst, int dstX1, int dstY1, int dstX2, int dstY2, int channelBits, FBBlitFilter filter) override { return true; }
|
||||
void fbo_copy_image(Framebuffer *src, int level, int x, int y, int z, Framebuffer *dst, int dstLevel, int dstX, int dstY, int dstZ, int width, int height, int depth) override;
|
||||
bool fbo_blit(Framebuffer *src, int srcX1, int srcY1, int srcX2, int srcY2, Framebuffer *dst, int dstX1, int dstY1, int dstX2, int dstY2, int channelBits, FBBlitFilter filter) override;
|
||||
|
||||
int fbo_preferred_z_bitdepth() override { return 24; }
|
||||
int fbo_preferred_z_bitdepth() override;
|
||||
|
||||
// These functions should be self explanatory.
|
||||
void fbo_bind_as_render_target(Framebuffer *fbo) override {}
|
||||
void fbo_bind_as_render_target(Framebuffer *fbo) override;
|
||||
// color must be 0, for now.
|
||||
void fbo_bind_as_texture(Framebuffer *fbo, int binding, FBChannel channelBit, int attachment) override {}
|
||||
void fbo_bind_for_read(Framebuffer *fbo) override {}
|
||||
void fbo_bind_as_texture(Framebuffer *fbo, int binding, FBChannel channelBit, int attachment) override;
|
||||
void fbo_bind_for_read(Framebuffer *fbo) override;
|
||||
|
||||
void fbo_bind_backbuffer_as_render_target() override {}
|
||||
uintptr_t fbo_get_api_texture(Framebuffer *fbo, int channelBit, int attachment) override { return 0; }
|
||||
void fbo_bind_backbuffer_as_render_target() override;
|
||||
uintptr_t fbo_get_api_texture(Framebuffer *fbo, int channelBit, int attachment) override;
|
||||
|
||||
void fbo_get_dimensions(Framebuffer *fbo, int *w, int *h) override {}
|
||||
void fbo_get_dimensions(Framebuffer *fbo, int *w, int *h) override;
|
||||
|
||||
void SetScissorRect(int left, int top, int width, int height) override;
|
||||
void SetViewports(int count, Viewport *viewports) override;
|
||||
|
@ -1272,4 +1272,39 @@ uint32_t VKContext::GetDataFormatSupport(DataFormat fmt) const {
|
|||
}
|
||||
}
|
||||
|
||||
// A VKFramebuffer is a VkFramebuffer plus all the textures it owns.
|
||||
class VKFramebuffer : public Framebuffer {
|
||||
public:
|
||||
int width;
|
||||
int height;
|
||||
};
|
||||
|
||||
Framebuffer *VKContext::fbo_create(const FramebufferDesc &desc) {
|
||||
VKFramebuffer *fb = new VKFramebuffer();
|
||||
fb->width = desc.width;
|
||||
fb->height = desc.height;
|
||||
|
||||
return fb;
|
||||
}
|
||||
|
||||
void VKContext::fbo_copy_image(Framebuffer *src, int level, int x, int y, int z, Framebuffer *dst, int dstLevel, int dstX, int dstY, int dstZ, int width, int height, int depth) {}
|
||||
bool VKContext::fbo_blit(Framebuffer *src, int srcX1, int srcY1, int srcX2, int srcY2, Framebuffer *dst, int dstX1, int dstY1, int dstX2, int dstY2, int channelBits, FBBlitFilter filter) { return true; }
|
||||
|
||||
int VKContext::fbo_preferred_z_bitdepth() { return 24; }
|
||||
|
||||
// These functions should be self explanatory.
|
||||
void VKContext::fbo_bind_as_render_target(Framebuffer *fbo) {}
|
||||
// color must be 0, for now.
|
||||
void VKContext::fbo_bind_as_texture(Framebuffer *fbo, int binding, FBChannel channelBit, int attachment) {}
|
||||
void VKContext::fbo_bind_for_read(Framebuffer *fbo) {}
|
||||
|
||||
void VKContext::fbo_bind_backbuffer_as_render_target() {}
|
||||
uintptr_t VKContext::fbo_get_api_texture(Framebuffer *fbo, int channelBit, int attachment) { return 0; }
|
||||
|
||||
void VKContext::fbo_get_dimensions(Framebuffer *fbo, int *w, int *h) {
|
||||
VKFramebuffer *fb = (VKFramebuffer *)fbo;
|
||||
*w = fb->width;
|
||||
*h = fb->height;
|
||||
}
|
||||
|
||||
} // namespace Draw
|
Loading…
Add table
Reference in a new issue