LINUX.ORG.RU

Сообщения safocl

 

wxWidgets и cmake теперь не дружат?

Форум — Development

имеется арч, последние пакеты, желание использовать wxWidgets в своем проекте на c++.

`--> pacman -Qs cmake
local/cmake 3.22.2-1
    A cross-platform open-source make system
local/extra-cmake-modules 5.90.0-1 (kf5)
    Extra modules and scripts for CMake


`--> pacman -Qs wx
local/wxgtk-common 3.0.5.1-3
    Common libraries and headers for wxgtk2 and wxgtk3
local/wxgtk3 3.0.5.1-3
    GTK+3 implementation of wxWidgets API for GUI


при добавлении в CmakeLists.txt
find_package(wxWidgets REQUIRED gl core base )
include("${wxWidgets_USE_FILE}")

происходит
`--> cmake ..
module path is
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find wxWidgets (missing: wxWidgets_LIBRARIES
  wxWidgets_INCLUDE_DIRS)
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindwxWidgets.cmake:1025 (find_package_handle_standard_args)
  CMakeLists.txt:16 (find_package)


примечательно, что чуть ранее все работало — накрылся на днях диск на 2Тб — купил ssd, переставил систему, и теперь не собирается то, что собиралось на старой.

дубликат темы

Решение

 , , ,

safocl ()

dbus-daemon сжирает 500 мегабайт оперативки и выше

Форум — General

имеется archlinux, nvidia gtx1650 (495 driver), i3-wm
процесс dbus-daemon с недавних пор (предположительно после последнего апдейта) начал сжирать 500+ мегабайт оперативки.

пакет dbus 1.12.20-1

 , ,

safocl ()

Отказываются создаваться страницы wxNotebook

Форум — Development

имеется arhclinux, wxwidgets, c++ (gcc)
код:
mainwindow.cpp

#include "mainwindow.hpp"

#include <stdexcept>

MainWindow::MainWindow() :
wxFrame( nullptr, wxID_ANY, "WEGA-HPG-cpp-wx" ), mMainPanel( new wxPanel() ),
mTabs( new wxNotebook() ) {
    mMainPanel->SetParent( this );
    mTabs->SetParent( mMainPanel );

    auto panel = new wxPanel();

    mTabs->AddPage( panel, "TAB1" );

    mTabs->Show();
    mMainPanel->Show();
}


mainwindow.hpp
#include <wx/wx.h>
#include <wx/panel.h>
#include <wx/notebook.h>

#include <vector>

class MainWindow : public wxFrame {
public:
    MainWindow();

    ~MainWindow() = default;

private:
    wxPanel *    mMainPanel;
    wxNotebook * mTabs;

    std::vector< wxPanel * > mPanels;
};


main.cpp
#include "ui/mainwindow.hpp"

#include <iostream>
#include <wx/chartype.h>
#include <wx/init.h>
#include <wx/wx.h>

#include <cstdlib>

class HpgApp final : public wxApp {
    bool OnInit() override {
        MainWindow * mainwindow = new MainWindow;
        mainwindow->CreateStatusBar();
        mainwindow->SetStatusText( "HPG status" );
        mainwindow->Show();

        //std::cout << "TEST" << std::endl;

        //SetTopWindow( mainwindow );
        return true;
    }
    //MainWindow mainwindow;
};
//DECLARE_APP( HpgApp )
//IMPLEMENT_APP( HpgApp )
int main( int argc, char ** argv ) {
    [[maybe_unused]] HpgApp * app = new HpgApp;

    wxEntry( argc, argv );
    return EXIT_SUCCESS;
}


при запуске получается
./src/gtk/notebook.cpp(409): assert "m_widget != __null" failed in InsertPage(): invalid notebook
zsh: trace trap (core dumped)  ./src/wega-hpg-cpp-wx


решение: тут и тут

 ,

safocl ()

XCB: bitmap-bit-order в структуре Connection Setup — какой enum значений?

Форум — Development

в спецификации Xorg указано:

bitmap-bit-order: { LeastSignificant, MostSignificant }


однако такого enum я не нашел в XCB.
его и правда нет, либо как то странно называется?

ответ

 ,

safocl ()

Отсутствует расширение Xorg DRI3, однако имеется DRI2.

Форум — General

имеется archlinux, nvidia 470 драйвера (gtx1650), соответственно Xorg сервер.

необходимо расширение DRI3, однако его почему то в списке не имеется

************** Avaible Xorg extensions **************
	[ Generic Event Extension ]
	[ SHAPE ]
	[ MIT-SHM ]
	[ XInputExtension ]
	[ XTEST ]
	[ BIG-REQUESTS ]
	[ SYNC ]
	[ XKEYBOARD ]
	[ XC-MISC ]
	[ SECURITY ]
	[ XFIXES ]
	[ RENDER ]
	[ RANDR ]
	[ XINERAMA ]
	[ Composite ]
	[ DAMAGE ]
	[ MIT-SCREEN-SAVER ]
	[ DOUBLE-BUFFER ]
	[ RECORD ]
	[ DPMS ]
	[ Present ]
	[ X-Resource ]
	[ XVideo ]
	[ GLX ]
	[ XFree86-VidModeExtension ]
	[ XFree86-DGA ]
	[ DRI2 ]
	[ NV-GLX ]
	[ NV-CONTROL ]
	[ XINERAMA ]

имеется dri2 только...

конфигурация Xorg-сервера по расширениям не проводилась. Т.е. секции Modules и Extensions в xorg.conf не определены.

как сделать доступным dri3?

 , ,

safocl ()

Можно ли средствами XCB получить неразорванную картинку root окна?

Форум — Development

имеется необходимость получать неразорванную картинку root окна через XCB для обработки ее в Vulkan API — а то получается, если я даже включаю vsync в Vulkan и начинаю рисовать картинку root на overlay — выводится разорванная картинка — тоесть некоторые ее части остаются от прошлых кадров (тиринг).

п.с. продолжаю делать все тот же композитный менеджер с Vulkan рендерером. — По самому вулкану вроде в контексте данной темы неплохо разобрался — однако все та же проблема — взять нужные графические данные для отрисовки.

и еще вопрос — если overlay постоянно держать видимым, то получается его содержимое захватывается и root окном, из-за чего получается статическая картинка. Но если overlay анмапить и мапить заново — получается небольшое мерцание. Как нормальным путем получать с root окна данные и отрисовывать их на overlay?
Исследовал уже и chamferwm, и picom — но пока ничего по данному моменту проследить не удалось — слишком много фонового кода там — в первом случае вообще полный WM, во втором код на си не особо читабельный как по мне — сложно проследить проделываемую работу по теме.

 , , ,

safocl ()

Nvidia 470.63 + DRI3 = ?

Форум — Development

вроде бы, на сколько мне понимается, nvidia в драйверах версии 470 начала поддержку drm.
и правда — появилось:

`--> ll /dev/dri
итого 0
drwxr-xr-x  2 root root         80 сен  9 07:52 by-path
crw-rw----+ 1 root video  226,   0 сен  9 07:52 card0
crw-rw-rw-  1 root render 226, 128 сен  9 07:52 renderD128


