本文整理汇总了C++中device函数的典型用法代码示例。如果您正苦于以下问题:C++ device函数的具体用法?C++ device怎么用?C++ device使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了device函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: device
std::string VulkanBase::getWindowTitle() {
std::string device(deviceProperties.deviceName);
std::string windowTitle;
windowTitle = title + " - " + device + " - " + std::to_string(frameCounter) + " fps";
return windowTitle;
}
开发者ID:Alexandcoats,项目名称:vulkan-terrain,代码行数:6,代码来源:VulkanBase.cpp
示例2: device
void diskiing_device::device_start()
{
m_rom = device().machine().root_device().memregion(this->subtag(DISKII_ROM_REGION).c_str())->base();
}
开发者ID:MoochMcGee,项目名称:mame,代码行数:4,代码来源:a2diskiing.cpp
示例3: device
void dio16_98603b_device::device_reset()
{
m_rom = device().machine().root_device().memregion(this->subtag(HP98603B_ROM_REGION).c_str())->base();
m_dio->install_memory(0x100000, 0x1fffff, read16_delegate(FUNC(dio16_98603b_device::rom_r), this),
write16_delegate(FUNC(dio16_98603b_device::rom_w), this));
}
开发者ID:RafTacker,项目名称:mame,代码行数:6,代码来源:hp98603b.cpp
示例4: qCDebug
bool SharePlugin::receivePackage(const NetworkPackage& np)
{
/*
//TODO: Write a test like this
if (np.type() == PACKAGE_TYPE_PING) {
qCDebug(KDECONNECT_PLUGIN_SHARE) << "sending file" << (QDesktopServices::storageLocation(QDesktopServices::HomeLocation) + "/.bashrc");
NetworkPackage out(PACKAGE_TYPE_SHARE_REQUEST);
out.set("filename", mDestinationDir + "itworks.txt");
AutoClosingQFile* file = new AutoClosingQFile(QDesktopServices::storageLocation(QDesktopServices::HomeLocation) + "/.bashrc"); //Test file to transfer
out.setPayload(file, file->size());
device()->sendPackage(out);
return true;
}
*/
qCDebug(KDECONNECT_PLUGIN_SHARE) << "File transfer";
if (np.hasPayload()) {
//qCDebug(KDECONNECT_PLUGIN_SHARE) << "receiving file";
const QString filename = np.get<QString>(QStringLiteral("filename"), QString::number(QDateTime::currentMSecsSinceEpoch()));
const QUrl dir = destinationDir().adjusted(QUrl::StripTrailingSlash);
QUrl destination(dir.toString() + '/' + filename);
if (destination.isLocalFile() && QFile::exists(destination.toLocalFile())) {
destination = QUrl(dir.toString() + '/' + KIO::suggestName(dir, filename));
}
FileTransferJob* job = np.createPayloadTransferJob(destination);
job->setOriginName(device()->name() + ": " + filename);
connect(job, &KJob::result, this, &SharePlugin::finished);
KIO::getJobTracker()->registerJob(job);
job->start();
} else if (np.has(QStringLiteral("text"))) {
QString text = np.get<QString>(QStringLiteral("text"));
if (!QStandardPaths::findExecutable(QStringLiteral("kate")).isEmpty()) {
QProcess* proc = new QProcess();
connect(proc, SIGNAL(finished(int)), proc, SLOT(deleteLater()));
proc->start(QStringLiteral("kate"), QStringList(QStringLiteral("--stdin")));
proc->write(text.toUtf8());
proc->closeWriteChannel();
} else {
QTemporaryFile tmpFile;
tmpFile.setAutoRemove(false);
tmpFile.open();
tmpFile.write(text.toUtf8());
tmpFile.close();
const QUrl url = QUrl::fromLocalFile(tmpFile.fileName());
Q_EMIT shareReceived(url);
QDesktopServices::openUrl(url);
}
} else if (np.has(QStringLiteral("url"))) {
QUrl url = QUrl::fromEncoded(np.get<QByteArray>(QStringLiteral("url")));
QDesktopServices::openUrl(url);
Q_EMIT shareReceived(url);
} else {
qCDebug(KDECONNECT_PLUGIN_SHARE) << "Error: Nothing attached!";
}
return true;
}
开发者ID:KDE,项目名称:kdeconnect-kde,代码行数:67,代码来源:shareplugin.cpp
示例5: main
int main()
{
//
// Create a domain from file
//
viennamini::MeshTriangular2DType mesh;
viennamini::SegmentationTriangular2DType segments(mesh);
viennamini::StorageType storage;
try
{
viennagrid::io::netgen_reader my_reader;
// my_reader(mesh, segments, "../external/ViennaDeviceCollection/nin2d/nin2d.mesh");
my_reader(mesh, segments, "/home/weinbub/git/ViennaMini/external/ViennaDeviceCollection/nin2d/nin2d.mesh");
}
catch (...)
{
std::cerr << "File-Reader failed. Aborting program..." << std::endl;
return EXIT_FAILURE;
}
//
// scale to nanometer
//
viennagrid::scale(mesh, 1e-9);
//
// Prepare material library
//
viennamini::MatLibPugixmlType matlib;
matlib.load("/home/weinbub/git/ViennaMini/external/ViennaMaterials/database/materials.xml");
//
// Create a device and a config object
//
viennamini::DeviceTriangular2DType device(mesh, segments, storage);
viennamini::config config;
//
// Prepare device, i.e., assign doping and segment roles,
// e.g., oxide, semiconductor, contact
//
prepare(device);
//
// Assign contact values
//
prepare_boundary_conditions(config);
//
// Set simulation parameters
//
config.temperature() = 300;
config.damping() = 1.0;
config.linear_breaktol() = 1.0E-13;
config.linear_iterations() = 700;
config.nonlinear_iterations() = 100;
config.nonlinear_breaktol() = 1.0E-3;
config.initial_guess_smoothing_iterations() = 4;
//
// Create a simulator object
//
viennamini::SimulatorTriangular2DType sim(device, matlib, config);
//
// Run the simulation
//
sim();
// Write results to vtk files
sim.write_result("nin2d");
std::cout << "********************************************" << std::endl;
std::cout << "* NIN2D simulation finished successfully! *" << std::endl;
std::cout << "********************************************" << std::endl;
return EXIT_SUCCESS;
}
开发者ID:rollingstone,项目名称:viennamos-dev,代码行数:79,代码来源:nin2d.cpp
示例6: EXPECT
void Event::reset() { EXPECT(vkResetEvent(device(), handle()) == VK_SUCCESS); }
开发者ID:AdamRLukaitis,项目名称:VulkanSamples,代码行数:1,代码来源:vktestbinding.cpp
示例7: main
int
main(void)
{
//float a = 23456.0f;
float a = 3.f;
// test the poclu's half conversion functions
printf("through conversion: %.0f\n",
poclu_cl_half_to_float(poclu_float_to_cl_half(42.0f)));
try {
std::vector<cl::Platform> platformList;
// Pick platform
cl::Platform::get(&platformList);
// Pick first platform
cl_context_properties cprops[] = {
CL_CONTEXT_PLATFORM, (cl_context_properties)(platformList[0])(), 0};
cl::Context context(CL_DEVICE_TYPE_GPU, cprops);
// Query the set of devices attched to the context
std::vector<cl::Device> devices = context.getInfo<CL_CONTEXT_DEVICES>();
assert (devices.size() == 1);
cl::Device device = devices.at(0);
assert (strncmp(device.getInfo<CL_DEVICE_NAME>().c_str(), "ttasim", 6)==0 );
a = poclu_bswap_cl_float (device(), a);
// Create and program from source
cl::Program::Sources sources(1, std::make_pair(kernelSourceCode, 0));
cl::Program program(context, sources);
// Build program
program.build(devices);
// Create kernel object
cl::Kernel kernel(program, "test_kernel");
// Set kernel args
kernel.setArg(0, a);
// Create command queue
cl::CommandQueue queue(context, devices[0], CL_QUEUE_PROFILING_ENABLE);
cl::Event enqEvent;
// Do the work
queue.enqueueNDRangeKernel(
kernel,
cl::NullRange,
cl::NDRange(8),
cl::NullRange,
NULL, &enqEvent);
queue.finish();
assert (enqEvent.getInfo<CL_EVENT_COMMAND_EXECUTION_STATUS>() == CL_COMPLETE);
assert (
enqEvent.getProfilingInfo<CL_PROFILING_COMMAND_QUEUED>() <=
enqEvent.getProfilingInfo<CL_PROFILING_COMMAND_SUBMIT>());
assert (
enqEvent.getProfilingInfo<CL_PROFILING_COMMAND_SUBMIT>() <=
enqEvent.getProfilingInfo<CL_PROFILING_COMMAND_START>());
assert (
enqEvent.getProfilingInfo<CL_PROFILING_COMMAND_START>() <
enqEvent.getProfilingInfo<CL_PROFILING_COMMAND_END>());
#if 0
std::cerr << "exec time: "
<< enqEvent.getProfilingInfo<CL_PROFILING_COMMAND_END>() -
enqEvent.getProfilingInfo<CL_PROFILING_COMMAND_START>() << std::endl;
#endif
}
catch (cl::Error err) {
std::cerr
<< "ERROR: "
<< err.what()
<< "("
<< err.err()
<< ")"
<< std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
开发者ID:Drako,项目名称:pocl,代码行数:93,代码来源:host.cpp
示例8: TestDeferredCanvasBitmapCaching
static void TestDeferredCanvasBitmapCaching(skiatest::Reporter* reporter) {
SkBitmap store;
store.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
store.allocPixels();
SkDevice device(store);
NotificationCounter notificationCounter;
SkDeferredCanvas canvas(&device);
canvas.setNotificationClient(¬ificationCounter);
const int imageCount = 2;
SkBitmap sourceImages[imageCount];
for (int i = 0; i < imageCount; i++)
{
sourceImages[i].setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
sourceImages[i].allocPixels();
}
size_t bitmapSize = sourceImages[0].getSize();
canvas.drawBitmap(sourceImages[0], 0, 0, NULL);
REPORTER_ASSERT(reporter, 1 == notificationCounter.fStorageAllocatedChangedCount);
// stored bitmap + drawBitmap command
REPORTER_ASSERT(reporter, canvas.storageAllocatedForRecording() > bitmapSize);
// verify that nothing can be freed at this point
REPORTER_ASSERT(reporter, 0 == canvas.freeMemoryIfPossible(~0U));
// verify that flush leaves image in cache
REPORTER_ASSERT(reporter, 0 == notificationCounter.fFlushedDrawCommandsCount);
REPORTER_ASSERT(reporter, 0 == notificationCounter.fPrepareForDrawCount);
canvas.flush();
REPORTER_ASSERT(reporter, 1 == notificationCounter.fFlushedDrawCommandsCount);
REPORTER_ASSERT(reporter, 1 == notificationCounter.fPrepareForDrawCount);
REPORTER_ASSERT(reporter, canvas.storageAllocatedForRecording() >= bitmapSize);
// verify that after a flush, cached image can be freed
REPORTER_ASSERT(reporter, canvas.freeMemoryIfPossible(~0U) >= bitmapSize);
// Verify that caching works for avoiding multiple copies of the same bitmap
canvas.drawBitmap(sourceImages[0], 0, 0, NULL);
REPORTER_ASSERT(reporter, 2 == notificationCounter.fStorageAllocatedChangedCount);
canvas.drawBitmap(sourceImages[0], 0, 0, NULL);
REPORTER_ASSERT(reporter, 2 == notificationCounter.fStorageAllocatedChangedCount);
REPORTER_ASSERT(reporter, 1 == notificationCounter.fFlushedDrawCommandsCount);
REPORTER_ASSERT(reporter, canvas.storageAllocatedForRecording() < 2 * bitmapSize);
// Verify partial eviction based on bytesToFree
canvas.drawBitmap(sourceImages[1], 0, 0, NULL);
REPORTER_ASSERT(reporter, 1 == notificationCounter.fFlushedDrawCommandsCount);
canvas.flush();
REPORTER_ASSERT(reporter, 2 == notificationCounter.fFlushedDrawCommandsCount);
REPORTER_ASSERT(reporter, canvas.storageAllocatedForRecording() > 2 * bitmapSize);
size_t bytesFreed = canvas.freeMemoryIfPossible(1);
REPORTER_ASSERT(reporter, 2 == notificationCounter.fFlushedDrawCommandsCount);
REPORTER_ASSERT(reporter, bytesFreed >= bitmapSize);
REPORTER_ASSERT(reporter, bytesFreed < 2*bitmapSize);
// Verifiy that partial purge works, image zero is in cache but not reffed by
// a pending draw, while image 1 is locked-in.
canvas.freeMemoryIfPossible(~0U);
REPORTER_ASSERT(reporter, 2 == notificationCounter.fFlushedDrawCommandsCount);
canvas.drawBitmap(sourceImages[0], 0, 0, NULL);
canvas.flush();
canvas.drawBitmap(sourceImages[1], 0, 0, NULL);
bytesFreed = canvas.freeMemoryIfPossible(~0U);
// only one bitmap should have been freed.
REPORTER_ASSERT(reporter, bytesFreed >= bitmapSize);
REPORTER_ASSERT(reporter, bytesFreed < 2*bitmapSize);
// Clear for next test
canvas.flush();
canvas.freeMemoryIfPossible(~0U);
REPORTER_ASSERT(reporter, canvas.storageAllocatedForRecording() < bitmapSize);
// Verify the image cache is sensitive to genID bumps
canvas.drawBitmap(sourceImages[1], 0, 0, NULL);
sourceImages[1].notifyPixelsChanged();
canvas.drawBitmap(sourceImages[1], 0, 0, NULL);
REPORTER_ASSERT(reporter, canvas.storageAllocatedForRecording() > 2*bitmapSize);
// Verify that nothing in this test caused commands to be skipped
REPORTER_ASSERT(reporter, 0 == notificationCounter.fSkippedPendingDrawCommandsCount);
}
开发者ID:deepinit-arek,项目名称:skia,代码行数:82,代码来源:DeferredCanvasTest.cpp
示例9: finish
/** @brief Blocks until all kernels on the device have finished
*/
void finish()
{
clFinish(device().queue().get());
}
开发者ID:BijanZarif,项目名称:coolfluid3,代码行数:6,代码来源:device.hpp
示例10: device
void device_vcs_cart_interface::ram_alloc(UINT32 size)
{
m_ram.resize(size);
device().save_item(NAME(m_ram));
}
开发者ID:Ashura-X,项目名称:mame,代码行数:5,代码来源:vcs_slot.cpp
示例11: flush
/** @brief Flush the device command queue, i.e. wait until all kernels in the command queue have started.
*/
void flush()
{
clFlush(device().queue().get());
}
开发者ID:BijanZarif,项目名称:coolfluid3,代码行数:6,代码来源:device.hpp
示例12:
void device_a2eauxslot_card_interface::set_a2eauxslot_device()
{
m_a2eauxslot = dynamic_cast<a2eauxslot_device *>(device().machine().device(m_a2eauxslot_tag));
m_a2eauxslot->add_a2eauxslot_card(this);
}
开发者ID:coinhelper,项目名称:jsmess,代码行数:5,代码来源:a2eauxslot.c
示例13: device
void EWingInput::feedBack(quint32 input, quint32 channel, uchar value)
{
EWing* ewing = device(input);
if (ewing != NULL)
ewing->feedBack(channel, value);
}
开发者ID:alexpaulzor,项目名称:qlc,代码行数:6,代码来源:ewinginput.cpp
示例14: vkFreeMemory
DeviceMemory::~DeviceMemory() {
if (initialized())
vkFreeMemory(device(), handle(), NULL);
}
开发者ID:AdamRLukaitis,项目名称:VulkanSamples,代码行数:4,代码来源:vktestbinding.cpp
示例15: TestDeferredCanvasFreshFrame
static void TestDeferredCanvasFreshFrame(skiatest::Reporter* reporter) {
SkBitmap store;
SkRect fullRect;
fullRect.setXYWH(SkIntToScalar(0), SkIntToScalar(0), SkIntToScalar(gWidth),
SkIntToScalar(gHeight));
SkRect partialRect;
partialRect.setXYWH(SkIntToScalar(0), SkIntToScalar(0),
SkIntToScalar(1), SkIntToScalar(1));
create(&store, SkBitmap::kARGB_8888_Config, 0xFFFFFFFF);
SkDevice device(store);
SkDeferredCanvas canvas(&device);
// verify that frame is intially fresh
REPORTER_ASSERT(reporter, canvas.isFreshFrame());
// no clearing op since last call to isFreshFrame -> not fresh
REPORTER_ASSERT(reporter, !canvas.isFreshFrame());
// Verify that clear triggers a fresh frame
canvas.clear(0x00000000);
REPORTER_ASSERT(reporter, canvas.isFreshFrame());
// Verify that clear with saved state triggers a fresh frame
canvas.save(SkCanvas::kMatrixClip_SaveFlag);
canvas.clear(0x00000000);
canvas.restore();
REPORTER_ASSERT(reporter, canvas.isFreshFrame());
// Verify that clear within a layer does NOT trigger a fresh frame
canvas.saveLayer(NULL, NULL, SkCanvas::kARGB_ClipLayer_SaveFlag);
canvas.clear(0x00000000);
canvas.restore();
REPORTER_ASSERT(reporter, !canvas.isFreshFrame());
// Verify that a clear with clipping triggers a fresh frame
// (clear is not affected by clipping)
canvas.save(SkCanvas::kMatrixClip_SaveFlag);
canvas.clipRect(partialRect, SkRegion::kIntersect_Op, false);
canvas.clear(0x00000000);
canvas.restore();
REPORTER_ASSERT(reporter, canvas.isFreshFrame());
// Verify that full frame rects with different forms of opaque paint
// trigger frames to be marked as fresh
{
SkPaint paint;
paint.setStyle( SkPaint::kFill_Style );
paint.setAlpha( 255 );
canvas.drawRect(fullRect, paint);
REPORTER_ASSERT(reporter, canvas.isFreshFrame());
}
{
SkPaint paint;
paint.setStyle( SkPaint::kFill_Style );
paint.setAlpha( 255 );
paint.setXfermodeMode(SkXfermode::kSrcIn_Mode);
canvas.drawRect(fullRect, paint);
REPORTER_ASSERT(reporter, !canvas.isFreshFrame());
}
{
SkPaint paint;
paint.setStyle( SkPaint::kFill_Style );
SkBitmap bmp;
create(&bmp, SkBitmap::kARGB_8888_Config, 0xFFFFFFFF);
bmp.setIsOpaque(true);
SkShader* shader = SkShader::CreateBitmapShader(bmp,
SkShader::kClamp_TileMode, SkShader::kClamp_TileMode);
paint.setShader(shader)->unref();
canvas.drawRect(fullRect, paint);
REPORTER_ASSERT(reporter, canvas.isFreshFrame());
}
// Verify that full frame rects with different forms of non-opaque paint
// do not trigger frames to be marked as fresh
{
SkPaint paint;
paint.setStyle( SkPaint::kFill_Style );
paint.setAlpha( 254 );
canvas.drawRect(fullRect, paint);
REPORTER_ASSERT(reporter, !canvas.isFreshFrame());
}
{
SkPaint paint;
paint.setStyle( SkPaint::kFill_Style );
SkBitmap bmp;
create(&bmp, SkBitmap::kARGB_8888_Config, 0xFFFFFFFF);
bmp.setIsOpaque(false);
SkShader* shader = SkShader::CreateBitmapShader(bmp,
SkShader::kClamp_TileMode, SkShader::kClamp_TileMode);
paint.setShader(shader)->unref();
canvas.drawRect(fullRect, paint);
REPORTER_ASSERT(reporter, !canvas.isFreshFrame());
}
// Verify that incomplete coverage does not trigger a fresh frame
{
SkPaint paint;
paint.setStyle(SkPaint::kFill_Style);
paint.setAlpha(255);
canvas.drawRect(partialRect, paint);
REPORTER_ASSERT(reporter, !canvas.isFreshFrame());
//.........这里部分代码省略.........
开发者ID:deepinit-arek,项目名称:skia,代码行数:101,代码来源:DeferredCanvasTest.cpp
示例16: vkUnmapMemory
void DeviceMemory::unmap() const { vkUnmapMemory(device(), handle()); }
开发者ID:AdamRLukaitis,项目名称:VulkanSamples,代码行数:1,代码来源:vktestbinding.cpp
示例17: device
/*!
Returns true if this QDriveInfo object refers to the same drive or volume
as the \a other; otherwise returns false.
Note that the result of comparing two invalid QDriveInfo objects is always positive.
\sa operator!=()
*/
bool QDriveInfo::operator==(const QDriveInfo &other) const
{
if (d == other.d)
return true;
return device() == other.device();
}
开发者ID:ABBAPOH,项目名称:qdrive,代码行数:14,代码来源:qdriveinfo.cpp
示例18: Q_D
bool QGLContext::chooseContext(const QGLContext* shareContext)
{
Q_D(QGLContext);
// Validate the device.
if (!device())
return false;
int devType = device()->devType();
if (devType != QInternal::Pixmap && devType != QInternal::Image && devType != QInternal::Widget) {
qWarning("QGLContext::chooseContext(): Cannot create QGLContext's for paint device type %d", devType);
return false;
}
// Get the display and initialize it.
d->eglContext = new QEglContext();
d->ownsEglContext = true;
d->eglContext->setApi(QEgl::OpenGL);
// Construct the configuration we need for this surface.
QEglProperties configProps;
qt_eglproperties_set_glformat(configProps, d->glFormat);
configProps.setDeviceType(devType);
configProps.setPaintDeviceFormat(device());
configProps.setRenderableType(QEgl::OpenGL);
// Search for a matching configuration, reducing the complexity
// each time until we get something that matches.
if (!d->eglContext->chooseConfig(configProps)) {
delete d->eglContext;
d->eglContext = 0;
return false;
}
// Inform the higher layers about the actual format properties.
qt_glformat_from_eglconfig(d->glFormat, d->eglContext->config());
// Create a new context for the configuration.
if (!d->eglContext->createContext
(shareContext ? shareContext->d_func()->eglContext : 0)) {
delete d->eglContext;
d->eglContext = 0;
return false;
}
d->sharing = d->eglContext->isSharing();
if (d->sharing && shareContext)
const_cast<QGLContext *>(shareContext)->d_func()->sharing = true;
#if defined(EGL_VERSION_1_1)
if (d->glFormat.swapInterval() != -1 && devType == QInternal::Widget)
eglSwapInterval(d->eglContext->display(), d->glFormat.swapInterval());
#endif
// Create the EGL surface to draw into.
d->eglSurface = d->eglContext->createSurface(device());
if (d->eglSurface == EGL_NO_SURFACE) {
delete d->eglContext;
d->eglContext = 0;
return false;
}
return true;
}
开发者ID:sicily,项目名称:qt4.8.4,代码行数:63,代码来源:qgl_wince.cpp
示例19: device
QString SharePlugin::dbusPath() const
{
return "/modules/kdeconnect/devices/" + device()->id() + "/share";
}
开发者ID:KDE,项目名称:kdeconnect-kde,代码行数:4,代码来源:shareplugin.cpp
示例20: defined
GpuDevice GraphicsInstance::CreateGpuDevice(int , bool, bool)
{
auto canPresent = [](vk::PhysicalDevice dev)
{
auto queueProperties = dev.getQueueFamilyProperties();
for (auto&& queueProp : queueProperties)
{
for (uint32_t i = 0; i < queueProp.queueCount(); ++i)
{
#if defined(PLATFORM_WINDOWS)
if (dev.getWin32PresentationSupportKHR(i))
#endif
{
return true;
}
}
}
return false;
};
int devId = 0;
for (devId = 0; devId < m_devices.size(); ++devId)
{
if (canPresent(m_devices[devId]))
break;
}
auto&& physDev = m_devices[devId]; // assuming first device is best
// layers
std::vector<vk::LayerProperties> devLayers;
physDev.enumerateDeviceLayerProperties(devLayers);
std::vector<const char*> layers;
{
// lunargvalidation list order
F_LOG("Enabled Vulkan debug layers for device:\n");
for (auto&& it : layerOrder)
{
auto found = std::find_if(devLayers.begin(), devLayers.end(), [&](const vk::LayerProperties& layer)
{
return it == layer.layerName();
});
if (found != devLayers.end())
{
layers.push_back(it.c_str());
m_layers.push_back(*found);
F_LOG("%s\n", found->layerName());
}
}
}
// extensions
std::vector<vk::ExtensionProperties> devExts;
auto res = physDev.enumerateDeviceExtensionProperties("", devExts);
if (res != vk::Result::eSuccess)
{
auto error = vk::getString(res);
F_LOG("Device creation error: %s\n", error.c_str());
}
std::vector<const char*> extensions;
{
// lunargvalidation list order
F_LOG("Enabled Vulkan extensions for device:\n");
for (auto&& it : devExtOrder)
{
auto found = std::find_if(devExts.begin(), devExts.end(), [&](const vk::ExtensionProperties& layer)
{
return it == layer.extensionName();
});
if (found != devExts.end())
{
extensions.push_back(it.c_str());
m_extensions.push_back(*found);
F_LOG("found %s\n", found->extensionName());
}
}
}
// queue
//auto queueProperties = vk::getPhysicalDeviceQueueFamilyProperties(physDev);
auto queueProperties = physDev.getQueueFamilyProperties();
std::vector<vk::DeviceQueueCreateInfo> queueInfos;
uint32_t i = 0;
std::vector<std::vector<float>> priorities;
for (auto&& queueProp : queueProperties)
{
priorities.push_back(std::vector<float>());
for (size_t k = 0; k < queueProp.queueCount(); ++k)
{
priorities[i].push_back(1.f);
}
vk::DeviceQueueCreateInfo queueInfo = vk::DeviceQueueCreateInfo()
.sType(vk::StructureType::eDeviceQueueCreateInfo)
.queueFamilyIndex(i)
.queueCount(queueProp.queueCount())
.pQueuePriorities(priorities[i].data());
// queue priorities go here.
queueInfos.push_back(queueInfo);
++i;
}
//.........这里部分代码省略.........
开发者ID:jgavert,项目名称:Faze,代码行数:101,代码来源:gfxApi.cpp
注:本文中的device函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论