- add 3rd party vulkan dependencies
- add stubs for a vulkan hw renderer backend - add RAII wrappers for vulkan object types - add builder classes to isolate vulkan boilerplate code - add a swap chain class
This commit is contained in:
parent
32e65ff11d
commit
c6b29846d0
133 changed files with 107089 additions and 2 deletions
163
src/rendering/vulkan/system/vk_framebuffer.cpp
Normal file
163
src/rendering/vulkan/system/vk_framebuffer.cpp
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright(C) 2010-2016 Christoph Oelckers
|
||||
// All rights reserved.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Lesser General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public License
|
||||
// along with this program. If not, see http://www.gnu.org/licenses/
|
||||
//
|
||||
//--------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "volk/volk.h"
|
||||
|
||||
#include "v_video.h"
|
||||
#include "m_png.h"
|
||||
#include "templates.h"
|
||||
#include "r_videoscale.h"
|
||||
#include "actor.h"
|
||||
|
||||
#include "hwrenderer/utility/hw_clock.h"
|
||||
#include "hwrenderer/utility/hw_vrmodes.h"
|
||||
|
||||
#include "vk_framebuffer.h"
|
||||
#include "vulkan/textures/vk_samplers.h"
|
||||
|
||||
EXTERN_CVAR(Bool, vid_vsync)
|
||||
EXTERN_CVAR(Bool, r_drawvoxels)
|
||||
EXTERN_CVAR(Int, gl_tonemap)
|
||||
|
||||
VulkanFrameBuffer::VulkanFrameBuffer(void *hMonitor, bool fullscreen, VulkanDevice *dev) :
|
||||
Super(hMonitor, fullscreen)
|
||||
{
|
||||
//screen = this; // temporary hack to make the tutorial code work.
|
||||
|
||||
device = dev;
|
||||
mSamplerManager = new VkSamplerManager(device);
|
||||
SetViewportRects(nullptr);
|
||||
}
|
||||
|
||||
VulkanFrameBuffer::~VulkanFrameBuffer()
|
||||
{
|
||||
delete mSamplerManager;
|
||||
}
|
||||
|
||||
void VulkanFrameBuffer::InitializeState()
|
||||
{
|
||||
}
|
||||
|
||||
void VulkanFrameBuffer::Update()
|
||||
{
|
||||
twoD.Reset();
|
||||
Flush3D.Reset();
|
||||
|
||||
DrawRateStuff();
|
||||
Flush3D.Clock();
|
||||
//vulkantest_tick();
|
||||
Flush3D.Unclock();
|
||||
|
||||
Swap();
|
||||
CheckBench();
|
||||
|
||||
int initialWidth = GetClientWidth();
|
||||
int initialHeight = GetClientHeight();
|
||||
int clientWidth = ViewportScaledWidth(initialWidth, initialHeight);
|
||||
int clientHeight = ViewportScaledHeight(initialWidth, initialHeight);
|
||||
if (clientWidth > 0 && clientHeight > 0 && (GetWidth() != clientWidth || GetHeight() != clientHeight))
|
||||
{
|
||||
SetVirtualSize(clientWidth, clientHeight);
|
||||
V_OutputResized(clientWidth, clientHeight);
|
||||
//GLRenderer->mVBO->OutputResized(clientWidth, clientHeight);
|
||||
}
|
||||
}
|
||||
|
||||
void VulkanFrameBuffer::WriteSavePic(player_t *player, FileWriter *file, int width, int height)
|
||||
{
|
||||
if (!V_IsHardwareRenderer())
|
||||
Super::WriteSavePic(player, file, width, height);
|
||||
}
|
||||
|
||||
sector_t *VulkanFrameBuffer::RenderView(player_t *player)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
uint32_t VulkanFrameBuffer::GetCaps()
|
||||
{
|
||||
if (!V_IsHardwareRenderer())
|
||||
return Super::GetCaps();
|
||||
|
||||
// describe our basic feature set
|
||||
ActorRenderFeatureFlags FlagSet = RFF_FLATSPRITES | RFF_MODELS | RFF_SLOPE3DFLOORS |
|
||||
RFF_TILTPITCH | RFF_ROLLSPRITES | RFF_POLYGONAL | RFF_MATSHADER | RFF_POSTSHADER | RFF_BRIGHTMAP;
|
||||
if (r_drawvoxels)
|
||||
FlagSet |= RFF_VOXELS;
|
||||
|
||||
if (gl_tonemap != 5) // not running palette tonemap shader
|
||||
FlagSet |= RFF_TRUECOLOR;
|
||||
|
||||
return (uint32_t)FlagSet;
|
||||
}
|
||||
|
||||
void VulkanFrameBuffer::Swap()
|
||||
{
|
||||
//vulkantest_present();
|
||||
}
|
||||
|
||||
void VulkanFrameBuffer::SetVSync(bool vsync)
|
||||
{
|
||||
}
|
||||
|
||||
void VulkanFrameBuffer::CleanForRestart()
|
||||
{
|
||||
}
|
||||
|
||||
FModelRenderer *VulkanFrameBuffer::CreateModelRenderer(int mli)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
IDataBuffer *VulkanFrameBuffer::CreateDataBuffer(int bindingpoint, bool ssbo)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
IShaderProgram *VulkanFrameBuffer::CreateShaderProgram()
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void VulkanFrameBuffer::UnbindTexUnit(int no)
|
||||
{
|
||||
}
|
||||
|
||||
void VulkanFrameBuffer::TextureFilterChanged()
|
||||
{
|
||||
}
|
||||
|
||||
void VulkanFrameBuffer::BlurScene(float amount)
|
||||
{
|
||||
}
|
||||
|
||||
void VulkanFrameBuffer::UpdatePalette()
|
||||
{
|
||||
}
|
||||
|
||||
void VulkanFrameBuffer::BeginFrame()
|
||||
{
|
||||
}
|
||||
|
||||
void VulkanFrameBuffer::Draw2D()
|
||||
{
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue