Lines Matching refs:screen

92    struct d3d12_screen* screen = d3d12_screen(pscreen);
94 switch (screen->vendor_id) {
111 struct d3d12_screen* screen = d3d12_screen(pscreen);
113 return screen->memory_size_megabytes;
119 struct d3d12_screen *screen = d3d12_screen(pscreen);
234 return screen->vendor_id != HW_VENDOR_MICROSOFT;
240 return screen->architecture.UMA;
268 return screen->opts.PSSpecifiedStencilRefSupported;
309 if (screen->max_feature_level <= D3D_FEATURE_LEVEL_11_0)
311 if (screen->opts.ResourceBindingTier <= D3D12_RESOURCE_BINDING_TIER_2)
392 struct d3d12_screen *screen = d3d12_screen(pscreen);
428 if (screen->opts.ResourceBindingTier == D3D12_RESOURCE_BINDING_TIER_1)
476 (screen->max_feature_level >= D3D_FEATURE_LEVEL_11_1 ||
477 screen->opts.ResourceBindingTier >= D3D12_RESOURCE_BINDING_TIER_3) ?
484 if (!screen->support_shader_images)
487 (screen->max_feature_level >= D3D_FEATURE_LEVEL_11_1 ||
488 screen->opts.ResourceBindingTier >= D3D12_RESOURCE_BINDING_TIER_3) ?
541 struct d3d12_screen *screen = d3d12_screen(pscreen);
612 if (FAILED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_FORMAT_SUPPORT,
650 if (FAILED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_FORMAT_SUPPORT,
684 if (FAILED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS,
695 d3d12_deinit_screen(struct d3d12_screen *screen)
697 if (screen->rtv_pool) {
698 d3d12_descriptor_pool_free(screen->rtv_pool);
699 screen->rtv_pool = nullptr;
701 if (screen->dsv_pool) {
702 d3d12_descriptor_pool_free(screen->dsv_pool);
703 screen->dsv_pool = nullptr;
705 if (screen->view_pool) {
706 d3d12_descriptor_pool_free(screen->view_pool);
707 screen->view_pool = nullptr;
709 if (screen->readback_slab_bufmgr) {
710 screen->readback_slab_bufmgr->destroy(screen->readback_slab_bufmgr);
711 screen->readback_slab_bufmgr = nullptr;
713 if (screen->slab_bufmgr) {
714 screen->slab_bufmgr->destroy(screen->slab_bufmgr);
715 screen->slab_bufmgr = nullptr;
717 if (screen->cache_bufmgr) {
718 screen->cache_bufmgr->destroy(screen->cache_bufmgr);
719 screen->cache_bufmgr = nullptr;
721 if (screen->bufmgr) {
722 screen->bufmgr->destroy(screen->bufmgr);
723 screen->bufmgr = nullptr;
725 d3d12_deinit_residency(screen);
726 if (screen->fence) {
727 screen->fence->Release();
728 screen->fence = nullptr;
730 if (screen->cmdqueue) {
731 screen->cmdqueue->Release();
732 screen->cmdqueue = nullptr;
734 if (screen->dev) {
735 screen->dev->Release();
736 screen->dev = nullptr;
741 d3d12_destroy_screen(struct d3d12_screen *screen)
743 slab_destroy_parent(&screen->transfer_pool);
744 mtx_destroy(&screen->submit_mutex);
745 mtx_destroy(&screen->descriptor_pool_mutex);
747 FREE(screen);
758 struct d3d12_screen *screen = d3d12_screen(pscreen);
759 struct sw_winsys *winsys = screen->winsys;
787 if (SUCCEEDED(screen->cmdqueue->QueryInterface(IID_PPV_ARGS(&sharing_contract)))) {
888 can_attribute_at_vertex(struct d3d12_screen *screen)
890 switch (screen->vendor_id) {
894 return screen->opts3.BarycentricsSupported;
899 can_shader_image_load_all_formats(struct d3d12_screen *screen)
901 if (!screen->opts.TypedUAVLoadAdditionalFormats)
931 if (FAILED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_FORMAT_SUPPORT, &support, sizeof(support))) ||
942 d3d12_init_null_srvs(struct d3d12_screen *screen)
1020 d3d12_descriptor_pool_alloc_handle(screen->view_pool, &screen->null_srvs[i]);
1021 screen->dev->CreateShaderResourceView(NULL, &srv, screen->null_srvs[i].cpu_handle);
1027 d3d12_init_null_uavs(struct d3d12_screen *screen)
1080 d3d12_descriptor_pool_alloc_handle(screen->view_pool, &screen->null_uavs[i]);
1081 screen->dev->CreateUnorderedAccessView(NULL, NULL, &uav, screen->null_uavs[i].cpu_handle);
1087 d3d12_init_null_rtv(struct d3d12_screen *screen)
1094 d3d12_descriptor_pool_alloc_handle(screen->rtv_pool, &screen->null_rtv);
1095 screen->dev->CreateRenderTargetView(NULL, &rtv, screen->null_rtv.cpu_handle);
1101 struct d3d12_screen *screen = d3d12_screen(pscreen);
1102 memcpy(luid, &screen->adapter_luid, PIPE_LUID_SIZE);
1108 struct d3d12_screen *screen = d3d12_screen(pscreen);
1109 memcpy(uuid, &screen->device_uuid, PIPE_UUID_SIZE);
1115 struct d3d12_screen *screen = d3d12_screen(pscreen);
1116 memcpy(uuid, &screen->driver_uuid, PIPE_UUID_SIZE);
1142 d3d12_init_screen_base(struct d3d12_screen *screen, struct sw_winsys *winsys, LUID *adapter_luid)
1146 screen->winsys = winsys;
1148 screen->adapter_luid = *adapter_luid;
1149 mtx_init(&screen->descriptor_pool_mutex, mtx_plain);
1150 mtx_init(&screen->submit_mutex, mtx_plain);
1152 list_inithead(&screen->context_list);
1154 screen->base.get_vendor = d3d12_get_vendor;
1155 screen->base.get_device_vendor = d3d12_get_device_vendor;
1156 screen->base.get_param = d3d12_get_param;
1157 screen->base.get_paramf = d3d12_get_paramf;
1158 screen->base.get_shader_param = d3d12_get_shader_param;
1159 screen->base.get_compute_param = d3d12_get_compute_param;
1160 screen->base.is_format_supported = d3d12_is_format_supported;
1161 screen->base.get_compiler_options = d3d12_get_compiler_options;
1162 screen->base.context_create = d3d12_context_create;
1163 screen->base.flush_frontbuffer = d3d12_flush_frontbuffer;
1164 screen->base.get_device_luid = d3d12_get_adapter_luid;
1165 screen->base.get_device_uuid = d3d12_get_device_uuid;
1166 screen->base.get_driver_uuid = d3d12_get_driver_uuid;
1167 screen->base.get_device_node_mask = d3d12_get_node_mask;
1168 screen->base.create_fence_win32 = d3d12_create_fence_win32;
1169 screen->base.set_fence_timeline_value = d3d12_set_fence_timeline_value;
1173 d3d12_init_screen(struct d3d12_screen *screen, IUnknown *adapter)
1175 assert(screen->base.destroy != nullptr);
1185 screen->dev = create_device(adapter);
1187 if (!screen->dev) {
1192 screen->adapter_luid = GetAdapterLuid(screen->dev);
1195 if (SUCCEEDED(screen->dev->QueryInterface(IID_PPV_ARGS(&info_queue)))) {
1215 if (FAILED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS,
1216 &screen->opts,
1217 sizeof(screen->opts)))) {
1221 if (FAILED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS1,
1222 &screen->opts1,
1223 sizeof(screen->opts1)))) {
1227 if (FAILED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS2,
1228 &screen->opts2,
1229 sizeof(screen->opts2)))) {
1233 if (FAILED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS3,
1234 &screen->opts3,
1235 sizeof(screen->opts3)))) {
1239 if (FAILED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS4,
1240 &screen->opts4,
1241 sizeof(screen->opts4)))) {
1246 screen->architecture.NodeIndex = 0;
1247 if (FAILED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE,
1248 &screen->architecture,
1249 sizeof(screen->architecture)))) {
1263 if (FAILED(screen->dev->CheckFeatureSupport(D3D12_FEATURE_FEATURE_LEVELS,
1269 screen->max_feature_level = feature_levels.MaxSupportedFeatureLevel;
1278 if (SUCCEEDED(screen->dev->QueryInterface(&device9))) {
1280 IID_PPV_ARGS(&screen->cmdqueue))))
1284 if (FAILED(screen->dev->CreateCommandQueue(&queue_desc,
1285 IID_PPV_ARGS(&screen->cmdqueue))))
1289 if (FAILED(screen->dev->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&screen->fence))))
1292 if (!d3d12_init_residency(screen))
1296 if (FAILED(screen->cmdqueue->GetTimestampFrequency(&timestamp_freq)))
1298 screen->timestamp_multiplier = 1000000000.0 / timestamp_freq;
1300 d3d12_screen_fence_init(&screen->base);
1301 d3d12_screen_resource_init(&screen->base);
1303 d3d12_screen_video_init(&screen->base);
1305 slab_create_parent(&screen->transfer_pool, sizeof(struct d3d12_transfer), 16);
1311 screen->bufmgr = d3d12_bufmgr_create(screen);
1312 if (!screen->bufmgr)
1315 screen->cache_bufmgr = pb_cache_manager_create(screen->bufmgr, 0xfffff, 2, 0, 512 * 1024 * 1024);
1316 if (!screen->cache_bufmgr)
1319 screen->slab_bufmgr = pb_slab_range_manager_create(screen->cache_bufmgr, 16,
1323 if (!screen->slab_bufmgr)
1327 screen->readback_slab_bufmgr = pb_slab_range_manager_create(screen->cache_bufmgr, 16,
1331 if (!screen->readback_slab_bufmgr)
1334 screen->rtv_pool = d3d12_descriptor_pool_new(screen,
1337 screen->dsv_pool = d3d12_descriptor_pool_new(screen,
1340 screen->view_pool = d3d12_descriptor_pool_new(screen,
1343 if (!screen->rtv_pool || !screen->dsv_pool || !screen->view_pool)
1346 d3d12_init_null_srvs(screen);
1347 d3d12_init_null_uavs(screen);
1348 d3d12_init_null_rtv(screen);
1350 screen->have_load_at_vertex = can_attribute_at_vertex(screen);
1351 screen->support_shader_images = can_shader_image_load_all_formats(screen);
1353 if (SUCCEEDED(screen->dev->QueryInterface(&dev8))) {
1355 screen->support_create_not_resident = true;
1358 screen->nir_options = *dxil_get_nir_compiler_options();
1361 if ((screen->vendor_id == HW_VENDOR_MICROSOFT &&
1362 screen->driver_version < known_good_warp_version) ||
1363 !screen->opts1.Int64ShaderOps) {
1365 screen->nir_options.lower_pack_64_2x32_split = false;
1366 screen->nir_options.lower_unpack_64_2x32_split = false;
1367 screen->nir_options.lower_int64_options = (nir_lower_int64_options)~0;
1370 if (!screen->opts.DoublePrecisionFloatShaderOps)
1371 screen->nir_options.lower_doubles_options = (nir_lower_doubles_options)~0;
1384 memcpy(screen->driver_uuid, sha1, PIPE_UUID_SIZE);
1388 _mesa_sha1_update(&sha1_ctx, &screen->vendor_id, sizeof(screen->vendor_id));
1389 _mesa_sha1_update(&sha1_ctx, &screen->device_id, sizeof(screen->device_id));
1390 _mesa_sha1_update(&sha1_ctx, &screen->subsys_id, sizeof(screen->subsys_id));
1391 _mesa_sha1_update(&sha1_ctx, &screen->revision, sizeof(screen->revision));
1393 memcpy(screen->device_uuid, sha1, PIPE_UUID_SIZE);