PROP_VENDOR_ID,
PROP_HARDWARE,
PROP_DESCRIPTION,
- PROP_ALLOW_TEARING,
PROP_CREATE_FLAGS,
PROP_ADAPTER_LUID,
};
guint vendor_id;
gboolean hardware;
gchar *description;
- gboolean allow_tearing;
guint create_flags;
gint64 adapter_luid;
g_param_spec_string ("description", "Description",
"Human readable device description", NULL, readable_flags));
- g_object_class_install_property (gobject_class, PROP_ALLOW_TEARING,
- g_param_spec_boolean ("allow-tearing", "Allow tearing",
- "Whether dxgi device supports allow-tearing feature or not", FALSE,
- readable_flags));
-
g_object_class_install_property (gobject_class, PROP_CREATE_FLAGS,
g_param_spec_uint ("create-flags", "Create flags",
"D3D11_CREATE_DEVICE_FLAG flags used for D3D11CreateDevice",
GST_ERROR_OBJECT (self, "cannot create dxgi factory, hr: 0x%x", (guint) hr);
goto out;
}
-#if (GST_D3D11_DXGI_HEADER_VERSION >= 5)
- {
- ComPtr < IDXGIFactory5 > factory5;
- BOOL allow_tearing;
-
- hr = factory.As (&factory5);
- if (SUCCEEDED (hr)) {
- hr = factory5->CheckFeatureSupport (DXGI_FEATURE_PRESENT_ALLOW_TEARING,
- (void *) &allow_tearing, sizeof (allow_tearing));
-
- priv->allow_tearing = SUCCEEDED (hr) && allow_tearing;
- }
- }
-#endif
if (factory->EnumAdapters1 (priv->adapter, &adapter) == DXGI_ERROR_NOT_FOUND) {
GST_DEBUG_OBJECT (self, "No adapter for index %d", priv->adapter);
case PROP_DESCRIPTION:
g_value_set_string (value, priv->description);
break;
- case PROP_ALLOW_TEARING:
- g_value_set_boolean (value, priv->allow_tearing);
- break;
case PROP_CREATE_FLAGS:
g_value_set_uint (value, priv->create_flags);
break;
/* Step 3: Create swapchain
* (or reuse old swapchain if the format is not changed) */
window->allow_tearing = FALSE;
- g_object_get (window->device, "allow-tearing", &window->allow_tearing, NULL);
+
+#if (GST_D3D11_DXGI_HEADER_VERSION >= 5)
+ {
+ ComPtr < IDXGIFactory5 > factory5;
+ IDXGIFactory1 *factory_handle;
+ BOOL allow_tearing = FALSE;
+
+ factory_handle = gst_d3d11_device_get_dxgi_factory_handle (window->device);
+ hr = factory_handle->QueryInterface (IID_PPV_ARGS (&factory5));
+ if (SUCCEEDED (hr)) {
+ hr = factory5->CheckFeatureSupport (DXGI_FEATURE_PRESENT_ALLOW_TEARING,
+ (void *) &allow_tearing, sizeof (allow_tearing));
+ }
+
+ if (SUCCEEDED (hr) && allow_tearing)
+ window->allow_tearing = allow_tearing;
+ }
+#endif
+
if (window->allow_tearing) {
GST_DEBUG_OBJECT (window, "device support tearning");
swapchain_flags |= DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING;