Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
ef8d4781
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
ef8d4781
编写于
10月 03, 2013
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nv50-/sw: make vblank tracking data private to the implementations
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
3bfcec35
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
25 addition
and
27 deletion
+25
-27
drivers/gpu/drm/nouveau/core/engine/software/nv50.c
drivers/gpu/drm/nouveau/core/engine/software/nv50.c
+8
-8
drivers/gpu/drm/nouveau/core/engine/software/nv50.h
drivers/gpu/drm/nouveau/core/engine/software/nv50.h
+7
-0
drivers/gpu/drm/nouveau/core/engine/software/nvc0.c
drivers/gpu/drm/nouveau/core/engine/software/nvc0.c
+10
-10
drivers/gpu/drm/nouveau/core/include/engine/software.h
drivers/gpu/drm/nouveau/core/include/engine/software.h
+0
-9
未找到文件。
drivers/gpu/drm/nouveau/core/engine/software/nv50.c
浏览文件 @
ef8d4781
...
...
@@ -55,7 +55,7 @@ nv50_software_mthd_dma_vblsem(struct nouveau_object *object, u32 mthd,
if
(
nv_iclass
(
handle
->
object
,
NV_GPUOBJ_CLASS
))
{
struct
nouveau_gpuobj
*
gpuobj
=
nv_gpuobj
(
handle
->
object
);
chan
->
base
.
vblank
.
ctxdma
=
gpuobj
->
node
->
offset
>>
4
;
chan
->
vblank
.
ctxdma
=
gpuobj
->
node
->
offset
>>
4
;
ret
=
0
;
}
nouveau_namedb_put
(
handle
);
...
...
@@ -67,7 +67,7 @@ nv50_software_mthd_vblsem_offset(struct nouveau_object *object, u32 mthd,
void
*
args
,
u32
size
)
{
struct
nv50_software_chan
*
chan
=
(
void
*
)
nv_engctx
(
object
->
parent
);
chan
->
base
.
vblank
.
offset
=
*
(
u32
*
)
args
;
chan
->
vblank
.
offset
=
*
(
u32
*
)
args
;
return
0
;
}
...
...
@@ -76,7 +76,7 @@ nv50_software_mthd_vblsem_value(struct nouveau_object *object, u32 mthd,
void
*
args
,
u32
size
)
{
struct
nv50_software_chan
*
chan
=
(
void
*
)
nv_engctx
(
object
->
parent
);
chan
->
base
.
vblank
.
value
=
*
(
u32
*
)
args
;
chan
->
vblank
.
value
=
*
(
u32
*
)
args
;
return
0
;
}
...
...
@@ -90,7 +90,7 @@ nv50_software_mthd_vblsem_release(struct nouveau_object *object, u32 mthd,
if
(
crtc
>
1
)
return
-
EINVAL
;
nouveau_event_get
(
disp
->
vblank
,
crtc
,
&
chan
->
base
.
vblank
.
event
);
nouveau_event_get
(
disp
->
vblank
,
crtc
,
&
chan
->
vblank
.
event
);
return
0
;
}
...
...
@@ -127,8 +127,8 @@ nv50_software_sclass[] = {
static
int
nv50_software_vblsem_release
(
struct
nouveau_eventh
*
event
,
int
head
)
{
struct
n
ouveau
_software_chan
*
chan
=
container_of
(
event
,
struct
nouveau_software_chan
,
vblank
.
event
);
struct
n
v50
_software_chan
*
chan
=
container_of
(
event
,
typeof
(
*
chan
)
,
vblank
.
event
);
struct
nv50_software_priv
*
priv
=
(
void
*
)
nv_object
(
chan
)
->
engine
;
struct
nouveau_bar
*
bar
=
nouveau_bar
(
priv
);
...
...
@@ -161,8 +161,8 @@ nv50_software_context_ctor(struct nouveau_object *parent,
if
(
ret
)
return
ret
;
chan
->
base
.
vblank
.
channel
=
nv_gpuobj
(
parent
->
parent
)
->
addr
>>
12
;
chan
->
base
.
vblank
.
event
.
func
=
nv50_software_vblsem_release
;
chan
->
vblank
.
channel
=
nv_gpuobj
(
parent
->
parent
)
->
addr
>>
12
;
chan
->
vblank
.
event
.
func
=
nv50_software_vblsem_release
;
return
0
;
}
...
...
drivers/gpu/drm/nouveau/core/engine/software/nv50.h
浏览文件 @
ef8d4781
...
...
@@ -9,6 +9,13 @@ struct nv50_software_priv {
struct
nv50_software_chan
{
struct
nouveau_software_chan
base
;
struct
{
struct
nouveau_eventh
event
;
u32
channel
;
u32
ctxdma
;
u64
offset
;
u32
value
;
}
vblank
;
};
#endif
drivers/gpu/drm/nouveau/core/engine/software/nvc0.c
浏览文件 @
ef8d4781
...
...
@@ -45,11 +45,11 @@ nvc0_software_mthd_vblsem_offset(struct nouveau_object *object, u32 mthd,
struct
nv50_software_chan
*
chan
=
(
void
*
)
nv_engctx
(
object
->
parent
);
u64
data
=
*
(
u32
*
)
args
;
if
(
mthd
==
0x0400
)
{
chan
->
base
.
vblank
.
offset
&=
0x00ffffffffULL
;
chan
->
base
.
vblank
.
offset
|=
data
<<
32
;
chan
->
vblank
.
offset
&=
0x00ffffffffULL
;
chan
->
vblank
.
offset
|=
data
<<
32
;
}
else
{
chan
->
base
.
vblank
.
offset
&=
0xff00000000ULL
;
chan
->
base
.
vblank
.
offset
|=
data
;
chan
->
vblank
.
offset
&=
0xff00000000ULL
;
chan
->
vblank
.
offset
|=
data
;
}
return
0
;
}
...
...
@@ -59,7 +59,7 @@ nvc0_software_mthd_vblsem_value(struct nouveau_object *object, u32 mthd,
void
*
args
,
u32
size
)
{
struct
nv50_software_chan
*
chan
=
(
void
*
)
nv_engctx
(
object
->
parent
);
chan
->
base
.
vblank
.
value
=
*
(
u32
*
)
args
;
chan
->
vblank
.
value
=
*
(
u32
*
)
args
;
return
0
;
}
...
...
@@ -74,7 +74,7 @@ nvc0_software_mthd_vblsem_release(struct nouveau_object *object, u32 mthd,
if
((
nv_device
(
object
)
->
card_type
<
NV_E0
&&
crtc
>
1
)
||
crtc
>
3
)
return
-
EINVAL
;
nouveau_event_get
(
disp
->
vblank
,
crtc
,
&
chan
->
base
.
vblank
.
event
);
nouveau_event_get
(
disp
->
vblank
,
crtc
,
&
chan
->
vblank
.
event
);
return
0
;
}
...
...
@@ -140,8 +140,8 @@ nvc0_software_sclass[] = {
static
int
nvc0_software_vblsem_release
(
struct
nouveau_eventh
*
event
,
int
head
)
{
struct
n
ouveau
_software_chan
*
chan
=
container_of
(
event
,
struct
nouveau_software_chan
,
vblank
.
event
);
struct
n
v50
_software_chan
*
chan
=
container_of
(
event
,
typeof
(
*
chan
)
,
vblank
.
event
);
struct
nv50_software_priv
*
priv
=
(
void
*
)
nv_object
(
chan
)
->
engine
;
struct
nouveau_bar
*
bar
=
nouveau_bar
(
priv
);
...
...
@@ -168,8 +168,8 @@ nvc0_software_context_ctor(struct nouveau_object *parent,
if
(
ret
)
return
ret
;
chan
->
base
.
vblank
.
channel
=
nv_gpuobj
(
parent
->
parent
)
->
addr
>>
12
;
chan
->
base
.
vblank
.
event
.
func
=
nvc0_software_vblsem_release
;
chan
->
vblank
.
channel
=
nv_gpuobj
(
parent
->
parent
)
->
addr
>>
12
;
chan
->
vblank
.
event
.
func
=
nvc0_software_vblsem_release
;
return
0
;
}
...
...
drivers/gpu/drm/nouveau/core/include/engine/software.h
浏览文件 @
ef8d4781
...
...
@@ -3,19 +3,10 @@
#include <core/engine.h>
#include <core/engctx.h>
#include <core/event.h>
struct
nouveau_software_chan
{
struct
nouveau_engctx
base
;
struct
{
struct
nouveau_eventh
event
;
u32
channel
;
u32
ctxdma
;
u64
offset
;
u32
value
;
}
vblank
;
int
(
*
flip
)(
void
*
);
void
*
flip_data
;
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录