public Tracer.Builder GetTracerBuilder()
        {
            if (ReporterConfig == null)
            {
                ReporterConfig = new ReporterConfiguration(_loggerFactory);
            }
            if (SamplerConfig == null)
            {
                SamplerConfig = new SamplerConfiguration(_loggerFactory);
            }
            if (_codecConfig == null)
            {
                _codecConfig = new CodecConfiguration(new Dictionary <IFormat <ITextMap>, List <Codec <ITextMap> > >());
            }
            if (_metricsFactory == null)
            {
                _metricsFactory = NoopMetricsFactory.Instance;
            }
            IMetrics  metrics  = new MetricsImpl(_metricsFactory);
            IReporter reporter = ReporterConfig.GetReporter(metrics);
            ISampler  sampler  = SamplerConfig.CreateSampler(_serviceName, metrics);

            Tracer.Builder builder = new Tracer.Builder(_serviceName)
                                     .WithLoggerFactory(_loggerFactory)
                                     .WithSampler(sampler)
                                     .WithReporter(reporter)
                                     .WithMetrics(metrics)
                                     .WithTags(_tracerTags);

            _codecConfig.Apply(builder);

            return(builder);
        }
Example #2
0
        public unsafe Sampler(Api api, SamplerConfig config)
        {
            _api = api;

            // Wrap textures
            // TODO: make texture-specific
            config.AddressModeU = SamplerAddressMode.Repeat;
            config.AddressModeV = SamplerAddressMode.Repeat;
            config.AddressModeW = SamplerAddressMode.Repeat;

            var samplerInfo = new SamplerCreateInfo();

            samplerInfo.SType                   = StructureType.SamplerCreateInfo;
            samplerInfo.MagFilter               = config.MagFilter;
            samplerInfo.MinFilter               = config.MinFilter;
            samplerInfo.AddressModeU            = config.AddressModeU;
            samplerInfo.AddressModeV            = config.AddressModeV;
            samplerInfo.AddressModeW            = config.AddressModeW;
            samplerInfo.AnisotropyEnable        = config.AnisotropyEnable;
            samplerInfo.MaxAnisotropy           = config.MaxAnisotropy;
            samplerInfo.BorderColor             = config.BorderColor;
            samplerInfo.UnnormalizedCoordinates = config.UnnormalizedCoordinates;
            samplerInfo.CompareEnable           = config.CompareEnable;
            samplerInfo.CompareOp               = config.CompareOp;
            samplerInfo.MipmapMode              = config.MipmapMode;
            samplerInfo.MipLodBias              = config.MipLodBias;
            samplerInfo.MinLod                  = config.MinLod;
            samplerInfo.MaxLod                  = config.MaxLod;

            Util.Verify(_api.Vk.CreateSampler(_api.Device.VkDevice, samplerInfo, default, out _vkSampler), $"{nameof(Sampler)}: Failed to create sampler");
        public Tracer.Builder GetTracerBuilder()
        {
            if (ReporterConfig == null)
            {
                ReporterConfig = new ReporterConfiguration(_loggerFactory);
            }
            if (SamplerConfig == null)
            {
                SamplerConfig = new SamplerConfiguration(_loggerFactory);
            }
            if (CodecConfig == null)
            {
                CodecConfig = new CodecConfiguration(_loggerFactory);
            }
            if (_metricsFactory == null)
            {
                _metricsFactory = NoopMetricsFactory.Instance;
            }
            IMetrics  metrics  = new MetricsImpl(_metricsFactory);
            IReporter reporter = ReporterConfig.GetReporter(metrics);
            ISampler  sampler  = SamplerConfig.GetSampler(ServiceName, metrics);

            Tracer.Builder builder = new Tracer.Builder(ServiceName)
                                     .WithLoggerFactory(_loggerFactory)
                                     .WithSampler(sampler)
                                     .WithReporter(reporter)
                                     .WithMetrics(metrics)
                                     .WithTags(_tracerTags);

            if (UseTraceId128Bit)
            {
                builder = builder.WithTraceId128Bit();
            }

            CodecConfig.Apply(builder);

            return(builder);
        }