Skip to content

Commit

Permalink
Expose shader flags, add floating bit
Browse files Browse the repository at this point in the history
  • Loading branch information
jaelpark committed Sep 3, 2019
1 parent ad65b34 commit 13ab07f
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 18 deletions.
2 changes: 1 addition & 1 deletion config/config.py
Expand Up @@ -20,7 +20,7 @@
print("No pulsectl module.");

class ShaderFlag(Enum):
FOCUS_NEXT = 0x2
FOCUS_NEXT = chamfer.shaderFlag.USER_BIT<<0x0

class Key(Enum):
FOCUS_RIGHT = auto()
Expand Down
5 changes: 4 additions & 1 deletion shaders/chamfer.hlsl
@@ -1,6 +1,9 @@

#define FLAGS_FOCUS 0x1
#define FLAGS_FOCUS_NEXT 0x2
#define FLAGS_FLOATING 0x2
#define FLAGS_USER_BIT 0x4

#define FLAGS_FOCUS_NEXT (FLAGS_USER_BIT<<0x0)

[[vk::push_constant]] cbuffer cb{
float2 xy0; //normalized top-left corner location
Expand Down
24 changes: 19 additions & 5 deletions src/compositor.cpp
Expand Up @@ -679,7 +679,10 @@ void CompositorInterface::CreateRenderQueueAppendix(const WManager::Client *pcli
renderObject.pclient = (*m).second;
renderObject.pclientFrame = dynamic_cast<ClientFrame *>((*m).second);
renderObject.pclientFrame->oldShaderFlags = renderObject.pclientFrame->shaderFlags;
renderObject.pclientFrame->shaderFlags = (renderObject.pclient->pcontainer == pfocus?0x1:0)|renderObject.pclientFrame->shaderUserFlags;
renderObject.pclientFrame->shaderFlags =
(renderObject.pclient->pcontainer == pfocus?ClientFrame::SHADER_FLAG_FOCUS:0)
|(renderObject.pclient->pcontainer->flags & WManager::Container::FLAG_FLOATING?ClientFrame::SHADER_FLAG_FLOATING:0)
|renderObject.pclientFrame->shaderUserFlags;
renderQueue.push_back(renderObject);

CreateRenderQueueAppendix((*m).second,pfocus);
Expand All @@ -700,7 +703,9 @@ void CompositorInterface::CreateRenderQueue(const WManager::Container *pcontaine
renderObject.pclientFrame = pclientFrame;
renderObject.pclientFrame->oldShaderFlags = renderObject.pclientFrame->shaderFlags;
renderObject.pclientFrame->shaderFlags =
(pcont == pfocus || pcontainer == pfocus?0x1:0)|renderObject.pclientFrame->shaderUserFlags;
(pcont == pfocus || pcontainer == pfocus?ClientFrame::ClientFrame::SHADER_FLAG_FOCUS:0)
|(renderObject.pclient->pcontainer->flags & WManager::Container::FLAG_FLOATING?ClientFrame::SHADER_FLAG_FLOATING:0) //probably not required here
|renderObject.pclientFrame->shaderUserFlags;
renderQueue.push_back(renderObject);
}
CreateRenderQueue(pcont,pfocus);
Expand Down Expand Up @@ -764,7 +769,10 @@ void CompositorInterface::GenerateCommandBuffers(const WManager::Container *proo
renderObject.pclient = p.second;
renderObject.pclientFrame = dynamic_cast<ClientFrame *>(p.second);
renderObject.pclientFrame->oldShaderFlags = renderObject.pclientFrame->shaderFlags;
renderObject.pclientFrame->shaderFlags = (renderObject.pclient->pcontainer == pfocus?0x1:0)|renderObject.pclientFrame->shaderUserFlags;
renderObject.pclientFrame->shaderFlags =
(renderObject.pclient->pcontainer == pfocus?ClientFrame::SHADER_FLAG_FOCUS:0)
|(renderObject.pclient->pcontainer->flags & WManager::Container::FLAG_FLOATING?ClientFrame::SHADER_FLAG_FLOATING:0)
|renderObject.pclientFrame->shaderUserFlags;
renderQueue.push_back(renderObject);
}

Expand All @@ -783,7 +791,10 @@ void CompositorInterface::GenerateCommandBuffers(const WManager::Container *proo
renderObject.pclient = (*m).second;
renderObject.pclientFrame = dynamic_cast<ClientFrame *>((*m).second);
renderObject.pclientFrame->oldShaderFlags = renderObject.pclientFrame->shaderFlags;
renderObject.pclientFrame->shaderFlags = (renderObject.pclient->pcontainer == pfocus?0x1:0)|renderObject.pclientFrame->shaderUserFlags;
renderObject.pclientFrame->shaderFlags =
(renderObject.pclient->pcontainer == pfocus?ClientFrame::SHADER_FLAG_FOCUS:0)
|(renderObject.pclient->pcontainer->flags & WManager::Container::FLAG_FLOATING?ClientFrame::SHADER_FLAG_FLOATING:0)
|renderObject.pclientFrame->shaderUserFlags;
renderQueue.push_back(renderObject);

CreateRenderQueueAppendix((*m).second,pfocus);
Expand All @@ -796,7 +807,10 @@ void CompositorInterface::GenerateCommandBuffers(const WManager::Container *proo
renderObject.pclient = p.second;
renderObject.pclientFrame = dynamic_cast<ClientFrame *>(p.second);
renderObject.pclientFrame->oldShaderFlags = renderObject.pclientFrame->shaderFlags;
renderObject.pclientFrame->shaderFlags = (renderObject.pclient->pcontainer == pfocus?0x1:0)|renderObject.pclientFrame->shaderUserFlags;
renderObject.pclientFrame->shaderFlags =
(renderObject.pclient->pcontainer == pfocus?ClientFrame::SHADER_FLAG_FOCUS:0)
|(renderObject.pclient->pcontainer->flags & WManager::Container::FLAG_FLOATING?ClientFrame::SHADER_FLAG_FLOATING:0)
|renderObject.pclientFrame->shaderUserFlags;
renderQueue.push_back(renderObject);
}

Expand Down
5 changes: 5 additions & 0 deletions src/compositor.h
Expand Up @@ -48,6 +48,11 @@ friend class CompositorInterface;
virtual ~ClientFrame();
virtual void UpdateContents(const VkCommandBuffer *) = 0;
void AdjustSurface(uint, uint);
enum SHADER_FLAG{
SHADER_FLAG_FOCUS = 0x1,
SHADER_FLAG_FLOATING = 0x2,
SHADER_FLAG_USER_BIT = 0x4
};
protected:
void UpdateDescSets();
Texture *ptexture;
Expand Down
21 changes: 10 additions & 11 deletions src/config.cpp
Expand Up @@ -609,6 +609,10 @@ BOOST_PYTHON_MODULE(chamfer){
.value("NAME",ContainerInterface::PROPERTY_ID_NAME)
.value("CLASS",ContainerInterface::PROPERTY_ID_CLASS);

boost::python::enum_<WManager::Container::LAYOUT>("layout")
.value("VSPLIT",WManager::Container::LAYOUT_VSPLIT)
.value("HSPLIT",WManager::Container::LAYOUT_HSPLIT);

boost::python::class_<ContainerProxy,boost::noncopyable>("Container")
.def("OnSetupContainer",&ContainerInterface::OnSetupContainer)
.def("OnSetupClient",&ContainerInterface::OnSetupClient)
Expand Down Expand Up @@ -875,16 +879,6 @@ BOOST_PYTHON_MODULE(chamfer){
.def_readwrite("floatingMode",&ContainerInterface::floatingMode)
;

/*boost::python::enum_<WManager::Container::ADJACENT>("adjacent")
.value("LEFT",WManager::Container::ADJACENT_LEFT)
.value("RIGHT",WManager::Container::ADJACENT_RIGHT)
.value("UP",WManager::Container::ADJACENT_UP)
.value("DOWN",WManager::Container::ADJACENT_DOWN);*/

boost::python::enum_<WManager::Container::LAYOUT>("layout")
.value("VSPLIT",WManager::Container::LAYOUT_VSPLIT)
.value("HSPLIT",WManager::Container::LAYOUT_HSPLIT);

boost::python::class_<BackendProxy,boost::noncopyable>("Backend")
.def("OnSetupKeys",&BackendInterface::OnSetupKeys)
.def("OnCreateContainer",&BackendInterface::OnCreateContainer)
Expand All @@ -898,6 +892,12 @@ BOOST_PYTHON_MODULE(chamfer){
.def("GrabKeyboard",&BackendInterface::GrabKeyboard)
;
boost::python::def("BindBackend",BackendInterface::Bind);

boost::python::enum_<Compositor::ClientFrame::SHADER_FLAG>("shaderFlag")
.value("FOCUS",Compositor::ClientFrame::SHADER_FLAG_FOCUS)
.value("FLOATING",Compositor::ClientFrame::SHADER_FLAG_FLOATING)
.value("USER_BIT",Compositor::ClientFrame::SHADER_FLAG_USER_BIT);

boost::python::class_<CompositorProxy,boost::noncopyable>("Compositor")
.def_readwrite("deviceIndex",&CompositorInterface::deviceIndex)
.def_readwrite("debugLayers",&CompositorInterface::debugLayers)
Expand Down Expand Up @@ -934,7 +934,6 @@ BOOST_PYTHON_MODULE(chamfer){
},boost::python::default_call_policies(),boost::mpl::vector<void, CompositorInterface &, float>()))
;
boost::python::def("BindCompositor",CompositorInterface::Bind);
//boost::python::def("GetCompositor",CompositorInterface::GetInterface);
}

Loader::Loader(const char *pargv0){
Expand Down

0 comments on commit 13ab07f

Please sign in to comment.