Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
6d86951a
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
6d86951a
编写于
12月 08, 2010
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nvc0: initial support for tiled buffer objects
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
ddbaf79a
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
62 addition
and
25 deletion
+62
-25
drivers/gpu/drm/nouveau/nouveau_bo.c
drivers/gpu/drm/nouveau/nouveau_bo.c
+0
-3
drivers/gpu/drm/nouveau/nouveau_dma.h
drivers/gpu/drm/nouveau/nouveau_dma.h
+2
-1
drivers/gpu/drm/nouveau/nv50_crtc.c
drivers/gpu/drm/nouveau/nv50_crtc.c
+11
-7
drivers/gpu/drm/nouveau/nv50_evo.c
drivers/gpu/drm/nouveau/nv50_evo.c
+40
-13
drivers/gpu/drm/nouveau/nvc0_vram.c
drivers/gpu/drm/nouveau/nvc0_vram.c
+9
-1
未找到文件。
drivers/gpu/drm/nouveau/nouveau_bo.c
浏览文件 @
6d86951a
...
...
@@ -120,9 +120,6 @@ nouveau_bo_new(struct drm_device *dev, struct nouveau_channel *chan,
align
>>=
PAGE_SHIFT
;
if
(
!
nvbo
->
no_vm
&&
dev_priv
->
chan_vm
)
{
if
(
dev_priv
->
card_type
==
NV_C0
)
page_shift
=
12
;
ret
=
nouveau_vm_get
(
dev_priv
->
chan_vm
,
size
,
page_shift
,
NV_MEM_ACCESS_RW
,
&
nvbo
->
vma
);
if
(
ret
)
{
...
...
drivers/gpu/drm/nouveau/nouveau_dma.h
浏览文件 @
6d86951a
...
...
@@ -77,7 +77,8 @@ enum {
/* G80+ display objects */
NvEvoVRAM
=
0x01000000
,
NvEvoFB16
=
0x01000001
,
NvEvoFB32
=
0x01000002
NvEvoFB32
=
0x01000002
,
NvEvoVRAM_LP
=
0x01000003
};
#define NV_MEMORY_TO_MEMORY_FORMAT 0x00000039
...
...
drivers/gpu/drm/nouveau/nv50_crtc.c
浏览文件 @
6d86951a
...
...
@@ -115,15 +115,16 @@ nv50_crtc_blank(struct nouveau_crtc *nv_crtc, bool blanked)
OUT_RING
(
evo
,
0
);
BEGIN_RING
(
evo
,
0
,
NV50_EVO_CRTC
(
index
,
FB_DMA
),
1
);
if
(
dev_priv
->
chipset
!=
0x50
)
if
(
nv_crtc
->
fb
.
tile_flags
==
0x7a00
)
if
(
nv_crtc
->
fb
.
tile_flags
==
0x7a00
||
nv_crtc
->
fb
.
tile_flags
==
0xfe00
)
OUT_RING
(
evo
,
NvEvoFB32
);
else
if
(
nv_crtc
->
fb
.
tile_flags
==
0x7000
)
OUT_RING
(
evo
,
NvEvoFB16
);
else
OUT_RING
(
evo
,
NvEvoVRAM
);
OUT_RING
(
evo
,
NvEvoVRAM
_LP
);
else
OUT_RING
(
evo
,
NvEvoVRAM
);
OUT_RING
(
evo
,
NvEvoVRAM
_LP
);
}
nv_crtc
->
fb
.
blanked
=
blanked
;
...
...
@@ -555,13 +556,14 @@ nv50_crtc_do_mode_set_base(struct drm_crtc *crtc,
return
ret
;
BEGIN_RING
(
evo
,
0
,
NV50_EVO_CRTC
(
nv_crtc
->
index
,
FB_DMA
),
1
);
if
(
nv_crtc
->
fb
.
tile_flags
==
0x7a00
)
if
(
nv_crtc
->
fb
.
tile_flags
==
0x7a00
||
nv_crtc
->
fb
.
tile_flags
==
0xfe00
)
OUT_RING
(
evo
,
NvEvoFB32
);
else
if
(
nv_crtc
->
fb
.
tile_flags
==
0x7000
)
OUT_RING
(
evo
,
NvEvoFB16
);
else
OUT_RING
(
evo
,
NvEvoVRAM
);
OUT_RING
(
evo
,
NvEvoVRAM
_LP
);
}
ret
=
RING_SPACE
(
evo
,
12
);
...
...
@@ -575,8 +577,10 @@ nv50_crtc_do_mode_set_base(struct drm_crtc *crtc,
if
(
!
nv_crtc
->
fb
.
tile_flags
)
{
OUT_RING
(
evo
,
drm_fb
->
pitch
|
(
1
<<
20
));
}
else
{
OUT_RING
(
evo
,
((
drm_fb
->
pitch
/
4
)
<<
4
)
|
fb
->
nvbo
->
tile_mode
);
u32
tile_mode
=
fb
->
nvbo
->
tile_mode
;
if
(
dev_priv
->
card_type
>=
NV_C0
)
tile_mode
>>=
4
;
OUT_RING
(
evo
,
((
drm_fb
->
pitch
/
4
)
<<
4
)
|
tile_mode
);
}
if
(
dev_priv
->
chipset
==
0x50
)
OUT_RING
(
evo
,
(
nv_crtc
->
fb
.
tile_flags
<<
8
)
|
format
);
...
...
drivers/gpu/drm/nouveau/nv50_evo.c
浏览文件 @
6d86951a
...
...
@@ -53,7 +53,8 @@ nv50_evo_channel_del(struct nouveau_channel **pevo)
int
nv50_evo_dmaobj_new
(
struct
nouveau_channel
*
evo
,
u32
class
,
u32
name
,
u32
tile_flags
,
u32
magic_flags
,
u32
offset
,
u32
limit
)
u32
tile_flags
,
u32
magic_flags
,
u32
offset
,
u32
limit
,
u32
flags5
)
{
struct
drm_nouveau_private
*
dev_priv
=
evo
->
dev
->
dev_private
;
struct
drm_device
*
dev
=
evo
->
dev
;
...
...
@@ -70,10 +71,7 @@ nv50_evo_dmaobj_new(struct nouveau_channel *evo, u32 class, u32 name,
nv_wo32
(
obj
,
8
,
offset
);
nv_wo32
(
obj
,
12
,
0x00000000
);
nv_wo32
(
obj
,
16
,
0x00000000
);
if
(
dev_priv
->
card_type
<
NV_C0
)
nv_wo32
(
obj
,
20
,
0x00010000
);
else
nv_wo32
(
obj
,
20
,
0x00020000
);
nv_wo32
(
obj
,
20
,
flags5
);
dev_priv
->
engine
.
instmem
.
flush
(
dev
);
ret
=
nouveau_ramht_insert
(
evo
,
name
,
obj
);
...
...
@@ -264,9 +262,31 @@ nv50_evo_create(struct drm_device *dev)
}
/* create some default objects for the scanout memtypes we support */
if
(
dev_priv
->
card_type
>=
NV_C0
)
{
ret
=
nv50_evo_dmaobj_new
(
evo
,
0x3d
,
NvEvoFB32
,
0xfe
,
0x19
,
0
,
0xffffffff
,
0x00000000
);
if
(
ret
)
{
nv50_evo_channel_del
(
&
dev_priv
->
evo
);
return
ret
;
}
ret
=
nv50_evo_dmaobj_new
(
evo
,
0x3d
,
NvEvoVRAM
,
0
,
0x19
,
0
,
dev_priv
->
vram_size
,
0x00020000
);
if
(
ret
)
{
nv50_evo_channel_del
(
&
dev_priv
->
evo
);
return
ret
;
}
ret
=
nv50_evo_dmaobj_new
(
evo
,
0x3d
,
NvEvoVRAM_LP
,
0
,
0x19
,
0
,
dev_priv
->
vram_size
,
0x00000000
);
if
(
ret
)
{
nv50_evo_channel_del
(
&
dev_priv
->
evo
);
return
ret
;
}
}
else
if
(
dev_priv
->
chipset
!=
0x50
)
{
ret
=
nv50_evo_dmaobj_new
(
evo
,
0x3d
,
NvEvoFB16
,
0x70
,
0x19
,
0
,
0xffffffff
);
0
,
0xffffffff
,
0x00010000
);
if
(
ret
)
{
nv50_evo_channel_del
(
&
dev_priv
->
evo
);
return
ret
;
...
...
@@ -274,18 +294,25 @@ nv50_evo_create(struct drm_device *dev)
ret
=
nv50_evo_dmaobj_new
(
evo
,
0x3d
,
NvEvoFB32
,
0x7a
,
0x19
,
0
,
0xffffffff
);
0
,
0xffffffff
,
0x00010000
);
if
(
ret
)
{
nv50_evo_channel_del
(
&
dev_priv
->
evo
);
return
ret
;
}
}
ret
=
nv50_evo_dmaobj_new
(
evo
,
0x3d
,
NvEvoVRAM
,
0
,
0x19
,
0
,
dev_priv
->
vram_size
);
if
(
ret
)
{
nv50_evo_channel_del
(
&
dev_priv
->
evo
);
return
ret
;
ret
=
nv50_evo_dmaobj_new
(
evo
,
0x3d
,
NvEvoVRAM
,
0
,
0x19
,
0
,
dev_priv
->
vram_size
,
0x00010000
);
if
(
ret
)
{
nv50_evo_channel_del
(
&
dev_priv
->
evo
);
return
ret
;
}
ret
=
nv50_evo_dmaobj_new
(
evo
,
0x3d
,
NvEvoVRAM_LP
,
0
,
0x19
,
0
,
dev_priv
->
vram_size
,
0x00010000
);
if
(
ret
)
{
nv50_evo_channel_del
(
&
dev_priv
->
evo
);
return
ret
;
}
}
return
0
;
...
...
drivers/gpu/drm/nouveau/nvc0_vram.c
浏览文件 @
6d86951a
...
...
@@ -29,8 +29,16 @@
bool
nvc0_vram_flags_valid
(
struct
drm_device
*
dev
,
u32
tile_flags
)
{
if
(
likely
(
!
(
tile_flags
&
NOUVEAU_GEM_TILE_LAYOUT_MASK
)))
switch
(
tile_flags
&
NOUVEAU_GEM_TILE_LAYOUT_MASK
)
{
case
0x0000
:
case
0xfe00
:
case
0xdb00
:
case
0x1100
:
return
true
;
default:
break
;
}
return
false
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录