однако запрос
std::string_view dri3ExtensionName { "DRI3" };

auto dri3ExtCoockie = xcb_query_extension(
*mXcbConnect, dri3ExtensionName.size(), dri3ExtensionName.data() );

std::unique_ptr< xcb_query_extension_reply_t > dri3ExtReply {
    xcb_query_extension_reply( *mXcbConnect, dri3ExtCoockie, nullptr )
};
показывает present=0

не реализовано до сих пор? или я что-то делаю не так?

апд.
`--> lsmod|grep nvidia
nvidia_uvm           1200128  0
nvidia_drm             73728  15
nvidia_modeset       1200128  30 nvidia_drm
nvidia              35319808  1371 nvidia_uvm,nvidia_modeset
drm_kms_helper        294912  1 nvidia_drm
drm                   585728  19 drm_kms_helper,nvidia,nvidia_drm

 , , ,

safocl ()

XCB как узнать размер данных pixmap?

Форум — Development

Имеется особая необходимость выяснять размер данных pixmap.
Как это сделать через XCB?

уже достаточно давно брожу по просторам XCB, но не натыкался на возможность узнать размер данных у pixmap-ы.

 , , , ,

safocl ()

Аллокация памяти в Vulkan API с VK_EXT_external_memory_host расширением выводит ErrorOutOfDeviceMemory

Форум — Development

имеется арч, nvidia gtx1650, nvidia-465 drivers, vulkan 1.2.
имеется код, которым я хочу экспортировать картинку из Xorg на GPU через расширение VK_EXT_external_memory_host. Данное расширение поддержано в указанных драйверах. Однако получаю ошибку ErrorOutOfDeviceMemory.

Полный лог выполнения программы.

имеется предположение, что данное поведение получается из-за неправильно выравненной памяти по переданному указателю — данную теорию еще не проверял, но однако почему тогда именно указанная ошибка выводится, вместо, скажем, VK_ERROR_INVALID_EXTERNAL_HANDLE...

и еще — драйвер моей видяхи не предоставляет доступной памяти с нужными memoryTypeIndex и флагом { DeviceLocal }, тоесть есть память которая только { HostVisible | HostCoherent }, ну или с добавлением { HostCached }.

решение такое

 , , , ,

safocl ()

Vulkan Api как получить картинку по dma, если dri3 в Xorg не доступно?

Форум — Development

имеется арч, gtx1650, nvidia-465 driver, xcb, c++
кодирую композитный менеджер для Xorg с использованием рендера на Vulkan API

если копировать xcb_pixmap данные с хоста в ГПУ, то это занимает 95% ЦПУ в среднем от всей проги.

можно ли использовать данные xcb_pixmap из Xorg в Vulkan API без такого лютого оверхеда от копирования?

 , , , ,

safocl ()

DRI3QueryVersion failure — xcb_dri3_query_version_reply возвращает nullptr

Форум — Development

имеется арч, gtx1650, nvidia-465 driver, xcb
следующий код возвращает nullptr — хотя в логе Xorg dri3 расширение инициализируется.
ошибка не отлавливается — ибо всегда возвращается nullptr в err.

спс за ответ

 , , , ,

safocl ()

DRI3PixmapFromBuffer failed — reply return nullptr

Форум — Development

имеется арч, gtx1650, nvidia-465 drivers, vulkan, xcb.
пытаюсь через xcb получить dma buffer для pixmap, но получаю ошибку:

terminate called after throwing an instance of 'std::runtime_error'
  what():  Using Window::getImageDataDri3FD() : xcb_dri3_buffer_from_pixmap_reply() return is nullptr

поскольку xcb_dri3_buffer_from_pixmap_reply() возвращает нулевой поинтер.

все же правильно сделал?

p.s. сделал проверку на ошибку — но она не срабатывает:
xcb_generic_error_t * err {};
auto                  dri3BufferReply =
xcb_dri3_buffer_from_pixmap_reply( *mConnection, coockie, &err );

if ( err )
    throw std::runtime_error(
    "Using Window::getImageDataDri3FD() : ERROR with code is " +
    std::to_string( err->error_code ) );

 , , , ,

safocl ()

Vulkan Api — undefined reference to `vkAcquireXlibDisplayEXT'

