Esempio n. 1
0
Command* QueueSlave::pop()
{
    static base::a_int32_t _request;
    const int32_t request = ++_request;

    while( true )
    {
        const size_t queueSize = _impl->queue.getSize();
        if( queueSize <= _impl->prefetchMark )
        {
            QueueGetItemPacket packet;
            packet.itemsRequested = _impl->prefetchAmount;
            packet.instanceID = _impl->masterInstanceID;
            packet.slaveInstanceID = getInstanceID();
            packet.requestID = request;
            send( _impl->master, packet );
        }

        Command* cmd = _impl->queue.pop();
        if( (*cmd)->command == CMD_QUEUE_ITEM )
            return cmd;
    
        EQASSERT( (*cmd)->command == CMD_QUEUE_EMPTY );
        const QueueEmptyPacket* packet = cmd->get< QueueEmptyPacket >();
        if( packet->requestID == request )
        {
            cmd->release();
            return 0;
        }
        // else left-over or not our empty packet, discard and retry
        cmd->release();
    }
}
void ExtendedDebugLogEntry::setData(const DebugLogEntry::DataFields &data, UAVObjectManager *objectManager)
{
    DebugLogEntry::setData(data);

    if (getType() == DebugLogEntry::TYPE_UAVOBJECT) {
        UAVDataObject *object = (UAVDataObject *)objectManager->getObject(getObjectID(), getInstanceID());
        Q_ASSERT(object);
        m_object = object->clone(getInstanceID());
        m_object->unpack(getData().Data);
    }
}
Esempio n. 3
0
bool
EGL2Framebuffer::bindRenderTexture(GraphicsTexturePtr texture, GLenum attachment, GLint level, GLint layer) noexcept
{
	assert(texture);

	auto gltexture = texture->downcast<EGL2Texture>();
	auto handle = gltexture->getInstanceID();
	auto target = gltexture->getTarget();

	if (target != GL_TEXTURE_2D && target != GL_TEXTURE_2D_MULTISAMPLE  && target != GL_TEXTURE_CUBE_MAP)
	{
		GL_PLATFORM_LOG("Invalid texture target");
		return false;
	}

	GL_CHECK(glFramebufferTexture2D(GL_FRAMEBUFFER, attachment, target, handle, 0));

	return true;
}
Esempio n. 4
0
void Object::serialize( co::DataOStream& os, const uint64_t dirtyBits )
{
    if( dirtyBits & DIRTY_NAME )
        os << _data.name;
    if( dirtyBits & DIRTY_USERDATA )
        os << _data.userData;
    if( dirtyBits & DIRTY_TASKS )
        os << _tasks;
    if( dirtyBits & DIRTY_ERROR )
        os << _error;
    if( dirtyBits & DIRTY_REMOVED )
    {
        EQASSERT( !isMaster() || 
                  ( _removedChildren.empty() && dirtyBits == DIRTY_ALL ))
        os << _removedChildren;
        _removedChildren.clear();
    }
    if( (dirtyBits & DIRTY_SERIAL) && isMaster( ))
        os << getInstanceID();
}
Esempio n. 5
0
bool
OGLCoreFramebuffer::bindRenderTexture(GraphicsTexturePtr renderTexture, GLenum attachment, GLint level, GLint layer) noexcept
{
	assert(renderTexture);

	auto texture = renderTexture->downcast<OGLCoreTexture>();
	auto textureID = texture->getInstanceID();
	auto& textureDesc = renderTexture->getGraphicsTextureDesc();

	if (textureDesc.getTexDim() == GraphicsTextureDim::GraphicsTextureDim2DArray ||
		textureDesc.getTexDim() == GraphicsTextureDim::GraphicsTextureDimCube ||
		textureDesc.getTexDim() == GraphicsTextureDim::GraphicsTextureDimCubeArray)
	{
		glNamedFramebufferTextureLayer(_fbo, attachment, textureID, level, layer);
	}
	else
	{
		glNamedFramebufferTexture(_fbo, attachment, textureID, level);
	}

	return OGLCheck::checkError();
}
Esempio n. 6
0
  BOOL CALLBACK System::diDeviceEnumCallback( LPCDIDEVICEINSTANCEW instance,
  LPVOID referer )
  {
    auto system = reinterpret_cast<System*>( referer );

    for ( auto identifier : system->mXInputDeviceIDs )
      if ( instance->guidProduct.Data1 == identifier )
        return DIENUM_CONTINUE;

    for ( auto device : system->mDevices )
    {
      if ( device->getHandler() != Device::Handler_DirectInput )
        continue;

      auto diDevice = static_cast<DirectInputDevice*>( device );

      if ( diDevice->getInstanceID() == instance->guidInstance )
      {
        if ( device->getSavedStatus() == Device::Status_Disconnected )
          system->deviceConnect( device );
        else
          device->setStatus( Device::Status_Connected );

        return DIENUM_CONTINUE;
      }
    }

    Device* device = new DirectInputDevice( system, system->getNextID(), instance );

    if ( system->isInitializing() )
      device->setStatus( Device::Status_Connected );
    else
      system->deviceConnect( device );

    system->mDevices.push_back( device );

    return DIENUM_CONTINUE;
  }
