aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakob Bornecrantz2010-01-22 19:41:49 -0600
committerJakob Bornecrantz2010-01-28 10:32:54 -0600
commit44a0e0a099eeeb6501359f08449dcaa5e9899398 (patch)
tree2bf83614ef44ed81cb16060e7601275c306969c1 /libkms/intel.c
parentf2730574f2d204eee62d6f37aa56567bd2d94a26 (diff)
downloadexternal-libdrm-44a0e0a099eeeb6501359f08449dcaa5e9899398.tar.gz
external-libdrm-44a0e0a099eeeb6501359f08449dcaa5e9899398.tar.xz
external-libdrm-44a0e0a099eeeb6501359f08449dcaa5e9899398.zip
libkms: Rework interface to not duplicate fields from kms and make formats explicit
List of changes: Fixes the cursor size to 64x64, you still need ti supply width and height Explicitly make the cursor format A8R8G8B8 Explicitly make the scanout format X8R8G8B8
Diffstat (limited to 'libkms/intel.c')
-rw-r--r--libkms/intel.c31
1 files changed, 5 insertions, 26 deletions
diff --git a/libkms/intel.c b/libkms/intel.c
index 670494e7..a1914f82 100644
--- a/libkms/intel.c
+++ b/libkms/intel.c
@@ -53,29 +53,8 @@ static int
53intel_get_prop(struct kms_driver *kms, unsigned key, unsigned *out) 53intel_get_prop(struct kms_driver *kms, unsigned key, unsigned *out)
54{ 54{
55 switch (key) { 55 switch (key) {
56 case KMS_MAX_SCANOUT_WIDTH: 56 case KMS_BO_TYPE:
57 *out = 4096; 57 *out = KMS_BO_TYPE_SCANOUT_X8R8G8B8 | KMS_BO_TYPE_CURSOR_64X64_A8R8G8B8;
58 break;
59 case KMS_MAX_SCANOUT_HEIGHT:
60 *out = 4096;
61 break;
62 case KMS_MIN_SCANOUT_WIDTH:
63 *out = 1;
64 break;
65 case KMS_MIN_SCANOUT_HEIGHT:
66 *out = 1;
67 break;
68 case KMS_MAX_CURSOR_WIDTH:
69 *out = 64;
70 break;
71 case KMS_MAX_CURSOR_HEIGHT:
72 *out = 64;
73 break;
74 case KMS_MIN_CURSOR_WIDTH:
75 *out = 64;
76 break;
77 case KMS_MIN_CURSOR_HEIGHT:
78 *out = 64;
79 break; 58 break;
80 default: 59 default:
81 return -EINVAL; 60 return -EINVAL;
@@ -116,10 +95,10 @@ intel_bo_create(struct kms_driver *kms,
116 if (!bo) 95 if (!bo)
117 return -ENOMEM; 96 return -ENOMEM;
118 97
119 if (type == KMS_BO_TYPE_CURSOR) { 98 if (type == KMS_BO_TYPE_CURSOR_64X64_A8R8G8B8) {
120 pitch = 64 * 4; 99 pitch = 64 * 4;
121 size = 64 * 64 * 4; 100 size = 64 * 64 * 4;
122 } else if (type == KMS_BO_TYPE_SCANOUT) { 101 } else if (type == KMS_BO_TYPE_SCANOUT_X8R8G8B8) {
123 pitch = width * 4; 102 pitch = width * 4;
124 pitch = (pitch + 512 - 1) & ~(512 - 1); 103 pitch = (pitch + 512 - 1) & ~(512 - 1);
125 size = pitch * ((height + 4 - 1) & ~(4 - 1)); 104 size = pitch * ((height + 4 - 1) & ~(4 - 1));
@@ -140,7 +119,7 @@ intel_bo_create(struct kms_driver *kms,
140 bo->base.pitch = pitch; 119 bo->base.pitch = pitch;
141 120
142 *out = &bo->base; 121 *out = &bo->base;
143 if (type == KMS_BO_TYPE_SCANOUT && pitch > 512) { 122 if (type == KMS_BO_TYPE_SCANOUT_X8R8G8B8 && pitch > 512) {
144 struct drm_i915_gem_set_tiling tile; 123 struct drm_i915_gem_set_tiling tile;
145 124
146 memset(&tile, 0, sizeof(tile)); 125 memset(&tile, 0, sizeof(tile));