Adding ability to dirty the allocation and notify shaders using it.

Change-Id: Id5ac8dbba5185cb1f43bedcf4098fcef9f477c51
This commit is contained in:
Alex Sakhartchouk
2010-09-01 16:34:48 -07:00
parent 6d8fe9b40b
commit 8e95466b5a
4 changed files with 14 additions and 1 deletions

View File

@@ -369,6 +369,7 @@ void setupCustomShaderLights() {
gVSConstants->light1_Diffuse = 1.0f;
gVSConstants->light1_Specular = 0.7f;
gVSConstants->light1_CosinePower = 50.0f;
rsAllocationMarkDirty(rsGetAllocation(gVSConstants));
// Update fragmetn shader constants
// Set light 0 colors
@@ -377,6 +378,7 @@ void setupCustomShaderLights() {
// Set light 1 colors
gFSConstants->light1_DiffuseColor = light1DiffCol;
gFSConstants->light1_SpecularColor = light1SpecCol;
rsAllocationMarkDirty(rsGetAllocation(gFSConstants));
}
void displayCustomShaderSamples() {

View File

@@ -89,9 +89,9 @@ public:
void incRefs(const void *ptr, size_t ct) const;
void decRefs(const void *ptr, size_t ct) const;
protected:
void sendDirty() const;
protected:
ObjectBaseRef<const Type> mType;
void * mPtr;

View File

@@ -356,6 +356,11 @@ int SC_getAllocation(const void *ptr)
return (int)alloc;
}
void SC_allocationMarkDirty(RsAllocation a)
{
Allocation *alloc = static_cast<Allocation *>(a);
alloc->sendDirty();
}
void SC_ForEach(RsScript vs,
RsAllocation vin,
@@ -422,6 +427,8 @@ static ScriptCState::SymbolTable_t gSyms[] = {
{ "_Z13rsClearObjectP13rs_allocation", (void *)&SC_clearObject },
{ "_Z10rsIsObject13rs_allocation", (void *)&SC_isObject },
{ "_Z21rsAllocationMarkDirty13rs_allocation", (void *)&SC_allocationMarkDirty },
// Debug
{ "_Z7rsDebugPKcf", (void *)&SC_debugF },

View File

@@ -107,6 +107,10 @@ extern bool __attribute__((overloadable))
extern rs_allocation __attribute__((overloadable))
rsGetAllocation(const void *);
// Mark the allocation dirty and notify those using it
extern void __attribute__((overloadable))
rsAllocationMarkDirty(rs_allocation);
// Return the dimensions associated with an allocation.
extern uint32_t __attribute__((overloadable))
rsAllocationGetDimX(rs_allocation);