Esempio n. 7
0
ObjectICommand QueueSlave::pop( const uint32_t timeout )
{
    static lunchbox::a_int32_t _request;
    const int32_t request = ++_request;

    while( true )
    {
        const size_t queueSize = _impl->queue.getSize();
        if( queueSize <= _impl->prefetchMark )
        {
            send( _impl->master, CMD_QUEUE_GET_ITEM, _impl->masterInstanceID )
                    << _impl->prefetchAmount << getInstanceID() << request;
        }

        try
        {
            ObjectICommand cmd( _impl->queue.pop( timeout ));
            switch( cmd.getCommand( ))
            {
            case CMD_QUEUE_ITEM:
                return ObjectICommand( cmd );

            default:
                LBUNIMPLEMENTED;
            case CMD_QUEUE_EMPTY:
                if( cmd.get< int32_t >() == request )
                    return ObjectICommand( 0, 0, 0, false );
                // else left-over or not our empty command, discard and retry
                break;
            }
        }
        catch (co::Exception& e)
        {
            LBWARN << e.what() << std::endl;
            return ObjectICommand( 0, 0, 0, false );
        }
    }
}
Esempio n. 8
0
void QueueMaster::getInstanceData( co::DataOStream& os )
{
    os << getInstanceID() << getLocalNode()->getNodeID();
}
Esempio n. 9
0
void
EGL2DescriptorSet::apply(const EGL2Program& shaderObject) noexcept
{
	for (auto& it : _activeUniformSets)
	{
		auto type = it->getGraphicsParam()->getType();
		auto location = it->getGraphicsParam()->getBindingPoint();
		switch (type)
		{
		case GraphicsUniformType::GraphicsUniformTypeBool:
			GL_CHECK(glUniform1i(location, it->getBool()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeInt:
			GL_CHECK(glUniform1i(location, it->getInt()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeInt2:
			GL_CHECK(glUniform2iv(location, 1, (GLint*)it->getInt2().ptr()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeInt3:
			GL_CHECK(glUniform3iv(location, 1, (GLint*)it->getInt3().ptr()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeInt4:
			GL_CHECK(glUniform4iv(location, 1, (GLint*)it->getInt4().ptr()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeFloat:
			GL_CHECK(glUniform1f(location, it->getFloat()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeFloat2:
			GL_CHECK(glUniform2fv(location, 1, it->getFloat2().ptr()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeFloat3:
			GL_CHECK(glUniform3fv(location, 1, it->getFloat3().ptr()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeFloat4:
			GL_CHECK(glUniform4fv(location, 1, it->getFloat4().ptr()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeFloat3x3:
			GL_CHECK(glUniformMatrix3fv(location, 1, GL_FALSE, it->getFloat3x3().ptr()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeFloat4x4:
			GL_CHECK(glUniformMatrix4fv(location, 1, GL_FALSE, it->getFloat4x4().ptr()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeIntArray:
			GL_CHECK(glUniform1iv(location, it->getIntArray().size(), it->getIntArray().data()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeInt2Array:
			GL_CHECK(glUniform2iv(location, it->getInt2Array().size(), (GLint*)it->getInt2Array().data()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeInt3Array:
			GL_CHECK(glUniform3iv(location, it->getInt3Array().size(), (GLint*)it->getInt3Array().data()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeInt4Array:
			GL_CHECK(glUniform4iv(location, it->getInt4Array().size(), (GLint*)it->getInt4Array().data()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeFloatArray:
			GL_CHECK(glUniform1fv(location, it->getFloatArray().size(), (GLfloat*)it->getFloatArray().data()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeFloat2Array:
			GL_CHECK(glUniform2fv(location, it->getFloat2Array().size(), (GLfloat*)it->getFloat2Array().data()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeFloat3Array:
			GL_CHECK(glUniform3fv(location, it->getFloat3Array().size(), (GLfloat*)it->getFloat3Array().data()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeFloat4Array:
			GL_CHECK(glUniform4fv(location, it->getFloat4Array().size(), (GLfloat*)it->getFloat4Array().data()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeFloat3x3Array:
			GL_CHECK(glUniformMatrix3fv(location, it->getFloat3x3Array().size(), GL_FALSE, (GLfloat*)it->getFloat3x3Array().data()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeFloat4x4Array:
			GL_CHECK(glUniformMatrix4fv(location, it->getFloat4x4Array().size(), GL_FALSE, (GLfloat*)it->getFloat4x4Array().data()));
			break;
		case GraphicsUniformType::GraphicsUniformTypeSampler:
			assert(false);
			break;
		case GraphicsUniformType::GraphicsUniformTypeSamplerImage:
			{
				auto& texture = it->getTexture();
				if (texture)
				{
					auto gltexture = texture->downcast<EGL2Texture>();
					GL_CHECK(glActiveTexture(GL_TEXTURE0 + location));
					GL_CHECK(glBindTexture(gltexture->getTarget(), gltexture->getInstanceID()));
				}
			}
			break;
		case GraphicsUniformType::GraphicsUniformTypeCombinedImageSampler:
			{
				auto& texture = it->getTexture();
				if (texture)
				{
					auto gltexture = texture->downcast<EGL2Texture>();
					GL_CHECK(glActiveTexture(GL_TEXTURE0 + location));
					GL_CHECK(glBindTexture(gltexture->getTarget(), gltexture->getInstanceID()));
				}
			}
			break;
		case GraphicsUniformType::GraphicsUniformTypeStorageImage:
			{
				auto& texture = it->getTexture();
				if (texture)
				{
					auto gltexture = texture->downcast<EGL2Texture>();
					GL_CHECK(glActiveTexture(GL_TEXTURE0 + location));
					GL_CHECK(glBindTexture(gltexture->getTarget(), gltexture->getInstanceID()));
				}
			}
			break;
		case GraphicsUniformType::GraphicsUniformTypeStorageTexelBuffer:
		case GraphicsUniformType::GraphicsUniformTypeUniformTexelBuffer:
			GL_PLATFORM_LOG("Can't support TBO.");
			break;
		case GraphicsUniformType::GraphicsUniformTypeStorageBuffer:
		case GraphicsUniformType::GraphicsUniformTypeStorageBufferDynamic:
		case GraphicsUniformType::GraphicsUniformTypeUniformBuffer:
		case GraphicsUniformType::GraphicsUniformTypeUniformBufferDynamic:
			GL_PLATFORM_LOG("Can't support UBO.");
			break;
		case GraphicsUniformType::GraphicsUniformTypeInputAttachment:
			break;
		case GraphicsUniformType::GraphicsUniformTypeUInt:
		case GraphicsUniformType::GraphicsUniformTypeUInt2:
		case GraphicsUniformType::GraphicsUniformTypeUInt3:
		case GraphicsUniformType::GraphicsUniformTypeUInt4:
		case GraphicsUniformType::GraphicsUniformTypeUIntArray:
		case GraphicsUniformType::GraphicsUniformTypeUInt2Array:
		case GraphicsUniformType::GraphicsUniformTypeUInt3Array:
		case GraphicsUniformType::GraphicsUniformTypeUInt4Array:
			GL_PLATFORM_LOG("Can't support unsigned type.");
			break;
		default:
			break;
		}
	}
}
Boolean UNIX_ComputerSystem::getInstanceID(CIMProperty &p) const
{
	p = CIMProperty(PROPERTY_INSTANCE_ID, getInstanceID());
	return true;
}
String UNIX_ComputerSystem::getName() const
{
	return getInstanceID();
}
Boolean UNIX_AllocationSchedulingElement::getInstanceID(CIMProperty &p) const
{
	p = CIMProperty(PROPERTY_INSTANCE_ID, getInstanceID());
	return true;
}
Boolean UNIX_ClusteringService::getInstanceID(CIMProperty &p) const
{
	p = CIMProperty(PROPERTY_INSTANCE_ID, getInstanceID());
	return true;
}
Boolean UNIX_BootConfigSetting::getInstanceID(CIMProperty &p) const
{
	p = CIMProperty(PROPERTY_INSTANCE_ID, getInstanceID());
	return true;
}
Boolean SambaService::getInstanceID(CIMProperty &p) const
{
	p = CIMProperty(PROPERTY_INSTANCE_ID, getInstanceID());
	return true;
}