Форум — Development

имеется archlinux, nvidia gtx1650, nvidia-465 drivers.
в данных дровах доступно VK_EXT_acquire_xlib_display расширение, однако при вызове vkAcquireXlibDisplayEXT() выдает ошибку undefined reference to `vkAcquireXlibDisplayEXT'
линкую прогу с -lvulkan

не могу понять в чем проблема. — само расширение подключаю

пытаюсь юзать (раскоментирую)

решение тут

 

safocl ()

Vulkan API createSwapchainKHR: ErrorUnknown при создании на display surface

Форум — Development

система: nvidia gtx 1650, archlinux, nvidia-465 drivers.

имеется тестовый код на c++ для создания композитного менеджера.
пробовал уже делать вывод рабочего стола в созданное окно — все отлично.
однако при попытке вывода напрямую на дисплей возникает ошибка создания свапчейна на поверхности дисплея.
использую слои валидации vulkan — но они ничего не извещают.

создание свапчайна делаю так

вызов функции swapchainInit()

создание display surface

подключенные расширения

в результате выдается ошибка:

terminate called after throwing an instance of 'vk::UnknownError'
  what():  vk::Device::createSwapchainKHR: ErrorUnknown 

 , ,

safocl ()

systemd-run не устанавливает ограничения

Форум — Desktop

имеется арч, i3wm, актуальные версии ПО.
делаю по вики — ничего не происходит из того что я бы хотел.
как я делаю:

`--> cat ~/.config/systemd/user/firefox.slice
[Slice]
MemoryHigh=12M
.-(~/wineprefix/gamesDir/Path of Exile)-----------------------------------------(safff@safcomp)-
`--> systemd-run --user --slice=firefox.slice /usr/bin/firefox

но все равно фаерфоксу позволено кушать много.

 ,

safocl ()

При использовании swap оперативная память не заполняется в первую очередь.

Форум — Desktop

имеется арч, ядро 5.10.10-zen1-1-zen, i3wm
подключаю свап из файла, настройки sysctl vm/swappiness=0 — однако при ентом почему то иногда свап не освобождается и не используется в первую очередь оперативная память — и swap начинает заполнять в любом случае почти сразу — даже при заполнении оперативной памяти до 20-30%.

как настроить поведение, что бы swap действительно начинал работать когда мне надо?

 , , ,

safocl ()

C++ как получить путь запущенного приложения?

Форум — Development

использую c++17 c++20
имеется приложение, которое использует ресурсы используя относительные пути — как выяснить реальный путь в файловой системе до самого бинаря внутри кода?

апд
в общем найдено несколько способов:
1. только для систем с procfs — C++ как получить путь запущенного приложения? (комментарий)
2. по идее кроссплатформенный через sdl2 — C++ как получить путь запущенного приложения? (комментарий)
3. использовать метод нахождения используемый в which (определять является ли argv путем, если да то каким — относительным или абсолютным, если нет, то искать название бинарника по путям в env var PATH)

 , ,

safocl ()

i3wm и kbdd равно пичальная автозагрузка

Форум — Desktop

имеется арч, i3wm, kbdd для запоминания переключения языка ввода каждого приложения.
в конфиге i3wm указано

exec kbdd

полный конфиг

однако данный демон kbdd отказывается нормально работать при автозапуске — глючит запоминание языка ввода, но если его рестартануть вручную, то все нормально работает.

в чем траббла??? i3wm как то не в том порядке подгружает модули которые нужны для работы kbdd? хатя как я понимаю ему нужны только запущенные иксы, а они не могут быть не запущенные при старте i3wm...
какое то странное еретичное поведение...

п.с. так было постоянно всегда — просто стеснялся жалиться...)))

 , , ,

safocl ()

Vulkan-HPP ErrorOutOfDateKHR при изменении размера

Форум — Development

имеется такой код
использую Vulkan-HPP, при изменении размера окна начинает сыпаться ErrorOutOfDateKHR — я чего то не делаю того что нужно сделать?

использую XCB либу для доступа к иксам и соответственно VkXCBsurface .
в мейне у меня loop:

for ( auto event = xcb_wait_for_event( xcbConnect );
          event != nullptr;
          event = xcb_wait_for_event( xcbConnect ) ) {
        switch ( event->response_type & ~0x80 ) {
        case XCB_EXPOSE:
            renderer.draw();
            //xcb_flush( xcbConnect );
            break;
        case XCB_KEY_PRESS:
            if ( reinterpret_cast< xcb_key_press_event_t * >( event )
                 ->detail == 24 ){
                xcb_destroy_window(xcbConnect, window);
                xcb_disconnect(xcbConnect);
                std::abort();
            }
        }
        delete event;
    }


я же верно понимаю, что swapchain и vkImages надо инициализировать однажды для вывода закрашенного пространства?
или же надо после каждой draw() и/или изменения размера окна пересоздавать swapchain и vkImages?

если запихнуть создание объекта рендерера прямо перед draw() — то вроде даже будто хоть и криво но работает, однако в один момент выскакивает ошибка инициализации физического устройства, да и ессесна сильно грузит ЦПУ.

в общем наверна тут еще один вопрос сразу же напрашивается — как реагировать внутри рендерера на ресайз окна средствами Vulkan API?

 ,

safocl ()

Vulkan-HPP sType must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER

Форум — Development

делаю тестовый рендерер на вулкане через офф плюсовую обертку vulkan-hpp — встретился с интересными сообщениями от слоя валидации — одна из которых «sType must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER» для структуры vk::ImageMemoryBarrier — хотя там оно должно само подставляться при инициализации, если верить словам разработчиков.

почему ента ошибка возникает?

сам код

лог сообщений слоя валидации

 ,

safocl ()

RSS подписка на новые темы